据我所知,没有内置的方法可以做到这一点,但是您可以使用 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”以查看短语列表。
希望这可以帮助。