Chinaunix
标题:
php agi 软电话拨外线,主动挂机时无法获取通话时间?
[打印本页]
作者:
luckysammo
时间:
2009-10-15 00:44
标题:
php agi 软电话拨外线,主动挂机时无法获取通话时间?
大家好!我使用以下代码,可以拨打外线,但会出现一个问题,如题。
使用软电话进行拨打外线,对方挂机时可以获取时间,当软电话主动挂机时,PHP程序主动退出了,没有执行后面的语句。
不知道大家有碰到这种情况没?谢谢各位的帮忙!
#!/usr/bin/php -q
<?
// 包含了phpagi的类文件
include_once(ROOT_PATH.'public.php');
$agi->answer();
$result = $agi->exec('chanIsAvail Zap/1&Zap/2&Zap/3&Zap/4'); // 使用 chanIsAvail 指令检查可用通道,后面的参数是通道列表
$result = $agi->get_variable('AVAILCHAN'); // 获取可用的通道的名字,例如:Zap/1-1
$agi->verbose('result:'.$result[data]);
$channel = $result[data];
$result = $agi->get_variable('AVAILORIGCHAN'); // 获取可用的通道的标准名字,例如:Zap/1
$agi->verbose('result:'.$result[data]);
$result = $agi->get_variable('AVAILSTATUS'); // 获取可用的通道的状态标识
$agi->verbose('result:'.$result[data]);
if (empty($channel)){ // 如果没有可用的通道,例如:FXO卡上都没有接电话外线
$agi->exec('Playtones congestion'); // 播放拥塞提示音
$agi->exec('Congestion 10'); // 提示拥塞,等待 10 秒后挂机
$agi->hangup(); // 主动挂机
exit;
}
$dnid = $agi->request['agi_extension']; // 获取要外拨的号码
$agi->exec_dial($channel, $dnid, 30); // 拨号开始,超时时间 30 秒
$dialstatus = $agi->get_variable("DIALSTATUS"); // 获取拨号的状态
$agi->verbose('dialstatus:'.$dialstatus[data]);
$answeredtime = $agi->get_variable("ANSWEREDTIME"); // 获取通话时间长度
$agi->verbose('answeredtime:'.$answeredtime[data]);
$agi->hangup(); // 主动挂机
?>
复制代码
作者:
luckysammo
时间:
2009-10-16 09:58
终于找到答案了,将AGI改成DeadAGI就行了,谢谢大家的关注!
解释:DeadAGI ( )的用法也很像 AGI( ),但是它允许你的 AGI 脚本在死信道(比如,一个挂起的信道)中正常的运转。也就是说通用的 AGI( )不能在死信道中正常运转。
作者:
surpass_li
时间:
2010-05-28 09:16
了解了,帮顶
作者:
linuxlixk
时间:
2010-06-03 16:03
asterisk?
楼主强人
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2