2017-05-24 42 views
0

我有一个工作的Asterisk 13拨号方案,其中一个呼叫进入的extensions.conf再内的extensions.conf成switch语句:继续后拨号方案外卡赛

switch => 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)的处理继续通过比赛,但不会继续和处理“开关=>实时”行(其从不执行拨号方案的数据库组件)

如何在通过过滤器后执行实时拨号方案?

  • 其次有些相关的问题

顺便说一句,我可以在全文字的extensions.conf,我想所有的呼叫,必须做的东西对他们有类似的问题,然后做具体事某些电话。例如

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

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

回答

0

我觉得你不明白交换实时的工作原理。

只有一个扩展(或模式)是不可能的。 CONTEXT是可能的。当星号引擎看到switch =>实时时,它的工作原理类似于include,即在这个WHOLE上下文中包含数据库搜索。

你也像不理解拨号方案如何工作(否则将不成问题2)。请阅读ORelly的“Asterisk电话的未来”一书,它一步一步地描述了它的工作原理。

+0

如果它的工作方式类似于include,那就好了,除非如果EXTEN匹配它永远不会进入交换机/数据库搜索的模式。这是为什么? – SchroedingersCat

+0

,因为它是开关。如果你想在相同的上下文中额外的扩展,你应该包括=> someothecontext,并切换到其他上下文。 – arheops