[prev in list] [next in list] [prev in thread] [next in thread]
List: semsdev
Subject: [Semsdev] git:master:a2d214df: apps/examples/ivr_examples: added skeleton of a call center style app
From: Juha Heinanen <jh () tutpro ! com>
Date: 2015-06-10 8:58:24
Message-ID: E1Z2bq4-0007vc-QB () www ! kamailio ! org
[Download RAW message or body]
Module: sems
Branch: master
Commit: a2d214df36a46325f38949deab93846d60a4da09
URL: https://github.com/sems-server/sems/commit/a2d214df36a46325f38949deab93846d60a4da09
Author: Juha Heinanen <jh@tutpro.com>
Committer: Juha Heinanen <jh@tutpro.com>
Date: 2015-06-10T11:56:52+03:00
apps/examples/ivr_examples: added skeleton of a call center style application
---
Added: apps/examples/ivr_examples/call_center.py
---
Diff: https://github.com/sems-server/sems/commit/a2d214df36a46325f38949deab93846d60a4da09.diff
Patch: https://github.com/sems-server/sems/commit/a2d214df36a46325f38949deab93846d60a4da09.patch
---
diff --git a/apps/examples/ivr_examples/call_center.py b/apps/examples/ivr_examples/call_center.py
new file mode 100644
index 0000000..e803abe
--- /dev/null
+++ b/apps/examples/ivr_examples/call_center.py
@@ -0,0 +1,71 @@
+# Skeleton of a call center style application that answers, plays beep_file
+# to caller and then tries attendants on callee_list in round robin fashion
+# as long as one of them replies
+
+# Author Juha Heinanen <jh@tutpro.com>
+
+import time
+
+from log import *
+from ivr import *
+
+beep_file = "/var/lib/sems/audio/general/beep_snd.wav"
+callee_list = ['sip:foo@test.tutpro.com', 'sip:test@test.tutpro.com']
+
+beeping = 1
+connecting = 2
+connected = 3
+
+class IvrDialog(IvrDialogBase):
+
+ def onSessionStart(self):
+
+ self.callee_list = callee_list
+ self.callee_index = 0
+ self.setNoRelayonly()
+ self.state = beeping
+ self.audio_msg = IvrAudioFile()
+ self.audio_msg.open(beep_file, AUDIO_READ)
+ self.enqueue(self.audio_msg, None)
+
+ def onBye(self):
+
+ self.stopSession()
+
+ def onEmptyQueue(self):
+
+ if self.state == beeping:
+ self.state = connecting
+ self.connectTry()
+ return
+
+ return
+
+ def onOtherReply(self, code, reason):
+
+ debug('call_center: got reply: ' + str(code) + ' ' + reason)
+
+ if self.state == connecting:
+
+ if code < 200:
+ return
+ if code >= 200 and code < 300:
+ self.flush()
+ self.disconnectMedia()
+ self.setRelayonly()
+ self.state = connected
+ debug('call_center: connected to ' + self.callee_uri)
+ return
+ if code >= 300:
+ time.sleep(3)
+ self.connectTry()
+ return
+ else:
+ return
+
+ def connectTry(self):
+
+ self.callee_uri = self.callee_list[self.callee_index]
+ self.callee_index = (self.callee_index + 1) % 2
+ debug('call_center: trying to connectCallee ' + self.callee_uri)
+ self.connectCallee(self.callee_uri, self.callee_uri)
_______________________________________________
Semsdev mailing list
Semsdev@lists.iptel.org
http://lists.iptel.org/mailman/listinfo/semsdev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic