2015-01-14 38 views
0

我使用的執行我的phpagi腳本這在擴展文件: -遞歸以星號服務器的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

回答

0

您不能啓動AGI內AGI。

原因:AGI是簡單的標準輸入/輸出接口(讀取DOC)

所以首先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"); 
?>