在星号拨号方案中创建新频道
Create new channel in asterisk dialplan
我需要在Asterisk上实现的这个操作类似于呼叫转移,但有一些不同。这是对系统的简单解释。
共有三个分机:100、200 和 300。100 到 200 之间的电话很便宜,任何分机打到 300 的电话都很贵。分机 300 在远程设备上被编程为仅接收和接听来自分机 200 的呼叫。
分机 200 将 "call forwarding" 编程到分机 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 次接收(它不会接收)。
关于我可以做些什么来解决这个问题有什么想法吗?
为此使用本地频道。
查看freepbx.org系统followme模块,了解如何使用本地频道实现followme。
我需要在Asterisk上实现的这个操作类似于呼叫转移,但有一些不同。这是对系统的简单解释。
共有三个分机:100、200 和 300。100 到 200 之间的电话很便宜,任何分机打到 300 的电话都很贵。分机 300 在远程设备上被编程为仅接收和接听来自分机 200 的呼叫。
分机 200 将 "call forwarding" 编程到分机 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 次接收(它不会接收)。
关于我可以做些什么来解决这个问题有什么想法吗?
为此使用本地频道。
查看freepbx.org系统followme模块,了解如何使用本地频道实现followme。