我正在通过调用文件创建调用。星号cli为类似hangup
和remote end ringing
的调用显示不同的staus我只想知道那个号码是否响了。有什么办法我能做到吗我正在从呼叫文件生成呼叫,应该会错过它,所以我无法编写拨号计划代码,因为我编写的拨号计划只有在用户选择呼叫时才会执行,而我的情况并非如此。
您可以使用星号AMI接口事件来查看结果
您也可以通过本地/通道进行呼叫,这样它将通过拨号计划进行并检查DIALSTATUS变量
但我强烈建议你不要在没有足够经验的情况下拨打核心电话。使用已经创建的一个,如vicidial.org。
创建如下调用文件:
PHP脚本
<?php
$callfile = "";
$callfile .= "Channel: Local/123@outbound_testn";
$callfile .= "Context: outn";
$callfile .= "Extension: 100n";
$callfile .= "Set: dialout_number=9876543210n";
$callfilename = "callfile_".uniqid();
file_put_contents(__DIR__."/".$callfilename, $callfile);
chmod(__DIR__."/".$callfilename, 0777);
exec("mv ".__DIR__."/$callfilename /var/spool/asterisk/outgoing");
?>
在/etc/星号/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) 无应答:号码响起时间过长,拨出时间已到达
3) 拥塞:拥塞。这种状态通常表示所拨号码未被识别为
4) CHAUNAVAIL:通道不可用。在SIP上,对等方可能未注册。
5) DONTCALL:隐私模式,被叫拒绝呼叫
6) TORTURE:隐私模式,被调用者选择将调用者发送到酷刑菜单
我建议您使用${REASON}。我在我的拨号计划中使用${REASON}来了解.call文件是否失败或已应答,如果呼叫已应答,则转到主流,如果失败,则转到"失败扩展"
exten => failed,1,Noop(##No Answer##=> ${REASON})
exten => failed,n,Set(__CALLFAILED=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
当${REASON}变量进入特殊的Failed扩展时,它由Asterisk设置。它似乎提供了找出调用文件调用失败原因的唯一方法。它至少需要以下值:
0-失败(不繁忙或拥塞)1-挂断3-振铃超时5-忙8-阻塞