Asterisk 从星号模式中排除扩展名h

Asterisk 从星号模式中排除扩展名h,asterisk,Asterisk,在Asterisk 12.4.0的拨号计划中,我希望同时接受数字和字符串扩展名,因此我使用如下内容: [trunks] exten => _[*#0-9a-z]!,1,Verbose(Incoming call) exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 0) exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 1

在Asterisk 12.4.0的拨号计划中,我希望同时接受数字和字符串扩展名,因此我使用如下内容:

[trunks]
exten => _[*#0-9a-z]!,1,Verbose(Incoming call)
exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 0)
exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 1)
exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 2)
exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 3)
exten => h,1,NoOp()
exten => t,1,Hangup()
exten => i,1,Hangup()
exten => s,1,Hangup()
不幸的是,这里提到了一种机制(标题为“小心模式匹配”的红色框),它导致扩展h(在挂断时自动调用)也执行带有 来电-其他处理0-3

拨打123时星号-rvvv的输出为:

  == Using SIP RTP CoS mark 5
    -- Executing [123@trunks:1] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call") in new stack
Incoming call
    -- Executing [123@trunks:2] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 0") in new stack
Incoming call - other processing 0
    -- Executing [123@trunks:3] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 1") in new stack
Incoming call - other processing 1
    -- Executing [123@trunks:4] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 2") in new stack
Incoming call - other processing 2
    -- Executing [123@trunks:5] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 3") in new stack
Incoming call - other processing 3
    -- Auto fallthrough, channel 'SIP/trunk_audio2redil-00000008' status is 'UNKNOWN'
    -- Executing [h@trunks:1] NoOp("SIP/trunk_audio2redil-00000008", "") in new stack
    -- Executing [h@trunks:2] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 0") in new stack
Incoming call - other processing 0
    -- Executing [h@trunks:3] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 1") in new stack
Incoming call - other processing 1
    -- Executing [h@trunks:4] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 2") in new stack
Incoming call - other processing 2
    -- Executing [h@trunks:5] Verbose("SIP/trunk_audio2redil-00000008", "Incoming call - other processing 3") in new stack
Incoming call - other processing 3
我希望在第行之后停止处理

-- Executing [h@trunks:1] NoOp("SIP/trunk_audio2redil-00000008", "") in new stack
但我不知道怎么做

我的想法是如何实现这一点:

  • 禁用“故障排除”机制,但我不知道如何以及是否可能
  • 修改模式,使其匹配所有数字(包括一位数)和长度大于1的所有字符串。我也不知道该怎么做
    • 简单方法

      exten => _[*#0-9a-g,j-r,u-z]!,1,Verbose(Incoming call)
      
      上下文方式(匹配优先级):

      Last based:仅当此上下文中没有匹配项且按照包含的确切顺序匹配时,才会匹配包含的上下文

      也会像这样工作

      exten => _.,1,Verbose(incoming call)
      exten => h,1,Verbose(hangup)
      

      这不应该起作用,但适用于所有当前的星号版本。

      我找到了另一种类似于arheops建议的“上下文方式”:

      [trunks]
      exten => _[*#0-9a-z]!,1,Verbose(Incoming call)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 0)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 1)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 2)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 3)
      
      exten => h,1,Goto(hangup,h,1)
      exten => t,1,Hangup()
      exten => i,1,Hangup()
      exten => s,1,Hangup()
      
      [hangup]
      exten => h,1,NoOp()
      

      不幸的是,我不能使用“简单方式”,因为模式不接受任何以h,I,s,t开头的扩展。在front.lol中添加其他规则[*#0-9a-z]。如果你觉得合适的话,就把h,1挂断。够了
      [trunks]
      exten => _[*#0-9a-z]!,1,Verbose(Incoming call)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 0)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 1)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 2)
      exten => _[*#0-9a-z]!,n,Verbose(Incoming call - other processing 3)
      
      exten => h,1,Goto(hangup,h,1)
      exten => t,1,Hangup()
      exten => i,1,Hangup()
      exten => s,1,Hangup()
      
      [hangup]
      exten => h,1,NoOp()