Node Red中如何在到达Watson Assistant V2节点前传入上下文变量
解决步骤
- 新增Function节点做参数转换
在Telegram消息触发节点和Watson Assistant节点之间插入一个Function节点,用于将Telegram侧的用户信息合并到Watson可识别的请求参数中,节点内代码如下:
// 提取Telegram返回的用户first_name,若你的节点输出路径不同可自行调整 const firstName = msg.payload.from.first_name; // 重构发往Watson节点的payload格式 msg.payload = { input: { text: msg.payload.text // 保留用户原始发送的消息内容 }, context: { // 变量名需和Watson中定义的$username完全一致,大小写敏感 username: firstName } } return msg;
- 核对Watson侧变量配置
- 进入Watson Assistant对应技能的上下文变量设置页面,确认已创建会话级别的
username变量 - 检查响应内容中引用变量的格式为
$username,无拼写错误
- 部署测试
保存Function节点配置后,部署整个Node Red流程,重新发送消息即可看到Watson返回内容中已正确填充用户的first_name。
注意:如果不确定Telegram节点输出的用户信息路径,可以在Telegram节点后接Debug节点打印完整
msg对象,确认first_name的取值路径后替换代码中的对应部分即可。
内容的提问来源于stack exchange,提问作者W-illian
相关产品推荐
相关产品推荐

