Dialogflow:有没有一种方法可以防止一级意图被触发?

时间:2020-01-31 17:30:12

标签: bots dialogflow-es actions-on-google dialogflow-es-fulfillment

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

  • 打开灯
  • 关灯
  • 关门
  • 开门

对于每种意图,我都有一套后续意图,例如

  • 打开灯
    • 选择光源(输入上下文light-on-followup
    • 选择光源后备(输入上下文light-on-followup

我想确保如果用户触发了turn light on的意图,并且我要问他which light source do you want to turn on?他可以触发select light source还是说的话与后备意图被触发。

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

我将输入上下文用于回退意图,但显然在较高阶意图中的高置信度会导致Dialogflow触发较高阶意图。

1 个答案:

答案 0 :(得分:2)

首先-您确定要吗?

想象一下以下情况:

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,这意味着它们都不匹配。
  • 对于任何后续意图的输出上下文,请再次设置root上下文,以便仅可以识别根级别的意图。