0

我是我的拨号方案,我想知道用户何时拨打了一个 7 位数的号码。但是,拨号计划已经包含一个扩展 _X。,这将覆盖七位数字检查。那么,考虑到拨号计划已经包含_X,有人可以告诉我使用正确的分机来匹配用户拨打的七位数号码。.

谢谢你。

4

3 回答 3

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

或星号权威指南

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

voip-info 往往有很多过时的信息。

于 2013-01-03T14:27:37.450 回答
2

考虑你已经有

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

尽量避免拨号方案模式冲突。

于 2013-02-12T05:58:36.880 回答
1

7 should never override _X. because patterns are always checked after non-patterns. See voip-info.org for more details.

于 2009-08-12T11:49:38.623 回答