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

使用Node.js+Express调用WhatsApp Cloud API发消息遇read ECONNRESET错误求助

解决WhatsApp Cloud API调用时的read ECONNRESET错误

我用Node.js的Express框架开发一个需要发送WhatsApp消息的项目,这是第一次接触WhatsApp Cloud API,虽然已经读了官方文档并写了实现代码,但运行时遇到了read ECONNRESET错误,代码如下:

axios({
    method: 'POST',
    url: 'https://graph.facebook.com/v14.0/Phone Number ID/messages',
    data: {
        message_product: 'whatsapp',
        to: 'client number',
        type: "template",
        template: {
            name: "hello_world",
            language: {
                code: "en_US"
            }
        },
    },
    headers: {
        "Authorization": "Bearer  + token",
        "Content-Type": "application/json"
    }
}).then(result => {
    console.log(result)
}).catch(err => {
    console.log(err.message)
})

问题分析与修复方案

read ECONNRESET一般是请求连接被对方重置导致的,结合代码来看,主要有几个明显问题需要修正:

  1. URL占位符未替换
    代码里的Phone Number ID是占位符,必须替换成Meta后台里实际的WhatsApp电话号码ID(一串数字),比如10XXXXXXXXX。

  2. Authorization头语法错误
    头里的"Bearer + token"写法错误,正确的应该是把Bearer 和实际访问令牌拼接,比如用模板字符串:

    "Authorization": `Bearer ${yourAccessToken}`
    

    或者字符串拼接:

    "Authorization": "Bearer " + yourAccessToken
    

    注意Bearer后面有一个空格,令牌要确保有效且拥有发送消息的权限。

  3. 接收号码格式错误
    to字段的client number需要替换成带国家码的完整手机号,比如+12345678900;如果是沙箱环境,这个号码必须是你在Meta后台添加的已验证测试号码。

  4. API版本过旧
    v14.0版本较老,Meta可能已停止对旧版本的部分支持,建议升级到较新的版本(比如v18.0),URL改成https://graph.facebook.com/v18.0/你的号码ID/messages。

额外检查点

  • 确认网络可以正常访问graph.facebook.com,没有被防火墙或代理拦截;
  • 检查hello_world模板是否在你的WhatsApp业务账户中存在,且语言代码en_US正确;
  • 确保访问令牌未过期,且拥有whatsapp_business_messaging相关权限。

修复后的示例代码:

const yourPhoneNumberId = '10XXXXXXXXX'; // 替换成实际的号码ID
const yourAccessToken = 'EAABXXXXXXXXX'; // 替换成实际的访问令牌
const clientPhoneNumber = '+12345678900'; // 替换成实际的客户号码

axios({
    method: 'POST',
    url: `https://graph.facebook.com/v18.0/${yourPhoneNumberId}/messages`,
    data: {
        message_product: 'whatsapp',
        to: clientPhoneNumber,
        type: "template",
        template: {
            name: "hello_world",
            language: {
                code: "en_US"
            }
        }
    },
    headers: {
        "Authorization": `Bearer ${yourAccessToken}`,
        "Content-Type": "application/json"
    }
}).then(result => {
    console.log('消息发送成功:', result.data)
}).catch(err => {
    console.error('发送失败:', err.response?.data || err.message)
})

内容的提问来源于stack exchange,提问作者djibril mugisho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:51:04