【问题标题】:Can't update dialog node in watson conversation service via node-red无法通过 node-red 更新 watson 对话服务中的对话节点
【发布时间】:2019-03-01 02:08:32
【问题描述】:

在 ibm 云中的 node-red 中。我能够使用 IBM Watson 节点“助理工作空间管理器”来检索特定的对话节点。但是,我无法使用相同的“助理工作区管理器”来更新对话节点。我不断收到错误消息“无效的请求正文”。

这不是凭据错误的问题,因为我对两个实例使用相同的凭据。

下面是我的函数模块中的代码,它将信息传递给我的“助理工作区管理器”节点,以便它可以更新我的 watson 对话工作区中的对话节点。

var uptime = msg.payload[1].d.uptime;
var message = "Server uptime is " + uptime + " seconds.";
msg.topic = "";
msg.dialog_node.output.generic[0].values[0].text = message;
msg.payload = msg.dialog_node;
return msg;

我确实将返回给我的对话节点与包含我想要注入的信息的消息结合起来,然后修改了有效负载(在尝试更新我的对话节点之前),使有效负载看起来与返回给我的对话节点(修改消息的文本除外)。

过去我已经成功地做到了这一点,通过手动格式化 msg.payload 对象,类似于它返回的格式。我也尝试过,但是当它不起作用时,我尝试了这种方法。

任何建议将不胜感激。

提前致谢。

【问题讨论】:

  • 也许您可以在调试节点中传递消息以查看此消息的属性,然后更改/设置正确的。

标签: ibm-cloud node-red watson-conversation


【解决方案1】:

这是因为 watson-developer-cloud 的底层 Node.JS SDK 已更新。 https://cloud.ibm.com/apidocs/assistant?code=node#update-dialog-node

您提供的 JSON 至少需要有一个带有 new_ 前缀的字段作为键。

所以在这个例子中,条件正在更新:

{
  "type":"standard",
  "title":"Entry Point For Up Down Commands",
  "output":{},
  "context":
    {
      "appl_action":"increase"
    },
  "next_step":
    {
      "behavior":"jump_to",
      "selector":"condition",
      "dialog_node":"node_11_1467233013716"
    },
  "new_conditions":"#turn_up",
  "dialog_node":"Entry Point For Up Down Commands",
  "previous_sibling":"node_1_1487022155950"
}

我需要使用此信息修改节点信息选项卡。

【讨论】:

  • 你是一个学者,一个绅士。非常感谢您的快速回复。这是正确的答案。对于我的问题,我只需将:“output”更改为“new_output”,因为这是我想要更新的内容。我没有从返回给我的 dialog_node 中提取,而是简单地在我的函数中手动构建了 json。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多