IBM Watson Assistant:在 JSON 编辑器中的何处设置 output.user_defined 对象?

IBM Watson Assistant: Where to set output.user_defined object in JSON editor?

IBM Watson Assistant apidoc v2 表示 output.user_defined 为

"An object containing any custom properties included in the response. This object includes any arbitrary properties defined in the dialog JSON editor as part of the dialog node output."

但它没有说明在 JSON 编辑器中设置它的位置。是输出不足吗?

{
  "output": {
    "text": {
      "values": [],
      "selection_policy": "sequential"
    },
    "xxx": "aaa"
  },
  "context": {}
}

无法在 JSON 编辑器中将其设置为根级别,因为编辑器会抱怨只允许输出、output.generic、操作、上下文。

我应该把它放在 JSON 编辑器的什么地方,以便它出现在 output.user_defined 中以响应 /message REST 调用?

您可以将其作为 user_defined 移至 output 部分。这是我尝试过的:

  "output": {
    "text": {
      "values": [],
      "selection_policy": "sequential"
    },
    "user_defined": {
      "test": "henrik"
    }
  }

然后我用我test tool的V2API来验证。以下是报告方式的相关部分:

  "output": {
    "generic": [
      {
        "text": "Ok, checking the event information.", 
        "response_type": "text"
      }, 
      {
        "text": "ok.", 
        "response_type": "text"
      }
    ], 
    "debug": {...
    }, 
    "intents": [...
    ], 
    "user_defined": {
      "test": "henrik"
    }, 
    "entities": [
      {...

另请参阅 the IBM Watson Assistan documentation with some more information on the response JSON 中的此部分。

如@data_henrik 所述,通过 JSON 编辑器添加到响应输出部分的额外 json 元素被移动到响应的 user_defined 部分V2 输出响应。

这些 "extra" json 元素不必标记为 user_defined。在我自己的例子中,我的对话响应中有 output.extra 个元素。在 V1 中它们保持 output.extra,但在 V2 中它们变为 output.user_defined.extra。
由于您刚刚开始,最好保持一致并使用 output.user_defined 作为起点。