我有在某些情况下循环的星号快速 AGI 应用程序。不同之处在于,如果频道挂断,本地启动的 AGI 脚本星号会下降。
在网络 AGI 的情况下,如果通道挂起,则 agi 脚本继续工作,通道循环等待完成此脚本。
当频道挂起时,星号将“挂断”消息发送到标准输出,但我使用了 synchronius phpagi lib,错过了它。所以我的问题是:
如何绑定准备读取标准输入事件并调用函数回调(这将检测可能的挂断)?
如果没有挂断检测,如何将数据返回到标准输入?
首先,我尝试找到一些简单的方法来解决这个问题
我的测试代码看起来像这样
while( 5 < 6)
{
$data = $agi->request;
$chan = $data['agi_channel'];
$agi->Verbose(print_r($chan,1));
$res = $agi->exec('Wait','5');
$agi->Verbose('res = '.print_r($res,1));
$res = $agi->exec('Playback',$path);
$agi->Verbose('res = '.print_r($res,1));
$var = 'ret.'.time();
$res = $agi-> exec('Read',$var.','.$path.','.$max);
$agi->Verbose('res = '.print_r($res,1));
unset($res);
}