微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在从被叫方接收到的“振铃”状态中调用子程序的 Asterisk Dial() 选项是什么?

如何解决在从被叫方接收到的“振铃”状态中调用子程序的 Asterisk Dial() 选项是什么?

我需要在发生以下事件时执行 AGI 脚本:

  1. 来电(很简单,只需调用 AGI() 函数)。
  2. 呼叫“正在响铃”时(我不知道!)。 <-- Problem,how to do this?
  3. 当电话被“接听”时(我使用 U(answer^${CALLID}) 中的 Dial() 选项)。
  4. 当电话挂断时(我使用 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 脚本:incomingansweredhangup。现在我需要在被叫方“振铃”时调用类似 ringing 的脚本。如何实现这一目标?

解决方法

振铃状态是频道的状态(chan_pjsip.so),它没有发送到频道外代码。

所以不,您无法在 Dial 应用程序中获取它。因为某些频道类型无法获取它,而 Dial 仍然适用于这些类型。

对于某些频道,您可以在 NewState 事件的事件侦听循环中通过 AMI 获取它。但是没有保证它会在您收到响铃 sip 消息的同一时间。

https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+ManagerEvent_Newstate

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。