def change_address(address): connection = db.engine.connect() user_id = ask.context.System.user.userId if address != None: if ask.request.dialogState == 'COMPLETED': new_address = set_address_for_user(address, user_id) if (new_address == None): return question("I don't know the address " + address + ". Try a different address near by.") return statement("Your new address is " + new_address) else: return dialog(delegate()) return dialog(elicit('address', 'What is your new address?'))
def next_pickup_for_address(address): connection = db.engine.connect() if address != None: if ask.request.dialogState == 'COMPLETED': new_address = full_address(address) location = location_from_address(new_address) if (location == None): return question("I don't know the address " + address + ". Try a different address near by.") else: x, y = position_from_location(location) return statement("For " + new_address + ", " + pickup_statement_for(x, y)) else: return dialog(delegate()) return dialog(elicit('address', 'For what address?'))
def complaintBillExcess(product_slot): mqttPayload = Payload(customer_id) mqttPayload.setIntent('RechargeFailureIntent') mqttPayload.setSlots({'product_slot': product_slot}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) valid_products = ['prepaid', 'dth', 'wallet'] if product_slot is not None: product_slot = product_slot.lower() if product_slot in valid_products: if product_slot == 'dth': speech_text = render_template('recharge_dth_response', product_slot=product_slot) mqttPayload.setText(speech_text) else: speech_text = render_template('recharge_other_response', product_slot=product_slot) mqttPayload.setText(speech_text) else: speech_text = render_template('invalid_product') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('AirCareResponse', speech_text) else: return dialog().dialog_directive()
def transferMoney(payeeName, payeeAmount): if payeeName is not None and payeeAmount is not None: payeeName = payeeName.lower() mqttPayload = Payload(customer_id) mqttPayload.setIntent('TransferIntent') mqttPayload.setSlots({ 'payeeName': payeeName, 'payeeAmount': payeeAmount }) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) print "payeeName - %s payeeAmount - %s" % (payeeName, payeeAmount) session.attributes['args'] = [ token, customer_id, "soumyadeep@icicibank", vpa_details.get(payeeName), payeeAmount, "remarks" ] session.attributes['funct'] = 'transfer' session.attributes['name'] = payeeName session.attributes['amount'] = payeeAmount speech_text = render_template('do_auth') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return question(speech_text).simple_card('GringottsResponse', speech_text) else: return dialog().dialog_directive()
def getAccountBalance(product_slot, vas_action_slot, vas_slot): mqttPayload = Payload(customer_id) mqttPayload.setIntent('VASActionIntent') mqttPayload.setSlots({ 'product_slot': product_slot, 'vas_action_slot': vas_action_slot, 'vas_slot': vas_slot }) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) valid_products = ['wallet', 'prepaid', 'postpaid', 'dth'] if product_slot is not None: product_slot = product_slot.lower() if product_slot in valid_products: if vas_action_slot == 'activate': vas[product_slot] = vas_slot speech_text = render_template('vas_activate', vas_slot=vas_slot, product_slot=product_slot) mqttPayload.setText(speech_text) elif vas_action_slot == 'deactivate': vas[product_slot] = '' speech_text = render_template('vas_deactivate', vas_slot=vas_slot, product_slot=product_slot) mqttPayload.setText(speech_text) else: speech_text = render_template('invalid_product') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('AirCareResponse', speech_text) else: return dialog().dialog_directive()
def getMoneySpent(recent_duration): if recent_duration is not None: duration = re.search('\d+', recent_duration).group(0) mqttPayload = Payload(customer_id) mqttPayload.setIntent('MoneySpentIntent') mqttPayload.setSlots({'days': duration}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) response = rest.getnDaysTransaction(token, account_no, duration) print "getting data for days " + duration if (response[0] == 200): print response[1] if ("message" in response[1][0]): if (response[1][0]["message"] == "No Data Found"): amount = 0 else: amount = 0 for key in response[1][1:]: if (key['credit_debit_flag'] == "Dr."): amount = amount + float(key['transaction_amount']) speech_text = render_template('money_spent_response', amount=str(amount), duration=duration) mqttPayload.setAlexaData({'amount': amount}) else: speech_text = render_template('icici_error') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('GringottsResponse', speech_text) else: return dialog().dialog_directive()
def next_pickup(address): connection = db.engine.connect() user_id = ask.context.System.user.userId if address != None: if ask.request.dialogState == 'COMPLETED': new_address = set_address_for_user(address, user_id) if (new_address == None): return question("I don't know the address " + address + ". Try a different address near by.") x, y = get_xy_for_user(user_id) return statement("For " + new_address + ", " + pickup_statement_for(x, y)) else: return dialog(delegate()) result = connection.execute( text( "select id, st_x(position) x, st_y(position) y from addresses where user_id = :user_id" ).bindparams(user_id=user_id)) if result.rowcount == 0: return dialog(elicit('address', 'What is your address')) else: res = result.first() return statement(pickup_statement_for(res['x'], res['y']))
def payBill(billName): if billName is not None: mqttPayload = Payload(customer_id) mqttPayload.setIntent('PayBillIntent') mqttPayload.setSlots({'billName': billName}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) session.attributes['args'] = [billName] session.attributes['funct'] = 'paybill' session.attributes['name'] = billName session.attributes['amount'] = 0 speech_text = render_template('do_auth') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return question(speech_text).simple_card('GringottsResponse', speech_text) else: return dialog().dialog_directive()
def getAccountBalance(product_slot): mqttPayload = Payload(customer_id) mqttPayload.setIntent('CheckBalanceIntent') mqttPayload.setSlots({'product_slot': product_slot}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) valid_products = ['wallet', 'prepaid'] if product_slot is not None: if product_slot in valid_products: speech_text = render_template('balance_response', balance=685, product_slot=product_slot) mqttPayload.setText(speech_text) else: speech_text = render_template('invalid_product') mqttPayload.setText(speech_text) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('AirCareResponse', speech_text) else: return dialog().dialog_directive()
def checkBilly(billName, billDate): if billName is not None and billDate is not None: mqttPayload = Payload(customer_id) mqttPayload.setIntent('CheckBillIntent') mqttPayload.setSlots({'billName': billName, 'billDate': billDate}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) amount = rest.checkBill(billName) speech_text = render_template('check_bill_response', billName=billName, billAmount=amount, billDate=billDate) mqttPayload.setText(speech_text) mqttPayload.setAlexaData({ 'billName': billName, 'billAmount': amount, 'billDate': billDate }) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('GringottsResponse', speech_text) else: return dialog().dialog_directive()
def addPayee(payeeName, payeeVPA): if payeeName is not None and payeeVPA is not None: payeeName = payeeName.lower() payeeVPA = payeeVPA.lower() mqttPayload = Payload(customer_id) mqttPayload.setIntent('AddPayeeIntent') mqttPayload.setSlots({'payeeName': payeeName, 'payeeVPA': payeeVPA}) client.publish(user_topic, json.dumps(mqttPayload.__dict__), qos=0) print "payee name %s payeeVPA %s" % (payeeName, payeeVPA) if payee_details.get(payeeName): response = rest.createVPA(token, payee_details.get(payeeName), payeeVPA.replace(" at ", "@")) if (response[0] == 200): print response[1] try: if (response[1][1]["response"].find("mapped successfully") ): speech_text = render_template('add_payee_response', payeeName=payeeName, payeeVPA=payeeVPA) else: speech_text = render_template('add_payee_api_error') except (KeyError, IndexError): speech_text = render_template('add_payee_api_error') else: speech_text = render_template('add_payee_name_error') mqttPayload.setText(speech_text) mqttPayload.setAlexaData({ 'payeeName': payeeName, 'payeeVPA': payeeVPA }) client.publish(alexa_topic, json.dumps(mqttPayload.__dict__), qos=0) return statement(speech_text).simple_card('GringottsResponse', speech_text) else: return dialog().dialog_directive()