通过星号调用文件

时间:2015-11-20 12:36:04

标签: asterisk voip phone-call ivr pbx

我正在通过调用文件创建调用。星号cli显示与hangupremote end ringing等通话不同的状态。 我只想获得该号码是否响铃的状态。我有什么方法可以做到这一点吗?我正在调用来自调用文件的调用,它应该被遗漏,因此我没有可以写的拨号方案代码,因为我写的拨号方案只会在用户选择不是的呼叫时执行就我而言。

3 个答案:

答案 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 - 拥塞