在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);
});
答案 0 :(得分:0)
对于给定的对话,上下文似乎用于将信息从一种意图传送到另一种意图。参见their documentation here。
我在API方面做了一些尝试,即使在后续request.queryParams上未设置上下文的情况下,我仍然能够保持对话。经过进一步的实验,这似乎可能是由于使用持有隐式上下文(或“最后上下文”?)的会话标识符所致。这只是猜测,但就我个人而言,我会坚持使用文档,并始终为任何后续请求提供响应中返回的上下文。
我正在尝试证明这一点,但是我认为这是因为一个会话一次可以包含多个上下文。
更新:
深入研究参考文献,确实发现了以下有用的解释:https://dialogflow.com/docs/contexts/input-output-contexts#input_contexts
输入上下文
当添加到意图中时,输入上下文会增加在该上下文处于活动状态时匹配该意图的可能性。
当用户回答与定义的训练短语相似的内容时,意图会被匹配,但会话所关联的上下文会强制意图被匹配。