azure - lex 中单个 lambda 函数的多个返回语句

标签 azure aws-lambda aws-lex

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

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

var myVar = setInterval(myTimer, 300000);

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

如何使用 lambda 函数在 aws lex 中实现此目的?

最佳答案

您将无法触发来自“Lex 后”Lambda 的第二个响应,即 Lex 之后的 Lambda 函数。您需要一个“Lex 之前”的 Lambda 函数,它将用户输入传递给 Lex 并将 Lex 响应返回给用户。

<小时/>

这是 Lex 机器人的基本设置: enter image description here

<小时/>

但这就是您需要的设置方式: enter image description here

<小时/>

它实际上不需要是用户和 Lex 之间的 Lambda 函数,但无论如何,它都需要使用 Lex Runtime Service APIPostContentPostTextuserInput 传递给 Lex。

这是一个 Amazon 博客,介绍了他们如何以这种方式使用 Lambda,即 channel 和 Lex 之间的“预处理层”:Integrate Your Amazon Lex Bot with Any Messaging Service

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

<小时/>

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

友好警告:我相信 Amazon 在 Lex 中设置了这些限制,以阻止聊天机器人开发人员向用户发送垃圾邮件,并且当您说“我每 5 分钟后向user”,听起来确实可能会成为垃圾邮件。所以要小心。

关于azure - lex 中单个 lambda 函数的多个返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065446/

相关文章:

azure - ADF 数据流中的返回计数

amazon-web-services - 如何通过 S3 事件或 AWS Lambda 触发 Glue ETL Pyspark 作业?

javascript - 在将文件上传到 S3 之前重命名文件

azure - 使用 terraform 输出恢复 Azure ARm 模板的输出值

Azure Devops 组织代码部署不显示组织

node.js - AWS SAM : Could not install from function as it does not contain a package. json 文件

python - 将组(多条)消息从 Lambda 发送到 Lex

amazon-lex - AWS Lex AlphaNumeric 内置插槽类型不接受字符串

aws-lambda - Lex 对 Lambda 的调用被终止

azure - TableController 和 Odata 查询