我希望能够从我的拨号计划和路由中隔离免费号码,然后通过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,而dialplan在" wider "扩展模式中继续使用优先级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()被免费扩展覆盖。有两种方法可以解决这个问题:
覆盖扩展名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})
这可能不是最干净的解决方案,因为当你移动代码时,你会被优先级弄糊涂。
设置一个"dialstring"变量,优先级为1,以后可以覆盖使用。
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})