具有匹配可能性的星号优先级

时间:2011-08-29 20:06:27

标签: asterisk

我希望能够从拨号方案中仅隔离免费号码,然后通过SIP而不是通过本地中继路由。我的问题是优先级编号,似乎免费电话号码也会与主干分机相匹配。

目前: `

 exten => _1XXXXXXXXXX,1,SetCallerID(${DEFAULT_CIDName} <${DEFAULT_CIDNum}>)

 exten => _1XXXXXXXXXX,n,Dial(${TRUNK_OB}/${EXTEN:0:11})

 exten => _1XXXXXXXXXX,n,Hangup

`

我希望能够添加:

exten => _1800NXXXXXX,1,Dial(SIP/sip.server.com/${EXTEN})

(以及888,855,877和866)

但免费电话号码也与中继拨号相匹配。

如果我将添加设置为优先级2,然后将中继拨号设置为优先级3,它是否只会拨打SIP并跳过中继线,或者是否可以将它们作为优先级1,然后如果它是免费的,只拨打SIP?

我到处寻找,无法得出结论。任何建议将不胜感激!!

1 个答案:

答案 0 :(得分:0)

在您的示例中,您覆盖优先级1,拨号方案继续在“更广泛”的扩展模式中使用优先级2。在您的情况下,当您拨打18001234567时,将执行以下拨号方案:

exten => _1800NXXXXXX,1,Dial(SIP/sip.server.com/${EXTEN})
exten => _1XXXXXXXXXX,2,Dial(${TRUNK_OB}/${EXTEN:0:11})
exten => _1XXXXXXXXXX,3,Hangup

SetCallerID()被免费分机覆盖。有两种方法可以解决这个问题:

  1. 覆盖扩展名2,而不是1

    exten => _1XXXXXXXXXX,1,SetCallerID(${DEFAULT_CIDName} <${DEFAULT_CIDNum}>)
    exten => _1XXXXXXXXXX,n,Dial(${TRUNK_OB}/${EXTEN:0:11})
    exten => _1XXXXXXXXXX,n,Hangup
    ; overwrite priority 2 (Dial) for toll free numbers
    exten => _1800NXXXXXX,2,Dial(SIP/sip.server.com/${EXTEN})
    

    这可能不是最干净的解决方案,因为在移动代码时你会被优先事项弄糊涂。

  2. 设置优先级为1的“dialstring”变量,您可以覆盖并稍后使用。

    exten => _1XXXXXXXXXX,1,Set(DIALOUTSTRING=${TRUNK_OB}/${EXTEN:0:11})
    exten => _1XXXXXXXXXX,n,SetCallerID(${DEFAULT_CIDName} <${DEFAULT_CIDNum}>)
    exten => _1XXXXXXXXXX,n,Dial(${DIALOUTSTRING})
    exten => _1XXXXXXXXXX,n,Hangup
    ; use another dialout for toll free numbers
    exten => _1800NXXXXXX,1,Set(DIALOUTSTRING=SIP/sip.server.com/${EXTEN})