From ce076521b1745c2656b1fcc6d0d31b71da5bf947 Mon Sep 17 00:00:00 2001 From: tt41 Date: Tue, 2 Aug 2011 19:31:48 +0200 Subject: rename folder --- For Weekly Test/07-07-2011/sipCall.py | 176 ++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 For Weekly Test/07-07-2011/sipCall.py (limited to 'For Weekly Test/07-07-2011/sipCall.py') diff --git a/For Weekly Test/07-07-2011/sipCall.py b/For Weekly Test/07-07-2011/sipCall.py new file mode 100644 index 0000000..eb44b4a --- /dev/null +++ b/For Weekly Test/07-07-2011/sipCall.py @@ -0,0 +1,176 @@ +import sys +import pjsua as pj +import socket +import time +import MySQLdb +import subprocess + +import classServer + +from time import sleep +from datetime import datetime +import string + + +stop ="false" +server = "132.230.4.8" +username = "mpselftest1" +password = "1mpselftest" + +LOG_LEVEL=2 +current_call = None +success = "" + + +# Logging callback +def log_cb(level, str, len): + print str, "SIP log" + + +# Callback to receive events from account +class MyAccountCallback(pj.AccountCallback): + + def __init__(self, account=None): + pj.AccountCallback.__init__(self, account) + + # Notification on incoming call## + + + +# Callback to receive events from Call +class MyCallCallback(pj.CallCallback): + + def __init__(self, call=None): + pj.CallCallback.__init__(self, call) + + # Notification when call state has changed + def on_state(self): + global current_call + global success + + if self.call.info().state_text <> "DISCONNCTD": + if self.call.info().state_text == "CONNECTING": + print "CONNECTING CALL" + #print "isine opo:", self.call.info().state_text + print "CALL CONFIRMED and ESTABLISH", self.call.info().state_text + sleep(5) + current_call.hangup() + success = "true" + server.sendData(success) + else: + sleep(1) + #print "" + + if self.call.info().last_reason <> "": + + if self.call.info().last_reason == "Busy Here": + + print "Destination Number is Busy or offline" + print "" + success = "false" + server.sendData(success) + + + #print self.call.info().state_text + + if self.call.info().state == pj.CallState.DISCONNECTED: + current_call = None + print 'Current call Disconnected' + + +def make_call(uri): + try: + print "Making call to", uri + cb=MyCallCallback() + return acc.make_call(uri, cb) + except pj.Error, e: + print "Exception: " + str(e) + return None + + + + +lib = pj.Lib() +while stop <> "true": + + + lib.init(log_cfg = pj.LogConfig(level=LOG_LEVEL, callback=log_cb)) + transport = lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(0)) + + print "\nListening on", transport.info().host, + print "port", transport.info().port, "\n" + lib.start() + lib.set_null_snd_dev() + + # open socket connection and connect to the controller + server = classServer.ServerHandler(50097) + tried = server.openSocket() + + if server.error != 'No error': + print server.error + if server.error == '[Errno 98] Address already in use': + print 'one should try to kill the port' + print server.killPort() + server.closeConection() + + try: + acc_cfg = pj.AccountConfig("132.230.4.8","mpselftest1","1mpselftest") + acc = lib.create_account(acc_cfg, cb=MyAccountCallback()) + + + if acc.info().reg_status < 700: + + my_sip_uri = "sip:" + transport.info().host + ":" + str(transport.info().port) + print my_sip_uri + server.sendData('ready')#send message to controller + print "here:", server.connected + while 1: + try: + data = server.receiveData() # waiting mode, until receiver start message or terminate message + + if data == "start": # if receiver start message, handler start to call destination + + while 1: + + num = server.receiveData() # waiting destination number + if num <> "": + + number = "sip:"+num+"@132.230.4.8" + current_call = make_call(number) + break + + if data == "terminated": # will terminate the handler if controller send terminate message + stop = "true" + break + + except ValueError: + print "error when sending message" + server.closeConnection() + del server + + server.closeConnection() + del server + + else: + Regis_status= "Bad" + print "error when register" + + lib.destroy() + lib = None + acc = None + + + server.closeConnection() + del server + except ValueError: + print "Exception: " + str(e) + +print "Goodbye" +sleep(3) +acc.delete() +lib.destroy() +server.closeConnection() +del server +lib = None +acc = None + -- cgit v1.2.3-55-g7522