import sys import pjsua as pj import classServer from time import sleep def log_cb(level, str, len): print str, "SIP log" # Receive events from Call class MyCallCallback(pj.CallCallback): def on_state(self): global current_call if self.call.info().state <> pj.CallState.DISCONNECTED: if self.call.info().state_text == "CONNECTING": print "CALL : ", self.call.info().state_text sleep(1.5) if self.call.info().state <> pj.CallState.DISCONNECTED: print "will Hangup call" current_call.hangup() print "send result" server.sendData('200') else: sleep(0.5) if self.call.info().last_reason == "Busy Here": server.sendData('486') if self.call.info().state == pj.CallState.DISCONNECTED: current_call = None def make_call(uri): try: cb=MyCallCallback() return acc.make_call(uri, cb) except pj.Error, e: print "408 " + str(e) return None lib = pj.Lib() stop =False current_call = None while stop <> True: lib.init(log_cfg = pj.LogConfig(level=1, callback=log_cb)) transport = lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(0)) lib.start() lib.set_null_snd_dev() server = classServer.ServerHandler(50097) tried = server.openSocket() try: acc_cfg = pj.AccountConfig("132.230.4.8","mpselftest1","1mpselftest") acc = lib.create_account(acc_cfg, cb=pj.AccountCallback()) if acc.info().reg_status < 700: server.sendData('ready') print "Status: ", server.connected while 1: try: data = server.receiveData(0) event = data[0:5] num = data[6:] if event == "start" and num <> "": print "Make a call to :", num number = "sip:"+num+"@132.230.4.8" current_call = make_call(number) if data == "487": stop = True break except ValueError: print "813 General socket layer error: Failed send message" server.closeConnection() del server server.closeConnection() del server else: Regis_status= "Bad" print "488 Not Acceptable Here" lib.destroy() lib = None acc = None server.closeConnection() del server except ValueError: print "401 Unauthorized " + str(e) print "Goodbye" sleep(3) acc.delete() lib.destroy() server.closeConnection() del server lib = None acc = None