我是我的拨号方案,我想知道用户何时拨打了一个 7 位数的号码。但是,拨号计划已经包含一个扩展 _X。,这将覆盖七位数字检查。那么,考虑到拨号计划已经包含_X,有人可以告诉我使用正确的分机来匹配用户拨打的七位数号码。.
谢谢你。
我是我的拨号方案,我想知道用户何时拨打了一个 7 位数的号码。但是,拨号计划已经包含一个扩展 _X。,这将覆盖七位数字检查。那么,考虑到拨号计划已经包含_X,有人可以告诉我使用正确的分机来匹配用户拨打的七位数号码。.
谢谢你。
如果一个模式匹配多于一个扩展,Asterisk 将执行最具体的匹配。
例如,在同一上下文中给出以下 4 个扩展
exten => _X.,1,Dial(SIP/foo)
exten => _NXXXXXX,1,Dial(SIP/foo)
exten => _XXXXXXX,1,Dial(SIP/foo)
exten => _867530X,1,Dial(SIP/foo)
无论它们出现在上下文中的什么位置,Asterisk 都会按照以下顺序匹配它们:
exten => _867530X,1,Dial(SIP/foo)
exten => _NXXXXXX,1,Dial(SIP/foo)
exten => _XXXXXXX,1,Dial(SIP/foo)
exten => _X.,1,Dial(SIP/foo)
在 CLI 上使用“dialplan show extension@context”,Asterisk 将显示匹配的执行顺序。例如:
*CLI> dialplan show 8675309@default
[ Context 'default' created by 'pbx_config' ]
'_867530X' => 1. Dial(SIP/foo) [pbx_config]
'_NXXXXXX' => 1. Dial(SIP/foo) [pbx_config]
'_XXXXXXX' => 1. Dial(SIP/foo) [pbx_config]
'_X.' => 1. Dial(SIP/foo) [pbx_config]
-= 4 extensions (4 priorities) in 1 context. =-
有关更多信息,我推荐 Asterisk Wiki
https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching
或星号权威指南
voip-info 往往有很多过时的信息。
考虑你已经有
exten => _X.,1,Dial(SIP/foo)
exten => _X.,2,Hangup
目前要匹配 7 DIGIT 表达式,您可以执行以下操作
exten => _X.,1,GotoIf( $[${LEN($EXTEN)} = 7] ? dig7)
exten => _X.,n,Dial(SIP/foo)
exten => _X.,n,Hangup
exten => _X.,n(dig7),Dial(ZAP/${EXTEN})
exten => _X.,n,Hangup
尽量避免拨号方案模式冲突。
7
should never override _X.
because patterns are always checked after non-patterns. See voip-info.org for more details.