Intent-Dialogflow之间的全局变量或上下文



我是Dialogflow的新手,正在努力了解上下文和不同的意图。

基本上,我的需求是能够在有或没有上下文的情况下触发相同的意图。但它似乎是有或没有,但不是介于两者之间。

以下是我想做的事情:

想象一下,一个用户询问特定地区的事件,然后我们可以给他一个回答:";不要错过本周末在魁北克举行的XYZ音乐节&";。

然后,紧接着,用户询问天气:";这个周末天气怎么样">

我希望能够给他魁北克的答案,因为事件就在那里,作为人类,我们会理解第二个问题是关于第一个问题的。

在EventIntent中将上下文设置为Output context,在WeatherIntent中将Input context设置为Input context时,这是可能的。但相反的情况可能会发生。用户可以询问特定地区的天气,然后询问那里的事件。如果我在Weather中设置了输入上下文,那么如果没有该上下文,它将永远不会被触发。如果我不设置上下文,那么它将再次请求区域。

我该如何处理?

使用上下文是正确的,但缺少输入上下文的使用方式。

在Intent上设置输入上下文意味着只有在上下文有效时才能触发Intent。然而,如果没有列出输入上下文,那么它在任何时候都是有效的,并且只要上下文有效(即,只要它没有超时(,您仍然可以使用它。

因此,您可以通过设置输出上下文来设置位置参数(可以在Intent描述中,也可以更好地在webhook中(。然后为你的";EventIntent";以及";WeatherIntent";两者都采用(可选(位置参数而不采用。在你的实现中,你可能会使用这样的逻辑:

  1. 如果位置参数来自短语,则返回基于该短语的答案,并将其保存在上下文中以备将来使用
  2. 否则,请尝试从上下文中获取位置,并在此基础上返回答案
  3. 如果你根本找不到位置,那就去问,然后根据答案返回答案

最新更新