如何从AWS lambda向用户发送多条消息作为答案?

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

我已按照教程设置Lex&Lambda。我的lambda函数返回

return {
            "dialogAction": {
                "type": "ConfirmIntent",
                "intentName": "GetPersonInfo",
                "message": {
                    "contentType": "PlainText",
                    "content": ""
                }
            }
        }

并且Lex将其显示为一条消息。当我在AWS网站上构建我的机器人时,我可以将多个消息设置为答案(不使用lambda),而我想使用lambda函数来实现,就像在img:https://docs.aws.amazon.com/lex/latest/dg/images/default-response-25a.png上那样。

在aws站点上,我已经为多条消息准备了输出,看起来像这样:

{
  "dialogState": "Fulfilled",
  "intentName": "GetPersonInfo",
  "message": "{\"messages\":[{\"type\":\"PlainText\",\"group\":1,\"value\":\"siema siemanko\"},{\"type\":\"CustomPayload\",\"group\":2,\"value\":\"{\\\"moj\\\":\\\"json\\\"}\"}]}",
  "messageFormat": "Composite",
...
}

[我已经注意到Lex希望将“ dialogAction”作为lambda输出,并且在“ PostText”和“ PostContent”中使用了多消息功能。我知道,dialogAction用于构建PostText / PostContent对象。

我还想向语音发送不同的消息,不同的是显示为文本,另一个显示为JSON(对于我的前端)。现在,我的解决方案是将所有内容以PlainText消息的形式发送到dialogAction对象中,然后通过前端执行Polly读取准备进行演讲的消息。仅使用Lex和Lambda就能做到这一点吗?

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

我知道显示多条消息的唯一方法是通过AWS Lex端的Lex配置来执行此操作。举个例子:1.用话语I want to get information about user {UserEmailAddress}.创建一个意图2.创建所需的插槽UserEmailAddress,而不创建UserFirstNameUserLastName。3.一旦第一个插槽被语音填充,您就向Lambda导出功能内的后端API发送请求,以通过其电子邮件地址获取有关该用户的信息并填充其他插槽(该代码适用于Node 8.10,您可以创建自己的Python版本):`

exports.handler = async (event, context) => {
    ...
    return context.succeed({
        event.sessionAttributes,
        dialogAction: {
            type: "Delegate",
            {
                ...event.currentIntent.slots,
                UserFirstName: httpResponse.firstName,
                UserLastName: httpResponse.lastName
            }
        }
    })
}

`4.在意图的“响应”部分中,添加多条消息:这里是用户{UserEmailAddress}的信息他的名字是{UserFirstName},他的名字是{UserLastName}。5.添加包含发话的问题作为一个/多个响应的响应卡。例如,问题“您接下来要做什么?”和一个按钮:按钮标题:“获取他的地址”,按钮值:“”

理想情况下,对话框应如下所示:

User: I want to get information about user [email protected]
Bot: Here is the information about user [email protected]
Bot: His first name is Simon his last name is Anderson
Bot: What do you want to do next?
     [Get his address]

并且当您单击按钮时,它看起来与插槽的常规响应相同。

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