def detailAnalytics(cid): r = kookoo.Response() g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayText("Press 1 for this week")) g.append(kookoo.PlayText("Press 2 for this month")) g.append(kookoo.PlayText("Press 3 for this year")) return r
def updateDB(cid, category, amount): category = getCategoryFromNumber(int(category)) record = userDB(cid=cid, amount=amount, category=category) record.put() r = kookoo.Response() r.addPlayText("Your entry was successfully added") return r
def welcome(): r = kookoo.Response() r.addPlayText( "welcome to expense management system.") # change to app name g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayText("Press 1 for adding an expense entry")) g.append(kookoo.PlayText("Press 2 for analysis")) g.append(kookoo.PlayText("Press 3 for transaction")) return r
def shortAnalytics(cid): sum = 0 records = db.GqlQuery('SELECT * FROM userDB WHERE cid = \'' + cid + '\' AND date = DATE(\'' + str(datetime.datetime.now().date()) + '\')') for x in records: sum = sum + int(x.amount) r = kookoo.Response() r.addPlayText("Todays total spending amount is " + str(sum)) return r
def GET(self): from conf.app_settings import LOCALT_PATH,AUDIO_FILE web.header('Content-Type', 'text/xml') input= web.input() APP_LOGGER.debug("KOOKOO CALLED ME:"+json.dumps(input)) # Dump.objects.get_or_create(type="INPUT",data=json.dumps(input)) if input.has_key('event'): if input['event']=='NewCall': SID[input['sid']]=input['cid'] Dump.objects.get_or_create(type='NEW CALL',data=json.dumps(input)) r = kookoo.Response() g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayAudio(LOCALT_PATH+'/static/'+AUDIO_FILE)) return r if input['event']=='GotDTMF': digit=input['data'] if digit=='1': Dump.objects.create(type='INTERESTED',data=SID[input['sid']]) r = kookoo.Response() r.addPlayText('Thank you, we will call you back in 5 minutes') r.addHangup() return r if digit=='2': Dump.objects.create(type='CALL BACK',data=SID[input['sid']]) r = kookoo.Response() r.addPlayText('Thank You') r.addHangup() return r if digit=='3': Dump.objects.create(type='NOT INTERESTED',data=SID[input['sid']]) r = kookoo.Response() r.addPlayText('Thank You') r.addHangup() return r if digit=='4': Dump.objects.get_or_create(type='REPLAYED',data=SID[input['sid']]) r = kookoo.Response() g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayAudio(LOCALT_PATH+'/static/'+AUDIO_FILE)) return r else: return '<response>invalid call</response>'
def call_ivr(request): if request.method == 'GET': print request.GET event = request.GET.get('event', None) print event if event == "GotDTMF": pincode = int(request.GET['data']) top_10_schools = SchoolNames.Query.all().limit(2) s = "The schools near you are " for school in top_10_schools: s += school.SCHOOL_NAME s += " and" r = kookoo.Response() r.addPlayText(s) r.addHangup() return HttpResponse(r) else: r = kookoo.Response() pincode = r.append(kookoo.CollectDtmf(maxDigits=6)) pincode.append(kookoo.PlayText("Please enter the pincode")) return HttpResponse(r)
def addEntry(): r = kookoo.Response() r.addPlayText("What category did you spend on") g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayText("Press 1 for food")) g.append(kookoo.PlayText("Press 2 for transport")) g.append(kookoo.PlayText("Press 3 for shopping")) g.append(kookoo.PlayText("Press 4 for entertainment")) g.append(kookoo.PlayText("Press 5 for heathcare")) g.append(kookoo.PlayText("Press 6 for education")) g.append(kookoo.PlayText("Press 7 for others")) return r
def yearAnalytics(cid): sum = {} firstdate = date(1, 1, datetime.datetime.now().year) records = db.GqlQuery('SELECT * FROM userDB WHERE cid = \'' + cid + '\' AND date >= DATE(\'' + str(firstdate) + '\')') for x in records: if str(x.category) not in sum.keys(): sum[str(x.category)] = 0 sum[str(x.category)] = sum[str(x.category)] + int(x.amount) sum = sorted(sum.iteritems(), key=operator.itemgetter(1), reverse=True) r = kookoo.Response() r.addPlayText("this years total amount is " + str(sum)) r.addPlayText("the top categories of spending are") i = 1 for key in sum: r.addPlayText(str(key)) if i >= 5: break i = i + 1 return r
def get(self): requestSid = self.request.get("sid") requestCallerNumber = self.request.get("cid") requestCalledNumber = self.request.get('called_number') requestData = self.request.get('data') session = get_current_session() state = session.get('state', "not present") logging.info("STATE: %s", state) response = kookoo.Response(filler='yes') if (self.request.get('event') == "NewCall"): handleNewCall(self, response) session['state'] = "MainMenu" elif (self.request.get('event') == "GotDTMF"): if (state == "MainMenu"): if (requestData == "1"): recordVoiceCV(self, response) session['state'] = "RecordCV" elif (requestData == "2"): getCandidateStatus(self, response) elif (requestData == "3"): getCurrentPositions(self, response) elif (self.request.get('event') == "Hangup"): handleHangup(self, response) elif (self.request.get('event') == "Record"): addAudioCVToDB(self, response) hangupCaller(self, response) elif (self.request.get('event') == "Disconnect"): handleDisconnectEvent(self, response) hangupCaller(self, response) else: pass self.response.out.write(response)
def ProcessKooKooResponse(): try: lis = json.load(open( "save.json", "r" ) ) except : lis = {} r = kookoo.Response() curtime = int(time.time()) dic ={'Please say your name':'name'+str(curtime), 'Please Say your qualification':'qual'+str(curtime)} phone_number="" if request.values.get("event") == "NewCall": r.addPlayText("Welcome to Shine dot com registration service") phone_number=request.values.get("cid") for i , j in dic.items(): r.addPlayText(i) r.addRecord(j) r.addPlayText("Thank You") r.addHangup() print str(r) #dic['proc'] = 0 lis[phone_number]=dic json.dump( lis, open( "save.json", "w" ) ) return str(r).replace("<Record","<Record format=\"wav\" silence=\"3\" maxduration=\"5\"")
def getSpendingDetails(): r = kookoo.Response() g = r.append(kookoo.CollectDtmf(maxDigits=1)) g.append(kookoo.PlayText("Press 1 for quick analytics")) g.append(kookoo.PlayText("Press 2 for detailed analytics")) return r
#!/usr/bin/env python # -*- coding: utf-8 -*- # Import modules for CGI handling import cgi, cgitb import kookoo # kookoo library import urllib import sys, os # The same XML can be created above using the convenience methods r = kookoo.Response() form = cgi.FieldStorage() #variables lang = 'en-IN' lang_hi = 'hi-IN' #kookoo language format for both recognise and tts # english : en-IN # hindi : hi-IN .., def getAudioPath(filename): filename = "/audios/" + filename noQueryString = os.environ["SCRIPT_NAME"] dir = noQueryString.split("/") dir.pop() noQueryString = "/".join(dir) url = "" if os.environ["SERVER_PORT"] == 443: url = "https://" + os.environ["SERVER_ADDR"] + noQueryString + filename else: url = "http://" + os.environ["SERVER_ADDR"] + noQueryString + filename
def enterAmount(): r = kookoo.Response() g = r.append(kookoo.CollectDtmf()) g.append(kookoo.PlayText("How much did you spend")) return r