如何通过WhatsApp API回复特定消息(Node.js环境)
回复特定WhatsApp消息的实现方案(Node.js)
功能支持说明
WhatsApp API(含官方Business API及第三方封装库)完全支持回复特定收到的消息,核心逻辑是通过消息的唯一ID关联上下文,实现精准回复。
通用实现步骤
- 监听消息接收事件,捕获完整的消息对象,提取
消息ID(官方API称wamid,第三方库多称id)、发送方号码等关键字段 - 根据业务规则判断是否触发回复(如匹配关键词、特定发送人等)
- 调用消息发送接口,在请求参数中传入目标消息的
回复ID以关联原消息,同时指定接收方号码与回复内容
代码示例
场景1:使用官方WhatsApp Business API(REST方式)
假设已完成API密钥身份验证,收到消息后执行回复的代码如下:
const axios = require('axios'); // 模拟收到的消息(实际从webhook或消息监听中获取) const incomingMessage = { wamid: "ABGGHJ12345...", // 原消息的唯一标识ID from: "1234567890", // 发送方号码(带国家码,无+号) text: "需要回复的触发消息内容" }; // 发送回复的函数 async function replyToMessage() { try { const response = await axios.post( 'https://graph.facebook.com/v18.0/你的企业电话号码ID/messages', { messaging_product: "whatsapp", recipient_type: "individual", to: incomingMessage.from, context: { message_id: incomingMessage.wamid // 关键:关联要回复的原消息ID }, text: { body: "这是针对你刚才消息的专属回复" } }, { headers: { 'Authorization': 'Bearer 你的API密钥', 'Content-Type': 'application/json' } } ); console.log("回复发送成功:", response.data); } catch (error) { console.error("回复失败:", error.response.data); } } // 触发回复(可根据业务逻辑在收到消息时自动调用) replyToMessage();
场景2:使用第三方封装库(以whatsapp-web.js为例)
若你的基础配置基于whatsapp-web.js,代码实现更简洁:
const { Client } = require('whatsapp-web.js'); const client = new Client(); client.on('message', async (msg) => { // 示例:匹配关键词后自动回复原消息 if (msg.body.toLowerCase().includes("查询订单")) { // 直接调用msg.reply方法,自动关联原消息上下文 await msg.reply("请提供你的订单编号,我将为你查询详情~"); console.log("已回复消息,原消息ID:", msg.id._serialized); } }); client.initialize();
常见问题排查
- 确认
message_id(或wamid)传递正确:原消息ID必须完整,且官方API中消息ID有效期为24小时 - 权限校验:确保API密钥/账号拥有发送消息权限,官方API需确认目标号码在白名单内
- 格式合规:发送请求时
messaging_product必须设为whatsapp,接收方号码需带国家码且无特殊字符
内容的提问来源于stack exchange,提问作者Cristian Sepulveda
相关产品推荐
相关产品推荐

