2

即使在 Intent 的“响应”部分中设置了后续提示,机器人也不会显示后续提示。如果选择“ReturnParametersToClient”作为“履行”选项,这将起作用。当实现更改为 AWS Lambda 函数时,它不再出现后续问题。

例如:如果我的用户输入

3x10

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

30

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

Would you like me to do another calculation?

用户可以响应的

No

据我了解,意图编辑器页面中的“响应”部分正是我应该能够配置问题“你想让我做另一个计算吗?”的地方。和另一条消息(如果用户回答是否定的,则在“等待用户回复”部分。

4

1 回答 1

1

是的,一切都按预期工作。

你可以做一个或另一个。
(1) 在实现意图时在 Lex 控制台中设置响应。
或者 (2) 在实现意图时在 Lambda 中构建您自己的响应。

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

因此,如果您改用 Lambda,则在实现意图时必须自己创建响应。您可能希望使用confirmIntent这种类型的是/否问题。

查看Lambda-Lex 响应格式(确认意图大约在页面的中间)

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- 未使用确认意图
Confirmed- 用户对 confirmIntent 问题说“是”
Denied- 用户对 ConfirmIntent 问题说“否”

查看页面顶部附近的相同链接,了解 Lex 到 Lambda 输入事件的格式。


只是一个提示:

您可以改为通过close消息来实现意图并询问用户“我还能如何帮助您?”

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

于 2019-01-24T08:10:00.270 回答