예제 #1
0
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?'))
예제 #2
0
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?'))
예제 #3
0
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()
예제 #5
0
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()
예제 #7
0
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()
예제 #9
0
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()