来自lex中单个lamda函数的多个return语句

时间:2018-10-30 13:30:12

标签: azure aws-lambda aws-lex

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

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

var myVar = setInterval(myTimer, 300000);

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

如何使用Lambda函数在AWS lex中实现此目标?

1 个答案:

答案 0 :(得分:0)

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


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


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


实际上不需要在用户和Lex之间使用Lambda函数,但是无论哪种方式,它都需要使用Lex Runtime Service APIPostContentPostText来传递{{ 1}}到Lex。

这是一个关于如何使用Lambda的亚马逊博客,他们称其为频道和Lex之间的“预处理层”:Integrate Your Amazon Lex Bot with Any Messaging Service

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


在设置了任何类型的“预处理”层之后,您就可以在其中绕过Lex在响应方面的限制,而不必担心通道的限制。

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