我需要在Asterisk上实现的此操作类似于呼叫转发,但存在一些差异。这是对系统的简化说明
有三种扩展:100,200和300.100到200之间的呼叫很便宜,从任何分机到300的呼叫都很昂贵。并且在远程设备上编程扩展300以仅从扩展200接收和接受呼叫
扩展200程序a"呼叫转发"扩展300(它添加到数据库)
当分机100呼叫分机200时,分机200应呼叫分机300并将呼叫转移到分机100
我发现的呼叫转发示例建议使用扩展程序100中的Dial()
。
[context]
exten => s,1,Set(CFIM=${DB(CFIM/${ARG1})})
exten => s,n,GotoIf($["${CFIM}"!=""]?s-CFIM,1:s-NoCFIM,1)
exten => s,n,Hangup
exten => s-CFIM,1,Dial(Local/${CFIM},30,Ttr)
exten => s-CFIM,n,Hangup
exten => s-NoCFIM,1,Dial(${ARG1},30,Ttr)
exten => s-NoCFIM,n,Hangup
这种方法的问题在于,对300的调用实际上是由分机100(当前频道)进行的。这将产生100的昂贵计费,而分机300将从100接收呼叫,它将下降
我需要做的是代表分机200创建一个新频道,拨打300然后将该呼叫转移到当前频道,以便分机300接收来自200的呼叫,并产生两个账单:一个从100到200,另一个从200到300
我尝试使用Originate()
应用,但这对我不起作用,因为它阻止了200次拾取(不会这样做)。
关于我能做些什么来解决这个问题的任何想法?
答案 0 :(得分:0)
使用本地频道。
请参阅freepbx.org系统followme模块,了解如何通过本地频道实现跟随。