【问题标题】:Asterisk GotoIf not actually goingAsterisk GotoIf 实际上没有去
【发布时间】: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 无关,请检查您发送它的拨号方案。
  • 日志到此结束。这正是我的问题。

标签: asterisk pbx


【解决方案1】:

发现问题了,是GotoIf语句末尾多余的']'。

应该是:

same =>         n,GotoIf($["${diversion}" = ""]?1004,1:have_diversion)

而不是:

same =>         n,GotoIf($["${diversion}" = ""]?1004,1:have_diversion])

【讨论】:

  • 这是一个愚蠢的错误。我的主要问题是,我到底如何获得有用的日志来帮助我发现这样的错误......
【解决方案2】:

您应该将新上下文包含到 from-external 或 goto as MissingDiversion,1004,1

【讨论】:

  • 如何在现有上下文下添加新上下文?
  • 在尝试配置星号之前,强烈建议阅读像 ORelly 的 Asterisk the Future of Telephony 这样的书。不会有这样的问题。您可以在任何初学者书籍中找到如何使用拨号方案。你只是在浪费时间尝试做员工而不了解拨号方案的基本知识。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2015-04-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多