AWS Lex(v2) 和 Lambda

问题描述 投票:0回答:1

我目前正在开发一个 AWS Lex 聊天机器人,它将与 Lambda 集成。聊天机器人的目标是提供两个城市之间的距离并返回金额。下面是一个聊天的例子: Chat example

但是,我不断收到“意图已实现”。

这是 Lambda 代码的副本:

import json
import boto3
from boto3.dynamodb.conditions import Key

def lambda_handler(event, context):

    destination = event["sessionState"]["intent"]["slots"]["Destination"]["value"]["interpretedValue"]
    source = event["sessionState"]["intent"]["slots"]["Source"]["value"]["interpretedValue"]
    distance = get_distance(source, destination)

    return {
    "sessionState": {
        "dialogAction": {
            "type": "Close"
        },
        "intent": {
            "name": "DistanceIntent"
            "state": "Fulfilled"
        },
        "messages": [
            {
                "contentType": "PlainText",
                "content": f"{distance}"
            }
        ]
    }
}

您能解释一下哪里出了问题吗?

aws-lambda amazon-lex
1个回答
0
投票

您似乎尚未将您的意图链接到 Lambda 函数。有两个步骤是必要的。

  1. 将 Lambda 函数链接到机器人
  • 为此,请单击“测试”机器人按钮
  • 单击测试聊天窗口顶部的设置轮
  • 在滑出的设置窗口中,选择要与您的机器人关联的 Lambda 函数
  • 保存更改
  1. 配置使用 Lambda 实现的意图
  • 打开您的意图并向下滚动到“履行”选项卡
  • 单击“高级选项”按钮
  • 在打开的窗口中,查找“Fulfillment Lambda 代码挂钩”部分
  • 选中“使用 Lambda 函数来实现”框
  • 保存您的更改

这现在将确保 Lex 将所有履行推迟到 Lambda 函数。

Lex v1 和 v2 的一个重要区别是,在 Lex v2 中您只能为整个机器人配置 1 个 Lambda 函数。 您需要考虑使用路由器功能以获得更大的灵活性。 请查看以下指南:https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach.html

© www.soinside.com 2019 - 2024. All rights reserved.