【发布时间】:2018-03-04 16:30:09
【问题描述】:
如果 SIP 标头中包含转移号码,我正在尝试将拨号方案配置为转到不同的上下文。
这不起作用,因为它正在默默地失败。
这是我的extensions.conf 文件。
[from-external]
exten => _+<phone_number>,1,Noop(incoming call)
same => n,Answer()
same => n,Set(diversion=${SHELL(node ${scripts}/parsePhoneNumber.js ${SIP_HEADER(diversion)})})
same => n,GotoIf($["${diversion}" = ""]?1004,1:have_diversion])
same => n(have_diversion),Noop(in existing diversion)
[MissingDiversion]
exten => 1004,1,Noop(in missing diversion)
same => n(missing_diversion_label),Noop(in missing diversion)
日志是:
== Using SIP RTP CoS mark 5
-- Executing [+16167270007@from-external:1] NoOp("SIP/incoming-trunk2-00000021", "incoming call") in new stack
-- Executing [+16167270007@from-external:2] Answer("SIP/incoming-trunk2-00000021", "") in new stack
-- Executing [+16167270007@from-external:3] Set("SIP/incoming-trunk2-00000021", "diversion=") in new stack
-- Executing [+16167270007@from-external:4] GotoIf("SIP/incoming-trunk2-00000021", "1?1004,1:have_diversion]") in new stack
-- Goto (from-external,1004,1)
所以,看起来 GOTO 正在工作,但它没有到达我希望它到达的位置。我没有看到in missing diversion 的日志。
我尝试了GotoIf 行的变体,但也不起作用:
same => n,GotoIf($["${diversion}" = ""]?
same => n,GotoIf($["${diversion}" = ""]?[MissingDiversion,1004]:have_diversion])
same => n,GotoIf($["${diversion}" = ""]?[MissingDiversion,1]:have_diversion])
same => n,GotoIf($["${diversion}" = ""]?[MissingDiversion,1004,1]:have_diversion])
另外,我只是使用带有原始上下文 [from-external] 的标签 - GotoIf 确实有效。跳转到新的上下文是失败的。
我正在运行 Asterisk 11.6
【问题讨论】:
-
您显示的日志是无用的,您已经看到之后会发生什么。与 gotoIF 无关,请检查您发送它的拨号方案。
-
日志到此结束。这正是我的问题。