星号服务器的phpagi脚本中的递归

时间:2015-01-14 11:05:04

标签: php asterisk

我在执行my 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

1 个答案:

答案 0 :(得分:0)

您无法在AGI内启动AGI。

原因:AGI是简单的stdin / stdout接口(读取文档)

首先AGI连接到星号,从STDIN读取信息,发送到STDOUT。

您希望如何在其中启动脚本?

您可以使用php exec系统调用,但是您需要关心AGI的初始化(它已经由您的脚本使用)以及将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");
?>