ibm-cloud - 无法通过 node-red 更新 watson 对话服务中的对话节点
问题描述
在 ibm 云中的节点红色中。我能够使用 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 对象,类似于它返回的格式。我也尝试过,但是当它不起作用时,我尝试了这种方法。
任何意见,将不胜感激。
提前致谢。
解决方案
这是因为 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"
}
我需要使用此信息修改节点信息选项卡。
推荐阅读
- angular - 无法在被动事件侦听器调用中阻止默认值 - 在 mapbox-gl 地图中滚动或移动时
- java - Cumulocity MQTT 操作状态不会改变
- highcharts - 将自定义 x 轴标签添加到 highstock 图表
- php - PHP PDO,请求用户名
- javascript - 标头问题中的 Ngx-datatable 过滤器
- javascript - 当 Ng-table(angularJS) 的数据集中有多个字段时,如何过滤少数特定列中的搜索结果?
- autolayout - 如何保持 UIIMage 纵横比和侧边距宽度并防止高度超过父视图高度
- mongodb - mongodb查询的意外结果?
- java - 如何在 Java 列表中重用 Hibernate Criteria?
- c# - 提供的类型必须是枚举