outputContexts有时不会出现在queryResult中

时间:2019-02-15 09:02:06

标签: dialogflow

我在Dialogflow v2上有一个代理项目。我的代码通过Web API评估代理(我使用不带任何dialogflow库的python代码)。

要检查实体的原始值,请使用outputContexts函数在queryResult中使用detectIntent

但是我发现queryResult有时不包含outputContexts。结果取决于输入文本的意图。我在代理中使用自定义实体和系统实体。而且我发现sys.date实体有时不通过Web API返回outputContexts。 但是,当我通过Dialogflow GUI控制台测试相同的输入文本时,它将返回outputContexts

https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/v2beta1/DetectIntentResponse?hl=ja

  

outputContexts []:对象(上下文)
  输出上下文的集合。如果适用,   outputContexts.parameters包含名称为.original的条目,其中包含原始参数值。   查询。

更新1

我发现outputContexts仅在对话框中缺少某些必需插槽时才会显示。例如,intentA包含两个必需的插槽。如果我输入的文本仅包含一个槽,则响应显示outputContexts,如果文本包含两个槽(所有槽,即allRequiredParamsPresent=True),则响应不显示outputContexts。真的吗?很难从Dialogflow文档中阅读此规范。

更新2

我找到了一个不错的解决方案,可以从以下线程获取原始实体值。为了获得原始值,我需要准备特殊实体以从任意插槽中提取original数据。 original适用于系统和自定义实体。

dialogflow ambiguity with same synonyms for different entity values

1 个答案:

答案 0 :(得分:0)

根据this document,如果启用webhook slot filling,则对于每个缺少的必需参数,您将收到带有每个参数的请求。另外,为了补充响应you referenced,不再需要在参数outputContext parameters will include it中添加其他original实体。

以下是参数示例:

Paramters 和outputContext:

Context