我正在通过调用文件创建调用。星号cli显示与hangup
和remote end ringing
等通话不同的状态。 我只想获得该号码是否响铃的状态。我有什么方法可以做到这一点吗?我正在调用来自调用文件的调用,它应该被遗漏,因此我没有可以写的拨号方案代码,因为我写的拨号方案只会在用户选择不是的呼叫时执行就我而言。
答案 0 :(得分:0)
您可以使用星号AMI接口事件来查看结果
您也可以通过本地/频道拨打电话,这样就可以通过拨号方式拨打并查看DIALSTATUS变量
但我强烈建议你不要在没有经验的情况下拨打核心。使用已创建的像vicidial.org。
答案 1 :(得分:0)
像这样创建调用文件:
PHP脚本
<?php
$callfile = "";
$callfile .= "Channel: Local/123@outbound_test\n";
$callfile .= "Context: out\n";
$callfile .= "Extension: 100\n";
$callfile .= "Set: dialout_number=9876543210\n";
$callfilename = "callfile_".uniqid();
file_put_contents(__DIR__."/".$callfilename, $callfile);
chmod(__DIR__."/".$callfilename, 0777);
exec("mv ".__DIR__."/$callfilename /var/spool/asterisk/outgoing");
?>
在 /etc/asterisk/extensions_custom.conf ::
[outbound_test]
exten => 123,1,Noop(Dialout number ${dialout_number})
exten => 123,2,Dial(SIP/outbound-trunk/${dialout_number})
exten => 123,3,Noop(Dial status for ${dialout_number} is ${DIALSTATUS})
[out]
exten => 100,1,Noop(Answered)
exten => 100,n,Hangup
在出站测试 第3行中,除了答案外,您将获得拨号状态。如果已回答, out 上下文将开始执行。可能的拨号状态是:
1)忙碌:被叫号码正忙。拨号到达被叫方
2) NOANSWER :号码响了太长时间,拨号超时
3)拥挤:拥塞。此状态通常表示无法识别已拨打的号码
4) CHANUNAVAIL :频道不可用。在SIP上,可能没有注册对等体。
5) DONTCALL :隐私模式,被叫方拒绝了来电
6) TORTURE :隐私模式,被叫方选择将来电者发送到折磨菜单
答案 2 :(得分:0)
我建议你使用$ {REASON}。 我在我的拨号方案中使用$ {REASON}来了解.call文件是否失败或已回答,如果呼叫被应答,则如果失败则转到主流,并且#34;扩展失败&#34;
exten => failed,1,Noop(##No Answer##=> ${REASON})
exten => failed,n,Set(__CALLFAILED=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
$ {REASON}变量由Asterisk进入特殊的Failed扩展名时设置。它似乎给出了找出调用文件调用失败原因的唯一方法。它至少需要这些值:
0 - 失败(不忙或拥挤) 1 - 挂断电话 3 - 响铃超时 5 - 忙 8 - 拥塞