1

我正在构建一个包含 Slot Filling 方法的机器人,并且我想在向机器人输入退出短语后从 webhook 提供丰富的消息。

我正在构建一个包含 Slot Filling 方法的机器人。我通过链接https://dialogflow.com/docs/concepts/slot-filling#canceling_slot_filling_dialog的文档中的“取消插槽填充对话框”遇到了

当我尝试它时,我发现不仅文档中提到的话语,还有更多类似的退出短语。例如:没有,中止。

我找不到任何意图/设置来配置/更改此行为。

  1. 有没有办法找出所有的退出短语?
  2. 有没有办法更改用户说出退出短语时显示的输出消息?
  3. 在用户说出退出短语以提供自定义的丰富响应后,我们可以连接 webhook 吗?

附件是我在插槽填充时对机器人说退出短语时得到的响应

4

1 回答 1

0

据我所知,没有内置的方法可以做到这一点,但是您可以使用 3 来实现 2 的 hacky 方式。我假设您熟悉 Dialogflow webhook 请求和响应的一般工作方式。如果没有,请看这里。

它基本上归结为检查 Dialogflow 是否将用它的股票取消短语之一做出响应,然后用你自己的一个替换它。

确保“启用 webhook 调用以填充插槽”已打开。当用户键入槽填充退出短语时,Dialogflow 发送的 webhook JSON 仍将具有与您正在使用的意图相同的 intent.name 属性。因此,您可以在 switch 语句中捕捉到该意图。

然后在里面你可以简单地使用'if'语句来检查 webhook 请求的“FulfillmentText”属性,看看它是否是 Dialogflow 用来响应取消的任何常用短语,例如“Sure,cancelling”或“No问题,取消”。我不知道有多少,但我认为不会太多,你必须测试才能找到它们。

如果是这些短语中的任何一个,那么您可以通过将您自己的 FulfillmentText 设置为您想要的任何内容返回对 webhook 的响应来更改 Dialogflow 对用户说的内容(请参阅上面的链接,了解 JSON 响应的结构)。

这种方法并不完全理想,因为 Dialogflow 使用的股票退出响应可能会发生变化,而且很难知道您是否已经全部找到它们,但在 Dialogflow 变得更加灵活之前,它应该是一种解决方法。

还复制了我之前对问题 1 的评论,因为它似乎有效(感谢错字更正):

我怀疑取消短语列表与预构建的 smalltalk 代理的“取消”意图中的列表相同。要找到它,请转到 Prebuilt Agents -> Small Talk -> Import。然后导航到该代理并找到意图“smalltalk.confirmation.cancel”以查看短语列表。

希望这可以帮助。

于 2019-01-31T16:22:34.463 回答