WhatsApp Business API,无需 BSP 繁琐流程。
自 API 推出以来,我们便是 Meta 官方商业解决方案提供商。模板审批、会话窗口、媒体、互动消息,全部搞定。每月超过二十亿 WhatsApp 活跃用户,通过一个与其他所有 Bird 渠道一致的单一端点即可触达。
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."
从 npm install 到首次发送仅需 5 分钟
用您已经在使用的语言发送 WhatsApp 消息。
覆盖所有主流运行时的 SDK。首次发送将发往授权测试收件人 (+15005550009),使用预审批模板,因此您可以在提交第一个模板审批之前就运行 CI 检查。
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "hello_world",
locale: "en_US",
}).safe();BSP 门槛隐藏了十件事。我们不会。
WhatsApp 由 Meta 管控。BSP 的选择在于这些管控是出现在您的代码中,还是被隐藏在仪表盘里。我们选择了代码。
- 01
Meta 官方商业解决方案提供商 (BSP)
自 API 推出以来与 Meta 直接合作。无转售中转,无第三方跳转。
- 02
模板管理
提交、跟踪审批状态,并在 Meta 批准或拒绝的瞬间收到 webhook 通知。
- 03
会话窗口感知
SDK 会在发送前告知您当前允许自由格式消息还是模板消息。
- 04
互动消息
按钮、列表、产品卡片和 WhatsApp Flows,在同一个请求载荷中声明。
- 05
媒体与富内容
图片、视频、文档、位置、联系人、链接预览、表情回应和回复。
- 06
WhatsApp Flows
支持后端验证的多步应用内表单,以 JSON 定义,由 Meta 执行。
- 07
点击跳转 WhatsApp 广告
与 Meta 广告管理工具集成,广告点击直接进入您可以回复的对话。
- 08
跨渠道降级
在任意发送中添加 fallback: "sms"。会话过期时自动通过 SMS 路由。
- 09
入站消息 webhook
针对入站消息、已读回执、表情回应和模板状态的 HMAC 签名事件。
- 10
20 亿+用户,一个端点
超过二十亿月活 WhatsApp 用户,通过一次 bird.whatsapp.send 调用即可触达。
我们为何打造 WhatsApp
我们是最早的 WhatsApp BSP 之一。我们仍是少数与您一起交付代码的 BSP。
WhatsApp 有准入门槛。你需要审批通过的模板;需要用户已授权的会话窗口;需要 Meta 商业认证。这些不会改变,也不打算改变。真正改变的是,你的 BSP 是让这些门槛更容易还是更难跨越——通过在代码中清晰暴露它们,通过可订阅的 webhook,通过能精确说明问题所在的错误信息。我们选择了前者。
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
locale: "en_US",
variables: {
customer_name: "Ada",
order_id: "BRD-49217",
tracking_url: "https://track.bird.dev/49217",
eta: "Thursday, May 21",
},
}).safe();
if (error) throw error;
console.log(data.id);
// → "wa_msg_8nB91Yk3p..."
每次状态变更都是一个 webhook。
HMAC 签名载荷,防重放,幂等。所有 Bird 渠道使用相同的信封格式:学会一个,就学会了全部。
{
"type": "whatsapp.read",
"id": "evt_7kQ02v...",
"created_at": "2026-05-19T15:42:08.114Z",
"data": {
"wa_msg_id": "wa_msg_8nB91Yk3p",
"from": "+15551234567",
"to": "+15005550009",
"conversation_id": "wa_conv_3pX1g7t",
"template": "order_shipped",
"delivered_at": "2026-05-19T15:42:01.802Z",
"read_at": "2026-05-19T15:42:08.020Z"
}
}
重试计划:5 秒、30 秒、5 分钟、30 分钟、2 小时、6 小时、12 小时。最终尝试失败后进入死信队列;每个死信事件均可通过仪表盘或 API 重新投递。
whatsapp.queued已被 API 接受并排队等待发送至 Meta。whatsapp.sent已交付至 Meta Cloud API。whatsapp.deliveredMeta 报告消息已送达收件人设备。whatsapp.read收件人已打开消息(如果已读回执已开启)。whatsapp.failed永久失败:原因代码包含在载荷中。whatsapp.received来自 24 小时会话窗口内用户的入站消息。whatsapp.template.approvedMeta 已批准您提交的模板。whatsapp.template.rejectedMeta 拒绝了模板:拒绝原因包含在载荷中。
降级到 SMS 只需一个属性,而非第二个集成。
如果 WhatsApp 无法送达——会话过期、收件人未选择加入、模板尚未获批——Bird 会在同一请求中通过 SMS 路由相同的消息。相同的认证、相同的幂等性契约、另一端相同的 webhook 格式。
WhatsApp 带 SMS 降级。
await bird.whatsapp.send({
to: "+15005550009",
template: "order_shipped",
variables: { order_id: "BRD-49217" },
fallback: "sms",
});
一个载荷,一次认证。会话过期、授权缺失、未审批模板:全部自动通过 SMS 路由。
直接 SMS。
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your order BRD-49217 has shipped.`,
category: "transactional",
});
相同的线路,直接寻址。当您需要明确走 SMS 路径时使用。