summaryrefslogtreecommitdiffstats
path: root/clients/ivamVoiceBox.py
diff options
context:
space:
mode:
Diffstat (limited to 'clients/ivamVoiceBox.py')
-rw-r--r--clients/ivamVoiceBox.py60
1 files changed, 40 insertions, 20 deletions
diff --git a/clients/ivamVoiceBox.py b/clients/ivamVoiceBox.py
index 9dc84f9..b05de03 100644
--- a/clients/ivamVoiceBox.py
+++ b/clients/ivamVoiceBox.py
@@ -13,6 +13,8 @@ class VoiceBox(ivamApi.Processor):
# State
currentState = STATE_INVALID
fileSuffix = ".ulaw.gz"
+ recordOnly = False
+ noRecord = False
def getClip(self, s):
return "%s/%s%s" % (self.directory, s, self.fileSuffix)
@@ -25,8 +27,11 @@ class VoiceBox(ivamApi.Processor):
self.callerNumber = callerNumber
self.ringNumber = ringNumber
- self.currentState = self.STATE_WELCOME
- c.playClip(self.getClip("welcome"))
+ if self.noRecord:
+ self.authNow(c)
+ else:
+ self.currentState = self.STATE_WELCOME
+ c.playClip(self.getClip("welcome"))
def loginComplete(self, c):
self.messages = self.getMessageNames()
@@ -41,6 +46,14 @@ class VoiceBox(ivamApi.Processor):
self.currentState = self.STATE_MESSAGE_BEEP
c.playClip(self.getClip("beep"))
+
+ def authNow(self, c):
+ self.currentState = self.STATE_AUTH
+ self.inputPin = ""
+ c.stopPlayback()
+ c.playClip(self.getClip("auth"))
+ c.setTimeout(self.AUTH_TIMEOUT)
+
def onClipFinish(self, c, fname):
if ivamCore.DEBUG:
@@ -121,7 +134,7 @@ class VoiceBox(ivamApi.Processor):
if ivamCore.DEBUG:
ivamCore.log("onDtmfEvent(%c)" % event)
- if ((self.currentState == self.STATE_WELCOME) or (self.currentState == self.STATE_WELCOME_BEEP)) and (event == '0'):
+ if ((self.currentState == self.STATE_WELCOME) or (self.currentState == self.STATE_WELCOME_BEEP)) and (event == '0') and not self.recordOnly:
if self.pin == "":
self.loginComplete(c)
@@ -131,11 +144,7 @@ class VoiceBox(ivamApi.Processor):
c.hangup()
else:
- self.currentState = self.STATE_AUTH
- self.inputPin = ""
- c.stopPlayback()
- c.playClip(self.getClip("auth"))
- c.setTimeout(self.AUTH_TIMEOUT)
+ self.authNow(c)
elif self.currentState == self.STATE_AUTH:
c.stopPlayback()
@@ -227,7 +236,7 @@ class VoiceBox(ivamApi.Processor):
os.environ["LENGTH"] = `c.recordLength`
os.environ["SEC_LENGTH"] = "%0.1f" % (c.recordLength/8000.0)
- ivamCore.log("Starting new message notification program.")
+ ivamCore.log("Starting new message notification program ('%s %s')." % (self.messageProgram, fname))
r=os.spawnvp(os.P_WAIT, self.messageProgram, (self.messageProgram, fname))
ivamCore.log("Program finished (return value is %i)." % r)
@@ -276,19 +285,30 @@ class VoiceBox(ivamApi.Processor):
-def setupVoiceBox(dname, pin = "-", recordTime = 60, email = "root"):
- if dname.find("/") == -1:
- dname = "%s/%s" % (ivamDefs.spoolDirectory, dname)
+def setupVoiceBox(dname, pin = "-", recordTime = 60, email = "root", umask = 0007):
+
+ u = os.umask(umask)
+ try:
+
+ if dname.find("/") == -1:
+ dname = "%s/%s" % (ivamDefs.spoolDirectory, dname)
- os.mkdir(dname, 0770)
- os.mkdir("%s/messages" % dname, 0770)
+ os.mkdir(dname, 0777)
+ os.mkdir("%s/messages" % dname, 0777)
- setContents("%s/PIN" % dname, pin)
- setContents("%s/RECORD_TIME" % dname, `recordTime`)
- setContents("%s/EMAIL" % dname, email)
+ setContents("%s/PIN" % dname, pin)
+ setContents("%s/RECORD_TIME" % dname, `recordTime`)
+ setContents("%s/EMAIL" % dname, email)
+
+ ulaw = map(lambda e: e+".ulaw.gz", ('welcome', 'beep', 'empty', 'nomoremessages', 'auth', 'authok', 'removed'))
- ulaw = map(lambda e: e+".ulaw.gz", ('welcome', 'beep', 'empty', 'nomoremessages', 'auth', 'authok', 'removed'))
+ for f in ulaw:
+ os.symlink("%s/%s" % (ivamDefs.ulawDirectory, f), "%s/%s" % (dname, f))
- for f in ulaw + ['newmessage', 'README']:
- os.symlink("%s/%s" % (ivamDefs.shareDirectory, f), "%s/%s" % (dname, f))
+ os.symlink("%s/%s" % (ivamDefs.binDirectory, "ivam-newmessage"), "%s/%s" % (dname, "newmessage"))
+ os.symlink("%s/%s" % (ivamDefs.shareDirectory, "README.VoiceBox"), "%s/%s" % (dname, "README"))
+
+ return dname
+ finally:
+ os.umask(u)