From 2df492c3eff6f99365e9175d0029ec7fb6ebc33e Mon Sep 17 00:00:00 2001 From: triatmoko Date: Tue, 19 Jul 2011 17:31:18 +0200 Subject: original script arda --- For Weekly Test/_OriglandlineCall.py | 203 +++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 For Weekly Test/_OriglandlineCall.py (limited to 'For Weekly Test/_OriglandlineCall.py') diff --git a/For Weekly Test/_OriglandlineCall.py b/For Weekly Test/_OriglandlineCall.py new file mode 100644 index 0000000..9cec7e3 --- /dev/null +++ b/For Weekly Test/_OriglandlineCall.py @@ -0,0 +1,203 @@ +import sys +import pjsua as pj +from time import sleep +import string + +server = "sipgate.de" +username = "1289459" +password = "MMW9AX" +number = "" + +LOG_LEVEL = 2 +current_call = None +is486 = False +isConfirmed = False +isRinging = False +isConnected = False +isStopped = False +firstTime502 = True +firstTime100 = True +TIMEOUT_LIMIT = 30 + +# Logging callback +def log_cb(level, str, len): + print str, + +# Callback to receive events from account +class MyAccountCallback(pj.AccountCallback): + + def __init__(self, account=None): + pj.AccountCallback.__init__(self, account) + +# 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 isConfirmed + global isConnected + global isRinging + global is486 + + if self.call.info().state == pj.CallState.CALLING: + print "CALLING..." + + if self.call.info().last_code == 486: + is486 = True + + if self.call.info().state == pj.CallState.EARLY: + isRinging = True + + if self.call.info().state == pj.CallState.CONFIRMED: + isConfirmed = True + isConnected = True + isRinging = False + + if self.call.info().state == pj.CallState.DISCONNECTED: + current_call = None + isConnected = False + + +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 + +print "Whenever something comes from the server (at the moment from you), it will continue. Imitating the server behaviour!" + +while not isStopped: + + lib = pj.Lib() + lib.init(log_cfg = pj.LogConfig(level=LOG_LEVEL, callback=log_cb)) + transport = lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(0)) + lib.start() + lib.set_null_snd_dev() + +# server = classServer.ServerHandler(50099) +# tried = server.openSocket() +# +# if server.error != 'No error': +# print server.error +# if server.error == '[Errno 98] Address already in use': +# print "Trying to kill the port" +# print server.killPort() +# server.closeConection() + + acc_cfg = pj.AccountConfig(server,username,password) + acc = lib.create_account(acc_cfg, cb=MyAccountCallback()) + + + if acc.info().reg_status == 502: + if firstTime502: + print "CONNECTION ERROR!!" + print "Please check your internet connection!\n" + firstTime502 = False + + acc.delete() + lib.destroy() + lib = None + acc = None +# server.sendData('NOT ready') + sleep(2) + continue + + + while acc.info().reg_status == 100: + if firstTime100: + print "Trying to register." + firstTime100 = False + + + while acc.info().reg_status == 408: + print "408: REGISTRATION FAILED DUE TO TIMEOUT!!" + print "Check your internet connection and SIP settings!" +# server.sendData('NOT ready') + + + if acc.info().reg_status == 200: + print ("REGISTRATION IS SUCCESSFUL") #server.sendData('ready') + + while 1: +# try: + print "Waiting for server(at the moment YOU!) to send command here:" #This line should be deleted further! + startStop = sys.stdin.readline().rstrip("\r\n") #startStop = server.receiveData() + + if startStop == "start": + timeCounterRinging = 0 + firstTimeRinging = True + + while 1: + #number = server.receiveData() + print "Please enter the number to call:" + number = sys.stdin.readline().rstrip("\r\n") + if number <> "": + numberToCall = "sip:"+number+"@"+server + current_call = make_call(numberToCall) + + while 1: + if isRinging: + sleep(1) + timeCounterRinging = timeCounterRinging + 1 + if firstTimeRinging: + print "RINGING..." + firstTimeRinging = False + if is486: + print "THE NUMBER THAT YOU'VE DIALLED IS BUSY!!" + isConfirmed = False + isConnected = False + isRinging = False + is486 = False + break + + if isConnected and isConfirmed: + print "CALL SUCCESSFULLY ESTABLISHED!!" + sleep(5) + current_call.hangup() + print "CALL SUCCESSFULLY TERMINATED!!" + isConfirmed = False + isConnected = False + isRinging = False + is486 = False + break + + if timeCounterRinging == TIMEOUT_LIMIT and isRinging: + current_call.hangup() + print "THE NUMBER THAT YOU'VE DIALLED IS NOT ANSWERING!!" + isConfirmed = False + isConnected = False + isRinging = False + is486 = False + break + break + + if startStop == "stop": + isStopped = True + break + +# except ValueError: +# print "813 General socket layer error: Failed send message" +# server.closeConnection() +# del server + +# server.closeConnection() +# del server + +# server.closeConnection() +# del server + +sleep(2) +print "LOGGING OUT..." +acc.delete() +lib.destroy() +lib = None +acc = None +print "LOGOUT WAS SUCCESSFULL!!" + -- cgit v1.2.3-55-g7522