在外卡匹配后继续星号拨号计划

时间:2017-05-24 02:55:16

标签: asterisk voip

我有一个工作的Asterisk 13 Dialplan,其中一个调用进入extensions.conf,然后在extensions.conf中进入一个switch语句:

switch => Realtime

有效。调用根据数据库表的内容完成。

现在我要做的是在调用Realtime表之前进行一些过滤。像这样:

exten => _X.,1,Set(GROUP()=${ACCOUNTCODE:0:4})
exten => _X.,n,GotoIf($[${GROUP_COUNT(ABCD)} > 2]?tooMany,1)
exten => _X.,n,Log(VERBOSE,Call Continuing.  ${ACCOUNTCODE} is not a limited group)
switch => Realtime

exten => tooMany,1,Congestion(4)
exten => tooMany,n,hangup(503)

但是,似乎发生的事情是,一旦扩展名匹配(_X。),处理将继续进行匹配,但不会继续并处理" switch =>实时" line(它永远不会执行拨号方案的数据库组件)

如何在通过过滤器后让Realtime拨号方案执行?

  • 第二个有些相关的问题

顺便说一句,我可以在全文文件extensions.conf中遇到类似的问题,我希望所有调用都能完成某些操作,然后执行特定于某些调用的操作。 e.g。

exten => _X.,1,<do something>
exten => 1122,1,<do some more stuff to the same call>

这在文档中处理,1122是更具体的行,将是执行的行。但是,对所有来电做某事的正确方法是什么,然后做具体的事情?

1 个答案:

答案 0 :(得分:0)

我想您不明白Switch Realtime的工作原理。

仅可以切换一个扩展(或模式)。对于CONTEXT可以这样做。当星号引擎看到switch =&gt;实时它就像include一样工作,即在这个WHOLE上下文中包括数据库搜索。

你也接触不了解拨号方案的工作方式(否则将毫无疑问2)。请阅读像ORelly&#34; Asterisk这样的电话未来的书#34;它逐步描述了它是如何工作的。