如何解决在从被叫方接收到的“振铃”状态中调用子程序的 Asterisk Dial() 选项是什么?
我需要在发生以下事件时执行 AGI 脚本:
- 来电(很简单,只需调用
AGI()
函数)。 - 呼叫“正在响铃”时(我不知道!)。
<-- Problem,how to do this?
- 当电话被“接听”时(我使用
U(answer^${CALLID})
中的Dial()
选项)。 - 当电话挂断时(我使用
h
特殊分机)。
我的拨号方案如下所示:
[from_origin]
exten => _X.,1,NoOp(${CALLER_USERNAME} from ${CHANNEL(pjsip,remote_addr)})
same => n,AGI(agi://127.0.0.1/incoming)
same => n,Dial(${DIALSTR},45,U(answer^${CALLID}))
exten => h,AGI(agi://127.0.0.1/hangup,${CDR(uniqueid)})
[answer]
exten => s,Set(theCallID=${ARG1})
same => n,AGI(agi://127.0.0.1/answered)
same => n,Return()
看,我调用了 3
fast-agi
脚本:incoming
、answered
和 hangup
。现在我需要在被叫方“振铃”时调用类似 ringing
的脚本。如何实现这一目标?
解决方法
振铃状态是频道的状态(chan_pjsip.so),它没有发送到频道外代码。
所以不,您无法在 Dial 应用程序中获取它。因为某些频道类型无法获取它,而 Dial 仍然适用于这些类型。
对于某些频道,您可以在 NewState 事件的事件侦听循环中通过 AMI 获取它。但是没有保证它会在您收到响铃 sip 消息的同一时间。
https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+ManagerEvent_Newstate
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。