如何在Amazon Lex中创建后备意图或在触发错误时调用Lamda?

时间:2017-08-31 15:45:01

标签: amazon-lex

我在亚马逊lex上有一个小机器人,我无法找到定义默认意图或后备意图的方法。

1 个答案:

答案 0 :(得分:1)

截至目前,Amazon Lex不支持任何后备意图或默认意图。但是我找到了一个解决方法。这就是我的所作所为。

在聊天客户端和Lex之间设置API网关和Lambda功能。

enter image description here

您的聊天客户端将向API网关发送请求,API网关会将此转发给Lambda函数,Lambda函数会将请求转发给Lex(Lex将再增加一个lambda函数)。在返回Lex的响应时,如果它是错误消息并触发某些操作,您可以检查Lambda函数。

在Lambda函数中,我们可以使用这样的东西:

import logging
import boto3

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

client_run = boto3.client('lex-runtime')
client_model = boto3.client('lex-models')

def lambda_handler(event, context):
    response = client_run.post_text(
        botName='name_of_your_bot',
        botAlias='alias_of_your_bot',
        userId='some_id',
        sessionAttributes={
            'key1': 'value1'
        },
        inputText=event['user_query']
    )
    bot_details = client_model.get_bot(
    name='name_of_your_bot',
    versionOrAlias='$LATEST'
    )
    for content in bot_details['clarificationPrompt']['messages']:
        if response["message"] == content['content']:
            return error_handling_method(event)
    for content in bot_details['abortStatement']['messages']:
        if response["message"] == content['content']:
            return error_handling_method(event)
    return response["message"]

希望它有所帮助。