在软电话(Asterisk - FreePBX)中同时拨打两个号码
我有一个拨号计划和一个AGI脚本,可以通过拨打*1337来从我的SIP客户端发起两个电话,然后输入我想拨打的两个号码,格式是NUMBER1#NUMBER2#。我的目标是同时拨打这两个号码,并把它们连接到一个我已经在等候的会议室,这样我们就可以一开始就进行三方通话,而不需要第一个人等我拨打第二个号码。
整体来说,这个过程运作得很好,但我遇到了两个主要问题。
- 电话是发起了,但我觉得它们是一个接一个地发起的,而不是同时进行。
- 其中一个电话在几秒钟后就掉线了。
这两个电话都是拨打固定电话或手机,而不是其他分机。我们三个人都能互相通话,所以没有编解码器的问题。Asterisk的日志没有显示任何有用的信息,只是显示其中一个分支挂断了。挂断前大约需要几秒钟的时间,在这段时间内我们都能正常沟通。
另外,我还有其他分机可以直接拨打一个号码并与对方通话,这个功能也很好用,所以NAT/防火墙的问题也不是原因。
有没有可能的解决办法呢?
我的拨号计划:
[from-custom-internal]
exten => *1337,1,Goto(from-internal-service,*1337,1)
[outbound]
exten => s,1,NoOp(Outgoing call processing)
same => n,Dial(PJSIP/${CALLERID(dnid)}@OUTBOUND_Direct_Out)
same => n,Hangup()
[from-internal-service]
exten => conf,1,NoOp()
same => n,Verbose(CONFID is: ${CONFID})
same => n,ConfBridge(${CONFID},default_bridgez,default_userz)
exten => *1337,1,Answer()
same => n,Wait(1)
same => n,Playback(beep)
same => n,Read(first_number,,60,,60,#)
same => n,Wait(1)
same => n,Playback(beep)
same => n,Read(second_number,,60,,60,#)
same => n,Set(CONFID=${EPOCH})
same => n,AGI(/var/lib/asterisk/agi-bin/internal_service_script.py,${CONFID},${first_number},${second_number})
same => n,ConfBridge(${CONFID})
same => n,Hangup()
我的AGI脚本:
#!/usr/bin/python
import sys
from asterisk.ami import AMIClient, SimpleAction
def make_call(conf_id, number_to_call):
client = AMIClient(address='127.0.0.1', port=5038)
client.login(username='USERNAME_HERE', secret='PASSWORD_HERE')
action = SimpleAction(
'Originate',
Channel='PJSIP/{}@OUTBOUND_Direct_Out'.format(number_to_call),
Context='from-internal-service',
Exten='conf',
Priority=1,
Variable='CONFID={}'.format(conf_id)
)
client.send_action(action)
client.logoff()
if __name__ == '__main__':
conf_id, first_number, second_number = sys.argv[1:4]
make_call(conf_id, first_number)
make_call(conf_id, second_number)
0 个回答
暂无回答