新手Node-RED调用Telegram接口遇msg.payload.type为空错误求助
解决Node-RED Telegram节点报错“msg.payload.type is empty”(MQTT数据场景)
问题原因
你当前的代码直接在原msg.payload上添加属性,但MQTT节点输出的msg.payload通常是基础类型(数字/纯字符串),这类类型无法直接添加type/chatId等属性,导致Telegram节点识别不到必填的type字段。而inject节点因为你设置的输出可能是对象类型,所以能临时正常工作。
另外,你代码里用了中文引号(“”),这会导致语法错误,必须换成英文引号("")。
修复后的Function节点代码
// 提取MQTT传来的温度数据,兼容数字/字符串类型 var tempValue = msg.payload; // 拼接温度单位 var tempContent = tempValue + " °C"; // 重新构造符合Telegram节点要求的payload对象 msg.payload = { type: "message", chatId: "xxxxxxxxxx", // 替换成你的实际ChatID content: tempContent }; return msg;
额外检查项
- 在MQTT节点和Function节点之间加一个Debug节点,查看
msg.payload的实际类型(数字/字符串/JSON),确保tempValue能正确读取 - 确认Telegram节点已正确配置Bot Token,排除其他隐藏问题
内容的提问来源于stack exchange,提问作者Shaun Fisher
相关产品推荐
相关产品推荐

