在意图实现后(使用Lambda)如何使AWS Lex bot提示进行跟进?

时间:2019-01-23 05:20:45

标签: amazon-web-services aws-lex

即使在“意图”的“响应”部分中设置了漫游器,该漫游器也不显示后续提示。如果将“ ReturnParametersToClient”选择为“实现”选项,则此方法有效。当实现更改为AWS Lambda函数时,它不再显示后续问题。

例如: 如果我的用户输入

3x10

我有一个Lambda函数来执行此计算,并以Lex期望的JSON格式返回结果。因此它显示

30

然后,它应该提出后续问题

Would you like me to do another calculation?

用户可以响应的

No

据我了解,“意图”编辑器页面中的“响应”部分正是我应该能够配置问题“您是否希望我进行另一次计算?”的地方。以及另一条消息(如果用户回答否定,则在“等待用户答复”部分。

1 个答案:

答案 0 :(得分:0)

是的,一切都按预期进行。

您可以做任何一个。
满足意图后,可以(1)在Lex控制台中设置响应。
或(2)在满足意图时在Lambda中建立自己的响应。

使用Lambda函数可让您更好地控制漫游器,并以更动态和量身定制的消息进行响应。

因此,如果您要切换为使用Lambda,则必须在实现目标时自行创建该响应。对于这种类型的是/否问题,您可能需要使用confirmIntent

签出Lambda-Lex Response Format(确认有关页面中途停留的意图)

  

ConfirmIntent-通知Amazon Lex,要求用户提供是或否的答案以确认或拒绝当前意图。

发送该响应作为ConfirmIntent将类似于以下内容:

"dialogAction": {
    "type": "ConfirmIntent",
    "message": {
      "contentType": "PlainText",
      "content": "Would you like me to do another calculation?"
    },
    "intentName": "intent-name",
    "slots": {
       "slot-name": "value",
       "slot-name": "value",
       "slot-name": "value"  
   },
}

您的Lambda然后需要处理该问题的答案。
用户的答案将返回相同的意图,并且confirmationStatus将是:
None-未使用confirmIntent
Confirmed-用户对ConfirmIntent问题说“是”
Denied-用户对ConfirmIntent问题说“否”

在页面顶部附近的上方找到相同的链接,以获取Lex到Lambda输入事件的格式。


只是一个提示:

您可以只用close消息来实现意图,并向用户询问类似“我还能为您提供什么帮助?”之类的东西。

然后,用户可以立即询问另一个计算,而不必在每个计算问题之前都说是或否。