0

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

4

1 回答 1

1

截至目前,Amazon Lex 不支持任何回退意图或默认意图。但是我找到了一种解决方法。这就是我所做的。

在您的聊天客户端和 Lex 之间设置 API Gateway 和 Lambda 函数。

在此处输入图像描述

您的聊天客户端将向 API Gateway 发送请求,API Gateway 会将其转发给 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"]

希望能帮助到你。

于 2017-12-08T07:24:01.803 回答