为什么node.js dialogflow示例代码会将输出上下文复制到输入上下文?

时间:2018-10-08 16:10:08

标签: node.js dialogflow

detecting intents from text的示例代码中,node.js版本将响应输出上下文复制到下一个请求的请求输入上下文中,但是其他语言的示例则省略了这一部分。这种上下文复制有什么用?

无论如何,代理都应该为指定的lifespanCount请求保留上下文,所以我很难看到它的用途。还是仅旧的v1 API才需要某些东西,而不是当前的v2 API?

从上面链接的示例代码中提取:

// First query.
promise = sessionClient.detectIntent(request);

// and for the rest of the queries...
promise = promise.then(responses => {
  const response = responses[0];

  // Use output contexts as input contexts for the next query.
  request.queryParams = {
    contexts: response.queryResult.outputContexts,
  };

  return sessionClient.detectIntent(request);
});

1 个答案:

答案 0 :(得分:0)

对于给定的对话,上下文似乎用于将信息从一种意图传送到另一种意图。参见their documentation here

我在API方面做了一些尝试,即使在后续request.queryParams上未设置上下文的情况下,我仍然能够保持对话。经过进一步的实验,这似乎可能是由于使用持有隐式上下文(或“最后上下文”?)的会话标识符所致。这只是猜测,但就我个人而言,我会坚持使用文档,并始终为任何后续请求提供响应中返回的上下文。

我正在尝试证明这一点,但是我认为这是因为一个会话一次可以包含多个上下文。

更新:

深入研究参考文献,确实发现了以下有用的解释:https://dialogflow.com/docs/contexts/input-output-contexts#input_contexts

  

输入上下文

     

当添加到意图中时,输入上下文会增加在该上下文处于活动状态时匹配该意图的可能性。

     

当用户回答与定义的训练短语相似的内容时,意图会被匹配,但会话所关联的上下文会强制意图被匹配。