Привет! Есть скрипт на 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,724 раз
Обновлен: Jan 22 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.