Dialogflow es 意图-对话流之间的全局变量或上下文

Dialogflow es 意图-对话流之间的全局变量或上下文,dialogflow-es,Dialogflow Es,我是Dialogflow的新手,试图弄清楚上下文和不同的意图 基本上,我的需要是能够在有或没有上下文的情况下触发相同的意图。但它似乎是有或没有,但不在两者之间 以下是我希望能够做到的: 想象一个用户询问某个特定地区的活动,我们可以给他一个回答:“不要错过这个周末魁北克的XYZ节!” 之后,用户询问天气:“这个周末天气怎么样?” 我希望能够给他魁北克的答案,因为事件就在那里,作为人类,我们会理解第二个问题是关于第一个问题的 在EventIntent中将上下文设置为输出上下文,在WeatherInt

我是Dialogflow的新手,试图弄清楚上下文和不同的意图

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

以下是我希望能够做到的:

想象一个用户询问某个特定地区的活动,我们可以给他一个回答:“不要错过这个周末魁北克的XYZ节!”

之后,用户询问天气:“这个周末天气怎么样?”

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

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


如何管理这一点?

您使用上下文的方法是正确的,但是您缺少如何使用输入上下文

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

因此,您可以通过设置输出上下文(在意图描述中,或者更好地在webhook中)来设置位置参数。然后为您的“EventIntent”和“WeatherIntent”使用短语,它们都接受(可选)位置参数,而不是。在您的实践中,您可以使用如下逻辑:

  • 如果location参数来自短语,则返回基于它的答案,并将其保存在上下文中以供将来使用
  • 否则,请尝试从上下文中获取位置并基于该位置返回答案
  • 如果你根本找不到一个位置——询问一下,然后根据回答返回答案