1

我正在尝试将机器人从 microsoft azure 迁移到 aws lex。在 azure 中,我们可以使用多个 session.send() 语句向单个用户输入发送多个响应。但是在 aws lex 中,我们不能在 lambda 函数中使用多个 return 语句。

在我的天蓝色机器人中,我每 5 分钟向用户发送一次响应。例如:-

var myVar = setInterval(myTimer, 300000);

function myTimer() {
    session.send(message);
}

如何使用 lambda 函数在 aws lex 中实现这一点。?

4

1 回答 1

0

您将无法从“post-Lex”Lambda 触发第二个响应,这意味着 Lex 之后的 Lambda 函数。您需要一个“pre-Lex”Lambda 函数,将用户输入传递给 Lex 并将 Lex 响应返回给用户。


这是 Lex 机器人的基本设置: 在此处输入图像描述


但这就是您需要它的设置方式: 在此处输入图像描述


它实际上不需要是用户和 Lex 之间的 Lambda 函数,但无论哪种方式,它都需要使用带有PostContentPostText的Lex 运行时服务 API来传递给 Lex。userInput

这是关于他们如何以这种方式使用 Lambda 的 Amazon 博客,他们称之为通道和 Lex 之间的“预处理层”:将您的 Amazon Lex 机器人与任何消息传递服务集成

您会看到他们还使用AWS API Gateway创建一个 HTTPS 端点,以便将用户的通道连接到这个“预处理”Lambda。


在设置任何类型的“预处理”层之后,您可以在其中绕过 Lex 对响应的限制,而只需担心通道的限制。

友情警告:我相信亚马逊在 Lex 中设置了这些限制,以阻止聊天机器人开发人员向用户发送垃圾邮件,当您说“我每 5 分钟向用户发送一次回复”时,听起来肯定会变成垃圾邮件。所以要小心。

于 2018-10-30T16:58:29.163 回答