Привет! Есть скрипт на php, который по какой то входной переменной(например ${enter}) возвращает в астериск другую переменную(например ${result}). Для передачи переменной в пхп-скрипт в диалплане пишу Read(enter), AGI(1.php,${enter}). Как сделать чтобы скрипт понял эту переменную и вернул в астериск ${result}?
#!/usr/bin/php -q
<?php
ob_implicit_flush(false);
set_time_limit(5);
error_reporting(0);
$agivars = array();
while (!feof(STDIN)) {
$agivar = trim(fgets(STDIN));
if ($agivar === '') {
break;
}
else {
$agivar = explode(':', $agivar);
$agivars[$agivar[0]] = trim($agivar[1]);
}
}
foreach($agivars as $k=>$v) {
log_agi("Got $k=$v");
}
extract($agivars);
$id=$agivars[1];
$ip = "localhost";
$user = "root";
$pass = "";
$db = "DB";
mysql_connect($ip, $user, $pass)
or die("Could not connect:".mysql_error());
mysql_select_db($db)
or die("Could not select".mysql_error());
$r = mysql_query("SELECT number FROM tbl WHERE id='$id';")
or die("Invalid query: ".mysql_error());
$a=mysql_fetch_assoc($result);
$res=$a['number'];
fputs($stdout,"SET VARIABLE result $res");
fflush($stdout);
?>
а если не секрет, почему вы класс phpagi.php не используете? или вы джедай?
Диалплан
exten => 200,1,Answer
exten => 200,n,Read(id)
exten => 200,n,AGI(1.php,${id})
exten => 200,n,Verbose(${result})
Ну для PHP это первый аргумент. Из PHP с аргументами командной строки умеем работать?
AGI Execution Environment
You can pass arguments to an AGI script, like so:
AGI(script.agi|arg1|arg2|...)
and then in PHP, for example, retrieve these arguments with the help of
$argv[1]
$argv[2]
А вернуть можно двумя способами:
формат форума возвращается;)
Вам надо из скипта установить переменную dialplan'a, и после выхода из скрипта работать с ней далее.
fputs($stdout,"SET VARIABLE myvar 123");
http://www.voip-info.org/wiki/view/set+variable
Пример:
exten => _X.,n,Verbose(${myvar})
вот тут
http://lynks.ru/blog/iaxmodem-hylafax-i-ldap
есть пример AGI с блекджеком и шлюхами (с возвратом переменной)
Может пора заканчивать с низкоуровневыми операциями и начать использовать PHPAGI?
Задан: 2011-01-13 19:10:12 +0400
Просмотрен: 12,515 раз
Обновлен: Jan 22 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.