Sign inGet started

WhatsApp 电话号码

WhatsApp 消息从两种号码之一发出:一种是 Bird 代你运营的号码,另一种是你自己的工作区拥有的号码。你使用哪种号码决定了你能发送什么内容,以及发送时是否会显示发送方信息。
Numbers 页面列出两种号码。发送响应消息日志中的 from 字段标识了某条消息使用的号码。
Bird 仪表板中的 WhatsApp Numbers 页面:一个包含 Status、Name、Number、WABA 和 Created 列的表格,显示一个仍提供 Finish setting up 操作的 Pre-verified 号码和一个 Goldcrest 商业账户上的 Connected 号码,下方是三个 Bird 托管号码

Bird 托管号码

Bird 自有号码无需设置,并携带 slug 以 bird_ 开头的预审批模板。Bird 根据模板类别和你的地区选择号码:authentication 模板使用专用的身份验证号码,utility 模板使用通知号码。因此,托管模板的发送没有 from 字段,设置该字段会被拒绝。
这些号码使用 Bird 托管的发送基础设施,因此收件人看到的发送方是 Bird 而非你自己,且无法通过它们发送自由格式内容。它们在 WABA 列中标记为 Bird-managed

你的自有号码

连接自有号码可以解锁以你自己品牌身份发送的能力:使用你自己的模板,以及在开放的客服窗口内发送自由格式内容。从该号码发出的每条消息都会在 from 中标注号码。
你从 Numbers 页面通过 Meta 的 Embedded Signup 弹窗连接号码。有两种方式,区别在于谁来读取 Meta 发送给该号码的验证码:
  • 我有自己的号码。 你通过 SMS 或语音电话接收 Meta 的验证码,然后自行输入到 Embedded Signup 窗口中。在更改现有注册之前,请选择支持的迁移路径或符合条件的 Business app 共存路径,并且仅在号码已在 WhatsApp 上设置过 Phone registration PIN 时才设置该 PIN。
  • 你的工作区在 Bird 持有的号码。 改为从 Number 列表中选择。Bird 会接收验证码并为你完成 Meta 的验证,因此该号码到达时已处于 pre-verified 状态,你只需在 Embedded Signup 窗口中选择它。

对 Bird 持有的号码进行验证

选择一个持有的号码会在 Embedded Signup 弹窗打开之前启动验证。Bird 请求 Meta 向该号码发送短信,然后代你回读验证码。
Bird 仪表板中验证进行中的 New number 对话框:WhatsApp 标志位于标题 "Verifying this number with WhatsApp" 上方,带有一个 Continue in background 按钮,覆盖在变暗的 Numbers 列表上,其中新行已显示 Preparing
这通常不到一分钟。你无需在对话框中等待:Continue in background 会关闭对话框,Numbers 页面上的行会跟踪相同的进度。
验证码读取完成后,号码已通过 Meta 验证,等待你在 Embedded Signup 中完成设置。Finish setting up 会打开 Meta 的弹窗,你在其中选择号码及其应加入的商业账户。
Bird 仪表板中验证完成后的 New number 对话框:持有的号码和一个 Name 字段,上方带有注释 "This number has already been verified with WhatsApp",下方是 Finish setting up 按钮,覆盖在变暗的 Numbers 列表上,其中该行现在提供自己的 Finish setting up 操作

号码状态的含义

号码在可以发送之前会经历多个状态,Status 列显示其当前所处的状态:
状态含义
PreparingBird 正在为你的工作区持有的号码完成 Meta 验证。
Pre-verifiedBird 已完成 Meta 验证。请在 Embedded Signup 中完成号码设置。
PendingEmbedded Signup 已完成,Bird 正在向 Meta 注册该号码。
Connected号码可以发送。
Failed设置已停止。该行显示原因。
两种路径都可能在中途失败,可能发生在 Meta 验证环节,也可能发生在弹窗中。恢复方式取决于该行显示的原因。
如果该行显示 verification_code_not_receivedverification_rate_limited,打开该号码并选择 Try again,而不是断开连接。预验证失败的原因及何时重试说明了该按钮何时可用,以及重试仍然失败时该怎么做。
对于所有其他原因,从该行的操作中断开号码连接,然后重新连接:失败的行会保持号码的占用状态,因此不先移除就进行第二次尝试会被拒绝。

已连接号码显示的内容

