我在执行phpagi脚本的扩展文件中使用了这个:-
exten => s,n,Read(NUMBER,,4)
exten => s,n,agi(a.php,${CALLERID(num)},${NUMBER})在我的phpagi脚本中:-
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI();
$NUMBER = $argv[1];
$SSnNUMBER = $argv[2];
------Some Processing----------
$ttresult = $agi->get_data("beep",30000,4);
$ttssn = $ttresult['result'];
$agi->say_digits($ttssn);
$agi->exec("AGI","a.php",$agi->request['agi_callerid'],"$ttssn");
?>您可以看到我在phpagi脚本中使用了递归,但每次都会失败。CLI脚本中存在错误:-
AGI脚本a.php已完成,返回%4
发布于 2015-01-15 18:14:42
你不能在AGI中启动AGI。
原因: AGI是简单的stdin/stdout接口(请参阅文档)
因此,首先AGI连接到asterisk,从STDIN读取信息,发送到STDOUT。
你怎么期待它里面的启动脚本呢?
在您的例子中,您还可以使用GOTO并为新脚本设置变量。
exten => s,n(repeat),agi(a.php,${CALLERID(num)},${NUMBER})
exten => s,n,GotoIF($[ "${REPEAT}" == "YES" ]?repeat)将脚本更改为
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI();
$NUMBER = $argv[1];
$SSnNUMBER = $argv[2];
------Some Processing----------
$ttresult = $agi->get_data("beep",30000,4);
$ttssn = $ttresult['result'];
$agi->say_digits($ttssn);
$agi->set_variable("NUMBER","$ttssn");
$agi->set_variable("REPEAT","YES");
?>https://stackoverflow.com/questions/27941411
复制相似问题