asterisk ari 呼叫卡在铃声 python
asterisk ari calling stuck in ringing with python
我对 Asterisk 的 ARI 脚本很陌生,我一直在尝试制作一些脚本来处理 python 中与 ari-py 的一对一通信。我一直在关注星号维基中提供的示例,到目前为止一切顺利。但是,当我尝试创建一个呼叫时,即使我已接听,接收者也总是不停地响铃。我处理电话的方式有问题吗?这是我的脚本
def stasis_start_cb(self, channel, ev):
"""Handler for StasisStart event"""
chan = channel.get('channel')
chan.answer()
print "Channel %s has entered the application" % chan.json.get('name')
outgoing = client.channels.originate(endpoint="SIP/1002", extension='1002', callerId='Tes', app='channel-dump', appArgs='dialed')
我尝试使用 OOP 来简化函数的使用,该脚本有什么问题吗?这是另一个尝试使用网桥进行调用的脚本:
def outgoing_call(self,channel):
try:
outgoing = client.channels.originate(endpoint="SIP/1002", app='channel-dump', appArgs='dialed')
except requests.HTTPError:
channel.hangup()
return
def outgoing_start(self, bri, channel):
channel.answer()
self.addChan(channel, bridge)
def stasis_start(self, channel, ev):
chan = channel.get('channel')
name = chan.json.get('name')
"""ars = ev.get('args')
if not ars:
print "Error: {} didn't provide any arguments!".format(name)
return
if ars and ars[0] != 'inbound':
return
if len(ars) != 2:
print "Error: {} didn't tell us who to dial".format(name)
chan.hangup()"""
print "Channel {} entered the application".format(name)
chan.ring()
self.outgoing_call(chan)
self.outgoing_start(bridge, chan)
两个客户端都可以添加到桥接中,我也可以打电话,但是问题依旧,我已经接听电话了,对方一直说在响铃
原来,问题出在这里
def outgoing_call(self,channel):
try:
outgoing = client.channels.originate(endpoint="SIP/1002", app='channel-dump', appArgs='dialed')
except requests.HTTPError:
channel.hangup()
return
由于被叫号码接听电话,他们使用相同的脚本,所以他们最终又给自己打了电话。一个简单的 if 条件就可以让被拨号码不再呼叫自己
我对 Asterisk 的 ARI 脚本很陌生,我一直在尝试制作一些脚本来处理 python 中与 ari-py 的一对一通信。我一直在关注星号维基中提供的示例,到目前为止一切顺利。但是,当我尝试创建一个呼叫时,即使我已接听,接收者也总是不停地响铃。我处理电话的方式有问题吗?这是我的脚本
def stasis_start_cb(self, channel, ev):
"""Handler for StasisStart event"""
chan = channel.get('channel')
chan.answer()
print "Channel %s has entered the application" % chan.json.get('name')
outgoing = client.channels.originate(endpoint="SIP/1002", extension='1002', callerId='Tes', app='channel-dump', appArgs='dialed')
我尝试使用 OOP 来简化函数的使用,该脚本有什么问题吗?这是另一个尝试使用网桥进行调用的脚本:
def outgoing_call(self,channel):
try:
outgoing = client.channels.originate(endpoint="SIP/1002", app='channel-dump', appArgs='dialed')
except requests.HTTPError:
channel.hangup()
return
def outgoing_start(self, bri, channel):
channel.answer()
self.addChan(channel, bridge)
def stasis_start(self, channel, ev):
chan = channel.get('channel')
name = chan.json.get('name')
"""ars = ev.get('args')
if not ars:
print "Error: {} didn't provide any arguments!".format(name)
return
if ars and ars[0] != 'inbound':
return
if len(ars) != 2:
print "Error: {} didn't tell us who to dial".format(name)
chan.hangup()"""
print "Channel {} entered the application".format(name)
chan.ring()
self.outgoing_call(chan)
self.outgoing_start(bridge, chan)
两个客户端都可以添加到桥接中,我也可以打电话,但是问题依旧,我已经接听电话了,对方一直说在响铃
原来,问题出在这里
def outgoing_call(self,channel):
try:
outgoing = client.channels.originate(endpoint="SIP/1002", app='channel-dump', appArgs='dialed')
except requests.HTTPError:
channel.hangup()
return
由于被叫号码接听电话,他们使用相同的脚本,所以他们最终又给自己打了电话。一个简单的 if 条件就可以让被拨号码不再呼叫自己