号码的详情页面显示 WhatsApp 当前允许它执行的操作,以及一个涵盖其发送历史的 Activity 部分。
Bird 仪表板中 Goldcrest 号码的详情页面:号码名称和 Connected 状态上方是 WhatsApp 状态行,包含 Quality rating、Messaging limit(每 24 小时 1,000 条)和 Send rate(每秒 80 条),下方有 Overview 和 Business profile 标签页以及 Activity 部分
Quality ratingMessaging limitSend rate 是 WhatsApp 的数值,而非 Bird 的。消息发送限额是 WhatsApp 允许在 24 小时内发起的商业主动会话数量,随着号码发送表现良好而提升。Quality rating 在 WhatsApp 积累足够的投递历史来评分之前显示为 Not rated
Business profile 标签页包含收件人在 WhatsApp 中看到的关于你的信息:显示名称、描述、地址和头像。

号码背后的商业账户

每个已连接的号码都属于一个 WhatsApp Business Account,WABA 列链接到它。其详情页报告的是 Meta 对该商业主体本身的审核结果,而非对号码的审核。
Bird 仪表板中 Goldcrest WhatsApp Business Account 详情页,覆盖在变暗的号码详情页上:Status Active、WhatsApp review Approved、Business verification Verified、Marketing Messages API Onboarded,然后是 Business portfolio、Account ID 以及上次从 WhatsApp 读取账户的日期
这些状态决定了账户能做什么。Business verification 尤其决定了身份验证模板的使用:未验证的商业主体无法创建此类模板。Marketing Messages API 在 Meta 接受账户后显示为 Onboarded。营销发送不需要等待它。Onboarding 决定了 Meta 的投递优化功能,以及一个 gif 请求头,该请求头在未完成 onboarding 的账户上会在 WhatsApp 处失败。一个工作区可以包含多个商业账户,每个账户可以有多个号码。请查看拥有目标发送号码的账户的审核结果;已连接的账户有特定的工作区和地区归属。
Bird 按计划而非持续地从 Meta 读取这些信息,因此 Last read from WhatsApp 标注了其上方审核结果的读取日期。

通过 API 读取你的号码

仪表板上显示的所有内容都可以通过 API 和 SDK 读取。读取需要具有 whatsapp_management 读取权限的 API 密钥。
GET /v1/whatsapp/numbers 以游标分页形式返回你的发送号码。每个号码携带 WhatsApp 为其报告的状态,因此这是告诉你发送可以使用哪些 from 值的调用。
GET /v1/whatsapp/numbers/{id} 读取单个号码,包含与详情页面呈现的相同的质量评分、消息发送限额和吞吐量级别。GET /v1/whatsapp/numbers/{id}/profile 读取 Business profile 标签页背后的商业资料,包括 descriptionaddresswebsites
GET /v1/whatsapp/numbers/{id}/events 返回号码如何到达当前状态的历史记录,最新的在前:添加时间、每次状态变更,以及每次消息发送限额、质量评分和显示名称的决定。每个事件携带 typesummarycreated_attype 是一个开放枚举,因此将你不认识的值视为未来的事件类型而非错误。
GET /v1/whatsapp/business-accountsGET /v1/whatsapp/business-accounts/{id} 读取本页上述的账户状态:account_review_statusbusiness_verification_statusmarketing_messages_onboarding_status。号码在其自身的 waba 字段中报告其所属账户,该字段持有 Meta 的账户 ID 而非 Bird ID。
在基于这些读取构建之前,有两个细节值得了解。meta_synced_at 标注了 WhatsApp 报告字段的日期,对应仪表板中的 Last read from WhatsApp,在 Bird 代你运营的号码上该字段不存在。注册中的号码是可读取的:status 报告 preparingawaiting_signupnext 说明该状态下应采取的操作,finish_setup_url 携带完成设置的链接,因此你可以轮询设置进度并将最后一步交给用户。唯一保留的字段是 meta_preverified_id,即 WhatsApp 为正在准备的号码分配的内部 ID,该字段仅在仪表板中可见。
连接、重命名和断开号码不属于公共 API 或 SDK 的功能。它们可在仪表板和 CLI(bird whatsapp numbers create|update|deletebird whatsapp numbers profile update)中使用。只有一个步骤必须在浏览器中完成:新连接需在 Meta 自己的授权页面上完成,这就是 create 返回给你一个 finish_setup_url 而非自行完成的原因。

入站消息

入站消息仅通过你的自有号码到达你的工作区。Bird 将其记录在 WhatsApp 日志中,Metrics 页面的 Inbound 标签页按号码报告接收量。每条入站消息还会打开自由格式内容所需的 24 小时窗口。Bird 托管号码不会为你的工作区接收消息。

后续步骤

for await (const number of bird.whatsapp.numbers.list({ limit: 25 })) {
  console.log(number.id, number.phone_number, number.status);
}

相关资源

继续查阅此主题的文档、指南和示例。资源为英文。

动手实践并获取实施简报