在创建带星号的呼叫文件时,请检查号码是否已响铃



我正在通过调用文件创建调用。星号cli为类似hangupremote 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-阻塞

相关内容

  • 没有找到相关文章