首页 > 解决方案 > 接收用户输入的评论

问题描述

我将 Node.js 和Dialogflow用于小型 Google Action。

在询问用户是否想发表评论后,我试图接收用户的所有输入,如果用户想发表评论,用户所说的所有内容都必须存储在我的数据库中。

问题是,在询问他们是否要留言后,我的下一个输入被检测为后备意图。

我试图制作一个自定义事件,但我无法让它工作。

关于如何接收评论并且不属于后备意图的任何建议?

标签: node.jsdialogflow-esactions-on-google

解决方案


简短的回答是——你不能。但是......有一些方法可以设置额外的后备意图,这些意图仅在您期望自由形式的评论时触发。我不确定您要对事件做什么,但这几乎肯定也不是正确的方法 - 事件不是用于用户对话输入,而是用于其他触发事物(GUI 触发器、无输入事件等) .

每当输入与其他 Intent 之一不匹配时,就会触发 Fallback Intent。由于您希望您的响应是自由格式的,默认情况下,它不能匹配任何其他内容。无法创建匹配的普通 Intent。

但是,您可以拥有多个基于context区分的 Fallback Intent 。

这样,当您要求用户提供评论时,您可以设置“评论”上下文并拥有一个以“评论”作为输入上下文的后备意图。要以这种方式创建后备意图,请选择三点菜单图标

在此处输入图像描述

然后“创建后备意图”

在此处输入图像描述

为 Fallback Intent 输入一个名称,添加“comment”(或您选择的任何上下文)作为输入上下文,并在输出上下文中将生命周期更改为 0(以便在用户完成后清除上下文)。不要忘记打开 Fulfillment。

在此处输入图像描述

然后,您可以获取用户在 webhook 中所说的全文并将其保存到数据库中。

然而,一个警告 - 助手通常不希望用户说话很长时间,因此它可能会切断他们的评论,或者如果他们暂停,甚至是短暂的。


推荐阅读