返回顶部
w

whatsapp-cloud-api-referenceWhatsApp云API参考

Use when implementing WhatsApp messaging via Meta Cloud API, or diagnosing failures like message not delivered, template rejected, webhook issues, phone not registered, token errors, rate limiting, 24-hour window violations, quality rating drops, or setup mistakes on the WhatsApp Business API.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
400
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

whatsapp-cloud-api-reference

通过Meta云API发送WhatsApp消息

概述

Meta WhatsApp云API是用于程序化WhatsApp消息传递的官方全托管路径。无需服务器管理。每月前1,000次服务对话免费。

关键规则:

  • - 您的应用绝不能首先发送自由格式文本消息。 对任何用户的第一条消息必须始终是预先批准的模板。只有在用户回复后,并且在回复打开的24小时窗口内,才允许发送自由格式文本。
  • 在24小时回复窗口之外的业务发起的消息必须使用预先批准的模板
  • 发送前,电话号码必须在您的WABA中注册
  • 始终使用系统用户令牌——用户令牌在24小时内过期

对话流程:

应用 → 用户:必须是模板(始终如此,用于首次联系)
用户 → 应用:回复打开一个24小时的自由格式窗口
应用 → 用户:在该24小时窗口内允许自由格式文本
[24小时过去,用户无回复]
应用 → 用户:必须再次使用模板才能重新接触



设置清单

  1. 1. 创建Meta开发者应用 — developers.facebook.com → 创建应用 → 业务类型
  2. 将WhatsApp产品添加到应用中(提供临时测试号码 + 5个测试接收者名额)
  3. 创建永久系统用户令牌:
- Meta商务管理平台 → 设置 → 系统用户 → 创建管理员用户 - 分配权限:whatsappbusinessmessaging + whatsappbusinessmanagement - 生成令牌——此令牌永不过期
  1. 4. 注册真实电话号码 — 该号码不能已在个人/企业WhatsApp上激活
  2. 设置Webhook — 需要公共HTTPS URL(受信任的CA证书,非自签名),必须在10秒内响应

发送消息

文本消息 (Node.js)

javascript
// npm install axios
const axios = require(axios);

async function sendMessage(phoneNumber, text) {
// phoneNumber: E.164格式,不带+,例如 14155551234
const res = await axios.post(
https://graph.facebook.com/v21.0/${process.env.WAPHONENUMBER_ID}/messages,
{
messaging_product: whatsapp,
recipient_type: individual,
to: phoneNumber,
type: text,
text: { preview_url: false, body: text }
},
{ headers: { Authorization: Bearer ${process.env.WAACCESSTOKEN} } }
);
return res.data;
}

文本消息 (Python)

python

pip install requests


import requests, os

def send_message(phone: str, text: str) -> dict:
r = requests.post(
fhttps://graph.facebook.com/v21.0/{os.environ[WAPHONENUMBER_ID]}/messages,
headers={Authorization: fBearer {os.environ[WAACCESSTOKEN]}},
json={
messaging_product: whatsapp,
recipient_type: individual,
to: phone, # E.164格式,不带+
type: text,
text: {preview_url: False, body: text}
}
)
r.raiseforstatus()
return r.json()

通过curl快速测试

bash
curl -X POST https://graph.facebook.com/v21.0/YOURPHONEID/messages \
-H Authorization: Bearer YOURACCESSTOKEN \
-H Content-Type: application/json \
-d {messaging_product:whatsapp,to:14155551234,type:text,text:{body:Hello}}

模板消息(自上次用户回复超过24小时后必需)

