Dialogflow:有没有办法防止一级意图被触发?

Dialogflow: is there a way to prevent first-level intents to get triggered?

我有一组可以触发的意图。

对于每个意图,我都有一组后续意图,例如

我想确保如果用户触发了 turn light on 意图,我问他 which light source do you want to turn on? 他可以触发 select light source 或者如果话语不匹配回退意图被触发。

我面临的问题:如果用户在 turn light on 对话框中说 turn light off,则不会触发后备意图,但用户会触发更高阶的意图 turn light off 反而。我想防止这种情况发生。有办法吗?

我正在使用回退意图的输入上下文,但显然对高阶意图的高置信度导致 Dialogflow 改为触发高阶意图。

首先 - 你确定要这个吗?

想象一下以下场景:

User:  Turn the light on
Agent: Which light do you want to turn on?
User:  Oh, no, I meant turn it off

这不是一次可能发生的异常对话。如果用户改变主意,或者意识到他们的意思是别的,他们应该能够这样做。一个好的 VUI 设计原则是用户可以随时从任何方向进行对话,你应该尽可能地允许他们这样做。

Dialogflow 被设置为通过尝试找到在整体上下文中最有意义的匹配项来有意以这种方式工作,而不是默认情况下强迫用户走狭窄的路径。

但是,如果你真的想按照你的要求去做,你可以尝试这样的事情:

  • 为您今天期望用户的所有根级别 Intent 设置一个输入上下文(在本例中我们称之为 root
  • 当根级 Intent 被识别时,将其输出上下文设置 root 为 0 的生命周期,这意味着它们中的 none 将匹配。
  • 对于任何 Followup Intent 的输出上下文,再次设置 root 上下文,因此只能识别根级 Intent。