我目前正在开发一个 AWS Lex 聊天机器人,它将与 Lambda 集成。聊天机器人的目标是提供两个城市之间的距离并返回金额。下面是一个聊天的例子:
但是,我不断收到“意图已实现”。
这是 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}"
}
]
}
}
您能解释一下哪里出了问题吗?
您似乎尚未将您的意图链接到 Lambda 函数。有两个步骤是必要的。
这现在将确保 Lex 将所有履行推迟到 Lambda 函数。
Lex v1 和 v2 的一个重要区别是,在 Lex v2 中您只能为整个机器人配置 1 个 Lambda 函数。 您需要考虑使用路由器功能以获得更大的灵活性。 请查看以下指南:https://docs.aws.amazon.com/lexv2/latest/dg/lambda-attach.html