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

基于Twilio与Node.js的WhatsApp机器人:无法回复消息问题

修复Twilio WhatsApp机器人无法回复消息的问题

看起来你的机器人已经能发单向消息,但卡在接收用户消息后回复这一步了,我帮你排查下核心问题和修复方案:

核心问题分析

你的代码里有两个关键问题导致无法正常回复:

  1. 没有向Twilio返回合法响应:Twilio调用你的Webhook后,需要你返回200状态码或Twiml响应,否则它会认为请求失败,不会完成后续流程,甚至会重试请求。
  2. 硬编码用户号码:你把to字段写死成了固定值,但实际应该从Twilio的请求参数中获取用户的真实号码(req.body.From),不然无法针对发起消息的用户回复。

修复后的完整代码

// 先确保正确初始化Twilio客户端
const twilio = require('twilio');
const client = twilio('YOUR_ACCOUNT_SID', 'YOUR_AUTH_TOKEN');
const express = require('express');
const app = express();

// 必须解析Twilio发送的表单数据(Twilio默认用x-www-form-urlencoded格式)
app.use(express.urlencoded({ extended: true }));

app.post('/message', (req, res) => {
  const incomingMessage = req.body.Body.trim().toLowerCase();
  const userPhoneNumber = req.body.From; // 从Twilio请求中获取用户的WhatsApp号码(自动带whatsapp:前缀)
  const twilioWhatsappNumber = 'whatsapp:+YOUR_TWILIO_NUMBER'; // 注意格式要带whatsapp:前缀

  if (incomingMessage === 'hello') {
    client.messages
      .create({
        body: 'Hello, how can I help you?',
        from: twilioWhatsappNumber,
        to: userPhoneNumber
      })
      .then((message) => {
        console.log(`回复消息成功,SID: ${message.sid}`);
        // 向Twilio返回200状态码,确认请求处理完成
        res.status(200).send('Message sent');
      })
      .catch((error) => {
        console.error('发送回复失败:', error);
        // 出错时也要返回状态码,避免Twilio重试
        res.status(500).send('Failed to send message');
      });
  } else {
    // 处理非"hello"的消息,同样需要返回响应
    res.status(200).send('Received message, no response configured');
  }
});

// 启动服务器,确保端口可访问
app.listen(3000, () => {
  console.log('Server running on port 3000');
});

额外检查点

  • Webhook配置:在Twilio控制台的WhatsApp号码设置中,把"当收到消息时"的Webhook URL设为你的公网可访问地址(比如用ngrok暴露本地端口),方法选择POST,格式选application/x-www-form-urlencoded。
  • 号码格式:所有WhatsApp号码必须带whatsapp:前缀,Twilio会自动在req.body.From中带上这个前缀,你直接用就行。
  • 依赖安装:确保已经安装了express和twilio包:npm install express twilio

内容的提问来源于stack exchange,提问作者yossi lerer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:05:18