diff options
Diffstat (limited to 'client/ivamVoiceBox.py')
-rw-r--r-- | client/ivamVoiceBox.py | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/client/ivamVoiceBox.py b/client/ivamVoiceBox.py index 3cafab1..9217005 100644 --- a/client/ivamVoiceBox.py +++ b/client/ivamVoiceBox.py @@ -1,12 +1,9 @@ -import getopt, sys +import getopt, sys, os import ivamApi, ivamCore, ivamDefs -from ivamCore import log from ivamUtil import getContents, setContents -DEBUG = False - class VoiceBox(ivamApi.Processor): # Constants @@ -15,17 +12,15 @@ class VoiceBox(ivamApi.Processor): # State currentState = STATE_INVALID + fileSuffix = ".ulaw.gz" - # Use GZIP compression? - useGzip = 1 - - def onConnect(self, c, callerNumber, calleeNumber): + def onConnect(self, c, callerNumber, ringNumber): - if DEBUG: - log("onConnect()") + if ivamCore.DEBUG: + ivamCore.log("onConnect()") self.callerNumber = callerNumber - self.calleeNumber = calleeNumber + self.ringNumber = ringNumber self.currentState = self.STATE_WELCOME c.playClip("welcome") @@ -43,8 +38,8 @@ class VoiceBox(ivamApi.Processor): def onClipFinish(self, c, fname): - if DEBUG: - log("onClipFinish('%s')" % fname) + if ivamCore.DEBUG: + ivamCore.log("onClipFinish('%s')" % fname) if self.currentState == self.STATE_WELCOME: self.currentState = self.STATE_WELCOME_BEEP; @@ -52,7 +47,7 @@ class VoiceBox(ivamApi.Processor): elif self.currentState == self.STATE_WELCOME_BEEP: self.currentState = self.STATE_RECORD - c.recordClip(self.nextMessageName(), self.useGzip) + c.recordClip(self.nextMessageName(), True) c.setTimeout(self.recordTime) elif self.currentState == self.STATE_PRE_FINISH: @@ -117,7 +112,7 @@ class VoiceBox(ivamApi.Processor): def onDtmfEvent(self, c, event): - if DEBUG: + if ivamCore.DEBUG: ivamCore.log("onDtmfEvent(%c)" % event) if ((self.currentState == self.STATE_WELCOME) or (self.currentState == self.STATE_WELCOME_BEEP)) and (event == '0'): @@ -159,7 +154,7 @@ class VoiceBox(ivamApi.Processor): if self.currentMessage >= len(self.messages): self.currentMessage = len(self.messages)-1 - os.remove("%s.ulaw" % self.messages[self.currentMessage]) + os.remove(self.messages[self.currentMessage]) del(self.messages[self.currentMessage]) self.currentState = self.STATE_REMOVED @@ -200,7 +195,7 @@ class VoiceBox(ivamApi.Processor): def onTimeout(self, c): - if DEBUG: + if ivamCore.DEBUG: ivamCore.log("onTimeout()") if self.currentState == self.STATE_RECORD: @@ -214,54 +209,54 @@ class VoiceBox(ivamApi.Processor): def onRecordFinish(self, c, fname): - if DEBUG: + if ivamCore.DEBUG: ivamCore.log("onRecordFinish(%s)", fname) - log("Starting new message notification program.") - r = os.spawnvp(os.P_WAIT, self.messageProgram, [self.messageProgram, "%s.ulaw" % fname]) - log("Program finished (return value is %i)." % r) + ivamCore.log("Starting new message notification program.") + r=os.spawnvp(os.P_WAIT, self.messageProgram, (self.messageProgram, fname)) + ivamCore.log("Program finished (return value is %i)." % r) def getMessageNames(self): - f = filter(lambda e: e.startswith("message-"), os.listdir(self.directory)) + f = os.listdir(self.messageDirectory) f.sort() f.reverse() return f def nextMessageName(self): - fn = "%s/message-%010i-%s-%s.ulaw" % (self.directory, time.time(), self.callerNumber, self.callerNumber) - - if self.useGzip: - return fn+".gz" - - return fn + return "%s/%010i-%s-%s%s" % (self.messageDirectory, time.time(), self.callerNumber, self.callerNumber, self.fileSuffix) def setPin(self, pin): if re.match('^([0-9#*]*|-)$', pin).end() is None: - log("Invalid PIN. PIN has to consist of 0-9#*. Use '-' for always denying access.") + ivamCore.log("Invalid PIN. PIN has to consist of 0-9#*. Use '-' for always denying access.") raise Exception, "Invalid PIN" self.pin = pin - def setDirectory(self, path): + def setDirectory(self, dname): + if dname.find("/") == -1: + dname = "%s/%s" % (ivamDefs.spoolDirectory, dname) - self.directory = path + self.directory = dname + self.messageDirectory = dname + "/messages" try: - self.setPin(getContents("%s/PIN" % path)) + self.setPin(getContents("%s/PIN" % dname)) except Exception: self.pin = "-" try: - self.recordTime = int(getContents("%s/RECORD_TIME" % path))) + self.recordTime = int(getContents("%s/RECORD_TIME" % dname)) except Exception: self.recordTime = 60 - messageProgram = "%s/NEWMESSAGE" % path + messageProgram = "%s/newmessage" % dname + -def setupVoiceBox(dname, pin, recordTime): + +def setupVoiceBox(dname, pin = "-", recordTime = 60): if dname.find("/") == -1: dname = "%s/%s" % (ivamDefs.spoolDirectory, dname) @@ -271,5 +266,8 @@ def setupVoiceBox(dname, pin, recordTime): setContents("%s/PIN" % dname, pin) setContents("%s/RECORD_TIME" % dname, `recordTime`) - os.symlink - + ulaw = map(lambda e: e+".ulaw.gz", ('welcome', 'beep', 'empty', 'nomoremessages', 'auth', 'authok', 'removed')) + + for f in ulaw + ['newmessage', 'README']: + os.symlink("%s/%s" % (ivamDefs.shareDirectory, f), "%s/%s" % (dname, f)) + |