访问Python aws lex中触发机器人(lambda函数)的用户话语(第一个)?

时间:2017-11-05 10:11:16

标签: python python-2.7 amazon-web-services aws-lambda amazon-lex

我正在使用python 2.7尝试实现用户话语,因此我可以将其提示回用户。 我试过了

mess = intent_request['currentIntent']['slots']['drink']['inputTranscript']

我想访问用户话语(当前话语),例如“我可以订购披萨”。

我正在使用python 2.7 aws lambda。 我怎么能得到这个话语?

我的代码:

import os
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

def lambda_handler(event,context):
    logger.debug('event.bot.name={}'.format(event['bot']['name']))

    return dispatch(event)

def dispatch(intent_request):
    intent_name = intent_request['currentIntent']['name']
    #prompt = intent_request['currentIntent']['inputTranscript']
    if intent_name == 'BurgerType':
        return get_burger(intent_request)

    if intent_name == 'drinks':
        return get_drink(intent_request)

def get_drink(intent_request):

    slot = intent_request['currentIntent']['slots']
    value2 = intent_request['currentIntent']['slots']['drink']
    mess = intent_request['currentIntent']['slots']['drink']['inputTranscript']
    session_attributes = {}

    return close(

        session_attributes,
        'Fulfilled',{
            'contentType':'PlainText',
            'content':'Your order of 000'+mess
        })

def get_burger(intent_request):

    slots = intent_request['currentIntent']['slots']
    value = intent_request['currentIntent']['slots']['Burgers']
    #value2 = intent_request['currentIntent']['slots']['cheese']
    session_attributes = {}

    return close(
        session_attributes,
        'Fulfilled',{
            'contentType': 'PlainText',
            'content':'Your order of '+value+' burger '#+value2+'has been placed'
        })

def close(session_attributes, fulfillment_state, message):
    response = {
        'sessionAttributes': session_attributes,
        'dialogAction':{

            'type':'Close',
            'fulfillmentState': fulfillment_state,
            'message': message
        }  
    }

    return response

1 个答案:

答案 0 :(得分:1)

正如您可以看到下面的示例请求,用户的话语,即用户输入存储在'intent_request'对象的'inputTranscript'中。

{
    'messageVersion': '1.0', 
    'invocationSource': 'DialogCodeHook', 
    'userId': 'some_user_id', 
    'sessionAttributes': {}, 
    'requestAttributes': None, 
    'bot': 
        {'name': 'bot_name', 
        'alias': '$LATEST', 'version': '$LATEST'
        }, 
    'outputDialogMode': 'Text', 
    'currentIntent': 
        {
            'name': 'intent_name', 
            'slots': 
            {
                'slot1': 'value1'
            }, 
        'slotDetails': 
        {
            'slot1': 
            {
                'resolutions': [], 
                'originalValue': 'value1'
            }
        }, 
        'confirmationStatus': 'None'
        }, 
    'inputTranscript': 'what am i saying to this chatbot'
}

因此,您可以使用以下代码访问它:

mess = intent_request['inputTranscript']

希望它有所帮助。