在DialogFlow中重置或覆盖上下文的生命周期

时间:2017-10-31 08:31:15

标签: node.js actions-on-google api-ai dialogflow

我尝试使用npm包actions-on-google中的ApiAi类来管理我的Google智能助理代理的上下文(在DialogFlow中)。

问题在于: 如何使用npm包重置生命周期/删除上下文?

我可以轻松设置新上下文的生命周期,并且有效。

然而:

  1. 如何删除上下文?
  2. 将上下文设置为其他数字似乎不起作用。也就是说,如果我设置app.setContext('myContext',10)然后,2意图稍后,当8中的生命周期再次调用app.setContext('myContext',10)时,在下一个意图中,生命仍然是{{1} }。如果我可以回答(1)并删除上下文,我只需将其删除并重新设置。

4 个答案:

答案 0 :(得分:1)

我认为没有办法删除或覆盖上下文的持续时间。相反,如果您知道特定上下文在某个点上不能处于活动状态,请设置一个持续1或2圈的上下文,并在每个回合后执行此操作。这也可以让您更好地控制对话,因此您不会拥有持续10轮的上下文,而您突然不再需要这些内容。

答案 1 :(得分:1)

要删除上下文的生命周期,只需将其设置为ZERO或0,如app.setContext('your_context',0)
请务必在致电app.askapp.tell

之前执行此操作

如果不使用客户端,您可以编写一个简单设置的函数 this.contexts_[your_context] = {}

第一个选择肯定对我有用。我没有尝试过第二种选择。尝试查看您是否未在Dialogflow中进行设置。此外,您可以删除webhook中的上下文设置,并在Dialogflow中将生命周期设置为0。这将在您的上下文中添加一行(如已弃用的方法)。

答案 2 :(得分:0)

我知道这个问题已经很老了,至少已经足够老了,所以我们现在有了v2 API和库检修,所以无论如何我都会用今天的解决方案来回答:)。

1-要删除上下文,可以使用Node.js library reference docs上指定的conv.contexts.delete('context1');

2-如果conv.contexts.set('context1', 1);没有更改上下文的生命周期,那么您可以轻松地删除它并通过这两个调用重新创建它。

答案 3 :(得分:0)

我的经验是您不能覆盖上下文数据。 不过,您可以创建一个新的上下文:

stringi::stri_subset_regex(emails, '@.*\\.edu$')