You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Node-RED中Watson Assistant节点的$user变量赋值

Node-RED Watson Assistant节点$user变量赋值解决方案

核心问题原因

你当前直接传入字符串格式的payload,Watson Assistant节点无法识别单独的上下文变量字段,需要先重构输入结构。

具体解决步骤

    1. 在Watson Assistant节点上游新增一个Function节点,用于转换输入结构:
// 此处以v1版本API为例,v2版本适配代码见下方排查点
// 原字符串输入默认存在msg.payload中
// 请将msg.username替换为你实际存储用户名的变量字段
msg.payload = {
    input: {
        text: msg.payload.toString()
    },
    context: {
        user: msg.username
    }
}
return msg;
    1. 打开Watson Assistant节点的配置面板,确认Context选项设置为Merge with msg.context,不要勾选Clear context相关配置,避免传入的变量被清空。
    1. 在Watson Assistant节点下游新增Debug节点,设置输出完整msg对象,触发一次请求后检查msg.context字段下是否存在user键,确认值为目标用户名即可。

常见问题排查

  • 变量名大小写敏感:确认你在自研机器人中配置的变量名和Function节点中传入的字段名完全一致,$user对应的上下文字段必须是小写user,不要写错为User或USER。
  • v2版本API适配:如果你使用的是Watson Assistant v2 API节点,需要调整Function节点的结构:
// Watson Assistant v2 API适配代码
msg.payload = {
    input: {
        text: msg.payload.toString()
    },
    context: {
        skills: {
            "main skill": { // 替换为你自己的Watson Assistant技能名称
                user_defined: {
                    user: msg.username
                }
            }
        }
    }
}
return msg;
  • 变量来源校验:如果赋值还是为空,单独给Function节点加Debug节点,确认你用于赋值的用户名字段(比如上面示例的msg.username)确实有值,不是空值或undefined。

内容的提问来源于stack exchange,提问作者Wellinton Neves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:00