匹配拨号方案中的7位数字

时间:2009-08-12 11:39:34

标签: asterisk

我的拨号方案,我想知道用户拨打7位数字的时间。但是,拨号方案已经包含一个扩展名_X。 ,它将覆盖七位数字检查。 因此,考虑到拨号计划已包含_X,有人可以告诉我用于匹配用户拨打的七位数字的正确分机号码。

谢谢。

3 个答案:

答案 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

http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html/asterisk-book.html#asterisk-DP-Basics-SECT-3.6

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