我的拨号方案,我想知道用户拨打7位数字的时间。但是,拨号方案已经包含一个扩展名_X。 ,它将覆盖七位数字检查。 因此,考虑到拨号计划已包含_X,有人可以告诉我用于匹配用户拨打的七位数字的正确分机号码。
谢谢。
答案 0 :(得分:3)
如果模式匹配的是多个扩展名,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
或Asterisk the Definative Guide
voip-info往往有很多过时的信息。答案 1 :(得分:2)
考虑一下你已经
exten => _X.,1,Dial(SIP/foo)
exten => _X.,2,Hangup
目前要匹配7 DIGIT Expression 你可以做这样的事情
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
尽量避免冲突拨号方案模式。
答案 2 :(得分:1)
7
永远不应覆盖_X.
,因为在非模式之后始终会检查模式。有关详细信息,请参阅voip-info.org。