Update 'trashtalker.py'

This commit is contained in:
Maff 2019-04-29 13:56:26 +00:00
parent b128aa14fd
commit 032214b5a0
1 changed files with 7 additions and 3 deletions

View File

@ -31,6 +31,7 @@ sipport=5062
# logger functions # logger functions
def pjlog(level, str, len): def pjlog(level, str, len):
olog(level+1, "pjsip", str) olog(level+1, "pjsip", str)
#print() is used over bare print because pylint yells at me if I use bare print
def elog(sev, source, line): def elog(sev, source, line):
print("%s %s: %s" % ("!"*sev, source, line)) print("%s %s: %s" % ("!"*sev, source, line))
sys.stdout.flush() sys.stdout.flush()
@ -38,8 +39,9 @@ def olog(sev, source, line):
print("%s %s: %s" % ("*"*sev, source, line)) print("%s %s: %s" % ("*"*sev, source, line))
sys.stdout.flush() sys.stdout.flush()
#SIGTERM handler; could be expanded to handle SIGKILL, SIGHUP, SIGUSR1, etc. #SIGTERM handler; could be expanded to handle SIGKILL, SIGHUP, SIGUSR1, etc.
#Handling of SIGHUP or SIGUSR1 could be useful for "live" relaoding of playlist #TODO: handle SIGHUP or SIGUSR1 for live-relaoding playlist
def sighandle(_signo, _stack_frame): def sighandle(_signo, _stack_frame):
elog(1, "sighandler", "caught signal %s inside frame %s, closing main loop" % (_signo, _stack_frame))
global mainloop global mainloop
mainloop=False mainloop=False
pass pass
@ -56,9 +58,8 @@ class AccountCb(pj.AccountCallback):
def on_incoming_call(self, call): def on_incoming_call(self, call):
olog(2, "event-call-in", "caller %s dialled in" % call.info().remote_uri) olog(2, "event-call-in", "caller %s dialled in" % call.info().remote_uri)
call.set_callback(CallCb(call)) call.set_callback(CallCb(call))
#brief delay between ringing and connected means we can do playlist setup without a period of silence
call.answer(SIPStates.ringing) call.answer(SIPStates.ringing)
sleep(0.3)
call.answer(SIPStates.answer)
# Call Callback class # Call Callback class
class CallCb(pj.CallCallback): class CallCb(pj.CallCallback):
def __init__(self, call=None): def __init__(self, call=None):
@ -68,6 +69,7 @@ class CallCb(pj.CallCallback):
olog(3, "event-state-change", "SIP/2.0 %s (%s), call %s in call with party %s" % olog(3, "event-state-change", "SIP/2.0 %s (%s), call %s in call with party %s" %
(self.call.info().last_code, self.call.info().last_reason, (self.call.info().last_code, self.call.info().last_reason,
self.call.info().state_text, self.call.info().remote_uri)) self.call.info().state_text, self.call.info().remote_uri))
#call states not handled so far: CONNECTING
if self.call.info().state == pj.CallState.EARLY: if self.call.info().state == pj.CallState.EARLY:
global files global files
self.playlist=files self.playlist=files
@ -76,6 +78,7 @@ class CallCb(pj.CallCallback):
loop=True, filelist=self.playlist, label="trashtalklist") loop=True, filelist=self.playlist, label="trashtalklist")
self.playlistslot=pj.Lib.instance().playlist_get_slot(self.playlist_instance) self.playlistslot=pj.Lib.instance().playlist_get_slot(self.playlist_instance)
olog(4, "event-call-state-early", "initialised new trashtalk playlist instance") olog(4, "event-call-state-early", "initialised new trashtalk playlist instance")
self.call.answer(SIPStates.answer)
elif self.call.info().state == pj.CallState.CONFIRMED: elif self.call.info().state == pj.CallState.CONFIRMED:
olog(3, "event-call-state-confirmed", "answered call") olog(3, "event-call-state-confirmed", "answered call")
self.confslot=self.call.info().conf_slot self.confslot=self.call.info().conf_slot
@ -99,6 +102,7 @@ def PjInit():
global LOG_LEVEL global LOG_LEVEL
lib=pj.Lib() lib=pj.Lib()
cfg_ua=pj.UAConfig() cfg_ua=pj.UAConfig()
#TODO: make max_calls configurable?
cfg_ua.max_calls=32 cfg_ua.max_calls=32
cfg_ua.user_agent="TrashTalker/1.0" cfg_ua.user_agent="TrashTalker/1.0"
cfg_media=pj.MediaConfig() cfg_media=pj.MediaConfig()