Asterisk Dialplan: 如何检测呼叫已成功应答?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (214)

我很难确定是否有触发器或方法继续拨号操作,以便检测呼叫是否已应答。似乎拨号挂断,忙线或拥挤之前不会响应。我错过了什么动作或事件会告诉我线路的另一端何时实际接听电话?希望有这样的东西,我只是缺少:

exten => s,7,Dial(${ARG1},20,rt)       ; Ring the interface, 20 seconds maximum
exten => s,8,Goto(s-${DIALSTATUS},1)                    
; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-ANSWER(do something)
提问于
用户回答回答于

它涉及在Dial动作调用中调用M标志。通过调用M标志,可以调用一个自定义宏,该宏将在连接/应答呼叫后立即执行。

例如:Dial(SIP/200,60,M(myCustomMacro))

用户回答回答于

也可以在呼叫应答时执行Gosub:

asterisk*cli> core show application Dial
...
    U(x[^arg[^...]]):
        x - Name of the subroutine to execute via Gosub
        arg - Arguments for the Gosub routine
Execute via Gosub the routine <x> for the *called* channel before connecting to
the calling channel. Arguments can be specified to the Gosub using '^' as a
delimiter. The Gosub routine can set the variable ${GOSUB_RESULT} to specify
the following actions after the Gosub returns

所属标签

可能回答问题的人

  • 富有想象力的人

    4 粉丝0 提问6 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答
  • Richel

    8 粉丝0 提问4 回答

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励