- 论坛徽章:
- 0
|
大家好!我使用以下代码,可以拨打外线,但会出现一个问题,如题。
使用软电话进行拨打外线,对方挂机时可以获取时间,当软电话主动挂机时,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(); // 主动挂机
- ?>
复制代码 |
|