javascript
const payload = {
messaging_product: whatsapp,
to: phoneNumber,
type: template,
template: {
name: hello_world, // 您已批准的模板名称
language: { code: en_US },
components: [{
type: body,
parameters: [
{ type: text, text: John }, // 填充 {{1}}
{ type: text, text: Order #4521 } // 填充 {{2}}
]
}]
}
};

媒体消息(图片、文档、音频、视频)

图片:
javascript
const payload = {
messaging_product: whatsapp,
to: phoneNumber,
type: image,
image: {
link: https://your-domain.com/image.jpg // 必须是可公开访问的HTTPS
}
};

文档:
javascript
const payload = {
messaging_product: whatsapp,
to: phoneNumber,
type: document,
document: {
link: https://your-domain.com/file.pdf,
caption: Invoice // 可选
}
};

音频:
javascript
const payload = {
messaging_product: whatsapp,
to: phoneNumber,
type: audio,
audio: {
link: https://your-domain.com/audio.mp3
}
};

视频:
javascript
const payload = {
messaging_product: whatsapp,
to: phoneNumber,
type: video,
video: {
link: https://your-domain.com/video.mp4,
caption: Demo video // 可选
}
};

重要限制:

  • - 所有媒体URL必须是可公开访问的HTTPS(http://会失败)
  • 最大文件大小:图片16MB,文档100MB,音频16MB,视频16MB
  • 支持的格式:图片(JPEG,PNG),文档(PDF),音频(AAC,MP3,OGG,WAV),视频(MP4,3GPP)
  • 媒体不得要求身份验证
  • URL不能使用缩短器(bit.ly,tinyurl等)

Webhook处理程序(Express)——正确的异步模式

javascript
// GET — Meta调用此方法以验证您的端点
app.get(/webhook, (req, res) => {
const { hub.mode: mode, hub.verify_token: token, hub.challenge: challenge } = req.query;
if (mode === subscribe && token === process.env.VERIFY_TOKEN)
return res.status(200).send(challenge); // 仅原始字符串 — 不是JSON
res.sendStatus(403);
});

// POST — 关键:立即返回200,异步处理
app.post(/webhook, express.json(), (req, res) => {
// 立即返回200,这样Meta不会重试
res.sendStatus(200);

// 异步处理webhook负载(不要阻塞)
setImmediate(() => {
processWebhookAsync(req.body).catch(err => {
logger.error(Webhook处理失败:${err.message});
});
});
});

async function processWebhookAsync(body) {
body.entry?.forEach(entry =>
entry.changes?.forEach(change => {
const value = change.value;

// 传入消息
if (value.messages) {
value.messages.forEach(msg => {
console.log(来自${msg.from}的消息:${msg.text?.body});
handleMessage(msg);
});
}

// 投递状态
if (value.statuses) {
value.statuses.forEach(status => {
console.log(消息${status.id}状态:${status.status});
handleDeliveryStatus(status);
});
}
})
);
}



消息状态与投递跟踪

Webhook负载:投递状态

当消息被投递、阅读或失败时,Meta通过webhook发送状态更新:

json
{
object: whatsappbusinessaccount,
entry: [{
changes: [{
value: {
statuses: [{
id: wamid.xxx, // 来自您发送响应的消息ID
status: delivered, // sent | delivered | read | failed
timestamp: 1675262308,
recipient_id: 14155551234,
type: message
}]
}
}]
}]
}

状态值:

  • - sent — 消息已到达Meta服务器
  • delivered — 消息已投递到用户设备
  • read — 用户已打开消息
  • failed — 投递失败(永久性)

跟踪消息投递

javascript
// 发送时,存储消息ID
const sendResult = await sendMessage(phone, text);
const messageId = sendResult.messages[0].id;

// 记录以便webhook跟踪
db.messages.insert({
message_id: messageId,
recipient: phone,
sent_at: Date.now(),
status: sent,
body: text
});

// 当webhook到达并带有状态

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 whatsapp-cloud-api-reference-1776315082 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 whatsapp-cloud-api-reference-1776315082 技能

通过命令行安装

skillhub install whatsapp-cloud-api-reference-1776315082

下载

⬇ 下载 whatsapp-cloud-api-reference v1.0.0(免费)

文件大小: 11.61 KB | 发布时间: 2026-4-16 17:36

v1.0.0 最新 2026-4-16 17:36
Initial release featuring WhatsApp Cloud API integration guide:

- Detailed setup checklist for Meta WhatsApp Cloud API and WhatsApp Business Account.
- Code samples for sending messages (Node.js, Python, curl) and templates for various message types (text, template, image, document, audio, video).
- Common troubleshooting info: message status tracking, delivery errors, token handling, template rejection, rate limits, webhook setup, and quality rating issues.
- Webhook handler example (Express.js) for correct async processing and callback verification.
- Clear documentation of conversation rules and 24-hour reply windows.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部