2017-02-23 27 views
0

我對ARI腳本的Asterisk非常新,我一直在嘗試製作一些腳本來處理與python中的ari-py的1對1通信。我一直在關注asterisk wiki中提供的例子,並且非常好。但是當我嘗試創建一個電話時,即使我已經回答了,接收者也會一直保持響鈴。我如何處理電話會出現問題嗎?這是我的腳本asterisk ari calling被卡住用python敲響

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) 

無論是客戶端能夠在橋上以復加,我可以打個電話,但問題仍然存在,收件人一直在說他們都是響噹噹的,儘管我已經回答了呼叫

回答

0

原來,問題出在這裏

def outgoing_call(self,channel): 
    try: 
     outgoing = client.channels.originate(endpoint="SIP/1002", app='channel-dump', appArgs='dialed') 
    except requests.HTTPError: 
     channel.hangup() 
     return 

由於所撥打的號碼接聽電話,他們使用相同的腳本,所以他們最終又自稱。一個簡單的條件,使撥打號碼不再呼叫自己是所需的全部