我正在为一家服务器上的公司编写一个robocaller,该服务器也有来电。我已经设置了一个AMI轮询,它将确保在推送呼叫文件之前有一定数量的可用通道,但我不知道哪些特定通道会打开。由于我在生成.call文件时无法确定哪些频道将被打开,是否有一种方法可以像自动分配传入/转接/桥接频道那样自动为呼叫分配空闲频道,或者这只能在拨号计划中实现?如果在拨号计划之外是可能的,你会推荐什么?
只有使用dialplan才有可能,在任何呼叫启动的情况下,您需要检查src/dst通道是否由robocaller保留。还有另一种方法:侦听AMI事件,检查新通道,以防保留通道使用-发送该通道的Hangup。
对于任何通过搜索找到这个的人,我找到了一个更好的方法。
首先使用.call文件调用本地频道。请确保将呼叫文件中的PHONENNUMBER变量设置为您最终想要呼叫的号码。然后我们找到一个可用的通道,并这样称呼它:
exten => 1,1,ChanIsAvail(Appropriate channels here); Checks if those channels are available and assigns ${AVAILORIGCHAN} an available channel
exten => 1,2,Dial(${AVAILORIGCHAN}${PHONENUMBER}/n); Dials the phone number on the available channel. The /n is very important if you plan on changing CDR variables after the call goes through. Otherwise, leave it out.
exten => 1,3,Hangup(); Clean up the local channel when we're done with it.
这将把被调用者转发到调用文件中context和extension变量中列出的上下文和扩展名。