azure - 来自 lex 中单个 lamda 函数的多个返回语句
问题描述
我正在尝试将机器人从 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 中实现这一点。?
解决方案
您将无法从“post-Lex”Lambda 触发第二个响应,这意味着 Lex 之后的 Lambda 函数。您需要一个“pre-Lex”Lambda 函数,将用户输入传递给 Lex 并将 Lex 响应返回给用户。
它实际上不需要是用户和 Lex 之间的 Lambda 函数,但无论哪种方式,它都需要使用带有PostContent或PostText的Lex 运行时服务 API来传递给 Lex。userInput
这是关于他们如何以这种方式使用 Lambda 的 Amazon 博客,他们称之为通道和 Lex 之间的“预处理层”:将您的 Amazon Lex 机器人与任何消息传递服务集成
您会看到他们还使用AWS API Gateway创建一个 HTTPS 端点,以便将用户的通道连接到这个“预处理”Lambda。
在设置任何类型的“预处理”层之后,您可以在其中绕过 Lex 对响应的限制,而只需担心通道的限制。
友情警告:我相信亚马逊在 Lex 中设置了这些限制,以阻止聊天机器人开发人员向用户发送垃圾邮件,当您说“我每 5 分钟向用户发送一次回复”时,听起来肯定会变成垃圾邮件。所以要小心。
推荐阅读
- javascript - WooCommerce 运费计算器查询
- c# - 如何通过 TCP/IP C# 同时发送和接收数据
- python - 将类从另一个/文件夹导入视图,django
- cassandra - Cassandra CAS WHERE 和 IF 的区别
- java - 元字符的java 8正则表达式
- php - 带标签的 Codeiginiter CRUD
- c - 如何使用c从csv文件中获取具有精确数据的特定行?
- excel - 在excel中对带有空格的列进行排序
- streaming - 访问动态变化的 Apache Flink 中的每个键状态存储
- three.js - 如何解决来自 npm threejs-full 的 TextGeometry 和来自 Forge Autodesk 查看器的 ExtrudeGeometry 之间的冲突问题