我对Asterisk不太熟悉。 在我的程序逻辑中,我使用jar文件根据自由行生成.call文件(可用行 - 忙线)。如果有一些可用的行,我在temp目录中生成.call文件,然后传递到星号传出目录
执行.call文件和获取忙线命令后,问题是延迟很长时间。
asterisk -rx 'sip show channelstats' | grep active | cut -f 1 -d ' '
我每隔2秒从我的jar执行一次这个命令,但是在最后一次调用结束后30秒我得到了结果。在通话结束后30秒,线路仍然很忙。
Asterisk .conf文件中是否有任何变量,表示调用完成后的延迟。我无法在Asterisk文档中找到决定
我的拨号方案是:
exten => 123,1,AGI(monitor.php,outgoing,Outgoing_UNLIMITED,${CALLERID(num)},${EXTEN},Set(CALLERID(num)=xxxxxxxx))
exten => 123,1,Dial(SIP/xxxxxxxx/${EXTEN:0},30,T)
exten => 123,2,Set(CDR(userfield)=${NumberDialed})
exten => 123,3,Set(i=1);
exten => 123,n,While($[${i} <= ${file_max}])
exten => 123,n,Playback(${file${i}})
exten => 123,n,Set(i=$[ ${i} + 1 ])
exten => 123,n,EndWhile
答案 0 :(得分:0)
您使用的命令不正确。
使用“核心节目频道”。但请注意,每隔几秒钟执行任何命令都会导致星号有时会挂起。您已找到其他方式查找当前在线呼叫(CDR,ami事件或其他)
答案 1 :(得分:0)
我建议您做的是一个简单的脚本文件,用于更新包含正在使用的行数的临时文件。在您的JAR文件假脱机文件时将其添加到计数器,并让您的拨号方案“H”上下文在调用后减少文件中的行数。
在您的通话文件中,启用“存档”选项并使用cron作业监控已完成文件的“outgoing_done”。任何状态为“已完成”的文件都会减少行数。
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out#Syntaxofcallfiles了解详情
如果您认为这听起来很麻烦,您可以监控AMI或HTTP接口,寻找挂机事件。但是,这是一项非常重要的任务。