我使用的是Asterisk 11。当我尝试呼叫时,获取频道名称有问题。通常,当被叫方拿起电话时,我可以得到频道名称。但现在,我想在拨出后立即获得频道名称。我可以在屏幕上看到它是这样的:
Called SIP/7146991234@64.195.139.88
- SIP/64.195.139.88-00000001 is ringing
-- SIP/64.195.139.88-00000001 is making progress passing it to SIP/8001-00000000
我知道频道名称是:"SIP/641951.139.88-00000001",但我不知道如何通过编码或任何其他方式获得它。请帮帮我。非常感谢!
您可以在Asterisk 11中使用被叫通道上的预拨号处理程序获取出站通道的名称。
[default]
exten => pre_dial_handler,1,NoOp()
same => n,Verbose(1, Channel is ${CHANNEL})
same => n,Return()
exten => dial_example,1,NoOp()
same => n,Dial(SIP/alice,,b(default^pre_dial_handler^1)
这将在通道SIP/alice-XXXXXXXXXX上执行子程序pre_dial_handler,而不是实际执行拨号操作的任何通道。该子例程在创建后立即在出站通道上执行,但在对其执行任何操作(例如进行调用尝试)之前执行。
您无法在拨号计划中获取出站通道的通道名称
原因:当时还没有创建。
但您可以通过外部应用程序通过检查变量BRDIGEDPEERNAME或listnen事件来获取它。
此外,您还可以在cmd_dial内部宏(M param)中获取两个通道