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

Bots Dialogflow:有没有办法防止触发第一级意图?,bots,dialogflow-es,actions-on-google,dialogflow-es-fulfillment,Bots,Dialogflow Es,Actions On Google,Dialogflow Es Fulfillment,我有一套可以触发的意图 开灯 关灯 关门 开门 对于每个意图,我都有一套后续意图,例如 开灯 选择光源(输入上下文后续照明) 选择光源回退(输入上下文后续照明) 我想确保如果用户触发了打开灯的意图,并且我问他你想打开哪个光源?他可以触发选择光源,或者如果说话不匹配,则触发回退意图 我面临的问题是:如果用户在打开指示灯对话框中说关闭指示灯,则不会触发回退意图,而是用户触发更高阶的意图关闭指示灯。我想防止这种情况发生。有办法做到这一点吗 我将输入上下文用于回退意图,但显然,高阶意图中的高

我有一套可以触发的意图

  • 开灯
  • 关灯
  • 关门
  • 开门
对于每个意图,我都有一套后续意图,例如

  • 开灯
    • 选择光源(输入上下文
      后续照明
    • 选择光源回退(输入上下文
      后续照明
我想确保如果用户触发了
打开灯的意图,并且我问他
你想打开哪个光源?
他可以触发
选择光源
,或者如果说话不匹配,则触发回退意图

我面临的问题是:如果用户在
打开指示灯
对话框中说
关闭指示灯
,则不会触发回退意图,而是用户触发更高阶的意图
关闭指示灯
。我想防止这种情况发生。有办法做到这一点吗


我将输入上下文用于回退意图,但显然,高阶意图中的高置信度会导致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被设置为故意以这种方式工作,它试图找到在整个上下文中最有意义的匹配项,而不是在默认情况下强迫用户走狭窄的道路

但是,如果你真的想按你的要求去做,你可以尝试以下方法:

  • 为用户当前期望的所有根级别意图设置一个输入上下文(在本例中,我们称之为
    root
  • 当识别根级别的意图时,将其输出上下文设置为0,这意味着它们都不匹配
  • 对于任何后续意图的输出上下文,请再次设置
    root
    上下文,以便只能识别根级别的意图

谢谢你的提醒。我完全理解你来自哪里。也许我选择的例子是泛型的,但假设你在一个更重要的对话框中。e、 g.设置并重复pin。在所有其他对话框中,您希望能够更改回顶级意图,但在此特定对话框中,不应允许更改,例如,只有“取消”才能停止对话。我想我将尝试检查我的实现端点中的当前上下文,并手动重定向到另一个意图。但实际上我可能只是遵循你的指导方针!谢谢