summaryrefslogtreecommitdiffstats
path: root/client/ivamVoiceBox.py
diff options
context:
space:
mode:
Diffstat (limited to 'client/ivamVoiceBox.py')
-rw-r--r--client/ivamVoiceBox.py72
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))
+