WhatsApp

whatsapp.failed 和 whatsapp.rejected 有什么区别?

whatsapp.rejected 事件表示 Bird 在计费前拦截了消息;whatsapp.failed 则记录发送或投递过程中的失败。

当消息结束时,在决定是否重试或排查投递问题之前,先检查其终端事件和错误码。

whatsapp.rejected 是什么意思?

Bird 在分发前拦截了消息,且未对其计费。

收件人检查和计费可能产生拒绝结果。使用附带的错误码选择下一步操作:

错误码原因下一步操作
undeliverable没有可用的收件人地址修正收件人
recipient_suppressed收件人已被屏蔽遵守退订并检查同意记录
price_not_foundBird 无法为此次发送定价联系支持团队并提供消息标识符
insufficient_balance钱包余额不足或组织无法被计费解决计费问题后再次发送

未定价的发送会被拒绝,而不是被视为免费。重复相同的请求不会补齐缺失的价格。

拒绝时间戳使用的是最初接受的时间。在报表中保持一致使用该时间戳,以免队列延迟将拒绝移到后一个报告周期。

whatsapp.failed 是什么意思?

消息在发送或投递过程中失败,原因记录在错误详情中。

Meta 可以通过投递回调报告失败,也可以在接受消息投递之前拒绝 Bird 的发送请求。

当发送号码没有可用凭证或处理用尽重试次数时,Bird 会记录 internal_errormeta_error_code 是 Meta 记录的错误码,而 Bird 码不携带此信息。

重试耗尽可能包含传输错误或上游故障。不要仅凭 internal_error 就推断 Meta 从未收到请求。

检查描述和发送号码的连接状态。当原因仍不明确时,向支持团队提供消息标识符。

失败可能发生在计费之后。检查消息的 cost,而不是假设每次未成功的发送都是免费的。

为什么 undeliverable 出现在两种事件中?

在拒绝中,Bird 无法寻址收件人。在失败中,它是 Bird 对 Meta 拒绝的标准化结果。

错误码的含义不仅限于手机无法接收消息。当 Meta 错误码没有更具体的映射时,Bird 也会使用 undeliverable

读取 meta_error_code 获取 Meta 记录的错误码,读取 description 获取附带的说明。没有错误详情的失败仍会收到 undeliverable

其他标准化失败码标识了更具体的问题:

错误码需要排查的内容
service_window_expired是否在服务窗口之外发送了自由格式内容
rate_limitedMeta 的发送或收件人限制
media_rejectedMeta 拒绝的媒体资源
internal_errorBird 记录的处理或发送失败

在日志中保留不熟悉的错误码。错误码集合可能会扩展,未知值不应使原本可用的事件无效。

我的事件处理程序应如何解读结果?

根据事件类型及其错误码一起进行分支处理。

被拒绝的消息不会进入已发送事件。失败的消息需要其错误详情来区分内部故障和 Meta 的响应。

将投递状态与互动分开。whatsapp.read 事件记录已读,但不会替换消息的投递状态。

Bird 在发送成功后发出自己的 whatsapp.sent,不会根据 Meta 单独的已发送状态回调创建另一个事件。

模板审核使用一组不同的状态。当问题出在审批时,请检查模板的语言,而非这些消息结果。

再次发送之前应该做什么?

在发送另一条消息之前,先修正记录的原因。

对于 service_window_expired,使用已批准的模板或等待客户的消息重新打开服务窗口

对于屏蔽,遵守收件人的选择。移除退订会忽略收件人的意愿并带来合规风险。

对于计费或发送方连接问题,先解决该账户状况。保留原始消息标识符,以便支持团队检查未成功的尝试。

如果号码或 Business Account 被限制或封禁,请在重试之前按照账户限制和申诉步骤操作。

对于不确定的传输失败,先排查再创建新消息。新的发送可能会重复一个结果未被观测到的请求。

简而言之

  1. 拒绝不计费。

    当收件人检查或计费阻止发送时,Bird 会在分发前拦截消息。

  2. 失败可能来自 Bird 或 Meta。

    在决定排查方向之前,先检查记录的错误。internal_error 不携带 Meta 错误码。

  3. 结合事件和错误码进行判断。

    undeliverable 出现在两种事件中,其含义取决于消息在哪个阶段停止。

  4. 根据原因选择恢复方式。

    在尝试再次发送之前,先纠正收件人、账户、内容或时间问题。保留不熟悉的错误码以供排查。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

你的下一个创意。
随时连接。