Asterisk 从星号模式中排除扩展名h
在Asterisk 12.4.0的拨号计划中,我希望同时接受数字和字符串扩展名,因此我使用如下内容: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
[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()