> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 消息送达状态

> 在跟踪出站 WhatsApp 消息时，区分已受理、发送中、已送达、已读和失败状态。

发送请求和送达消息是两个不同的事件。成功的 API 响应仅确认该阶段的请求结果；并不保证客户已收到或已阅读该消息。

使用 YCloud 消息状态和所有可用的错误详情来了解具体情况。

## 出站消息状态

YCloud 出站 WhatsApp 消息资源使用以下状态：

| 状态 | 含义 | 建议操作 |
| - | - | - |
| `accepted` | YCloud 已受理该消息发送请求。 | 跟踪后续更新。请勿将其视为已送达。 |
| `sent` | 消息正在 WhatsApp 系统中传输。 | 等待送达或失败更新。 |
| `delivered` | 消息已到达客户设备。 | 视为已送达，但不一定已读。 |
| `read` | WhatsApp 报告客户已阅读该消息。 | 在工作流中使用此信号，但不要认为已读即代表同意或完成。 |
| `failed` | 消息发送失败。 | 重试前检查错误并解决原因。 |

典型的成功流转过程为 `accepted → sent → delivered → read`。请勿假设应用程序会收到每个中间更新，也不要假设更新会完全按该顺序到达。

## 为什么请求成功不代表最终送达

使用排队端点时，YCloud 会接受请求并异步提交。使用直接端点时，提交到 WhatsApp Business API 是同步进行的。在这两种情况下，最终送达仍然是异步的。

有关实现详情，请参阅[发送 WhatsApp 消息](/zh/api-reference/guides/whatsapp-platform/send-whatsapp-message)。

如果当前状态仍为 `accepted` 或 `sent`，请勿重复提交相同内容。额外的请求可能会导致消息重复。

## 送达回执与已读回执

已送达表示消息已到达客户设备，并不意味着客户打开了对话。

已读回执并非在所有情况下都可用。例如，客户的已读回执设置会影响是否报告已读更新。未收到已读更新并不能证明客户忽略了该消息。

有关上游状态定义，请参阅 Meta 的[消息状态 Webhook 参考](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components/)。

## 跨系统跟踪同一条消息

进行排查时，请保留以下相关信息：

| 信息 | 作用 |
| - | - |
| YCloud 消息 ID | 标识 YCloud 中的消息资源。 |
| WhatsApp 消息 ID（如有） | 将消息与上游 WhatsApp 处理进行关联。 |
| 发送方、接收方和 WABA | 标识受影响的商家和互动。 |
| 外部参考编号（如有使用） | 将消息连接到订单、支持工单或其他内部事件。 |
| 状态时间戳 | 在更新延迟或乱序到达时帮助重构顺序。 |
| 错误详情 | 说明失败原因并指导下一步操作。 |

共享排查记录时，请勿包含 API 密钥或不必要的客户信息。

API 集成可以接收 `whatsapp.message.updated` Webhook 并检索消息资源。有关同步和重试处理，请参阅[WhatsApp 消息发送最佳实践](/zh/api-reference/guides/whatsapp-platform/whatsapp-messages-api-best-practices)。

## 排查失败的消息

请从返回的错误入手，而不仅凭状态名称。

* **模板问题：** 确认消息模板可用，且其语言和参数正确。
* **服务窗口问题：** 检查消息是否需要处于开启状态的[客户服务窗口](/zh/documentation/whatsapp-business-platform/messaging/service-messages#customer-service-window)。
* **账户或号码问题：** 检查受影响的资产及其当前限制。
* **内容或媒体问题：** 检查所选消息类型的要求。
* **送达控制：** 遵循具体的错误指导。立即重复重试可能无法解决平台限制。

消息失败并不能断定客户已屏蔽您的号码。请使用实际的错误详情，避免推测平台未报告的客户行为。

有关平台送达控制，请参阅[质量与送达控制](/zh/documentation/whatsapp-business-platform/pricing-limits-and-quality/quality-and-delivery-controls)。有关违规处置通知，请参阅[账户限制与申诉](/zh/documentation/whatsapp-business-platform/consent-policies-and-account-health/account-restrictions-and-appeals)。

## 判断重试是否安全

| 当前迹象 | 建议处理方式 |
| - | - |
| 请求返回了 ID 且状态不是最终状态 | 继续追踪该消息。切勿仅因为客户尚未回复就再次提交副本。 |
| 请求超时且您不知道其是否已被接受 | 在重试之前，请利用您存储的请求上下文和现有消息记录进行对账。超时并不能证明消息完全没有发送。 |
| 永久性内容、模板或权限失败 | 纠正根本的输入错误或停止发送。重复相同的请求无法解决问题。 |
| 临时技术性故障 | 仅在具体错误指引下重试，并设置延迟、尝试次数上限，同时确认该消息是否仍具有时效价值。 |
| 客户退订或接收者层级的控制阻止了送达 | 停止受影响的通信；切勿轮换发送方来强制送达。 |
| 业务事件已过时 | 即使技术错误允许重试，也应取消重试。 |

良好的消息记录会将单个预期业务操作与其请求和结果绑定。您的外部引用有助于关联，但除非端点明确保证了幂等行为，否则请勿假定其提供 API 幂等性。

### 状态更新延迟示例

您的系统先收到 `delivered`，随后收到了同一消息延迟到达的 `sent` 事件。切勿将客户的状态改回“未送达”。请存储事件时间戳，并应用能够容忍重复和乱序更新的状态模型。

同样，缺少 `read` 事件并不代表消息发送失败。请区分以下指标：

* **送达触达：** 具有送达证据的消息。
* **已读触达：** 报告了已读回执的消息。
* **客户响应：** 实际的入站回复或互动。
* **业务转化：** 在所属系统中确认的预订、购买或成功验证。

## 后续步骤

* [查阅消息规则](/zh/documentation/whatsapp-business-platform/messaging/how-messaging-works)。
* [检查服务消息](/zh/documentation/whatsapp-business-platform/messaging/service-messages)。
* [实现送达追踪](/zh/api-reference/guides/whatsapp-platform/send-whatsapp-message)。
* [联系 YCloud 支持团队](/zh/documentation/support/ycloud-support-team)，并提供相关消息标识符和错误详情。

## 常见问题解答

<AccordionGroup>
  <Accordion title="显示已送达，但没有已读时间。客户是否拉黑了我们？">
    无法得出该结论。已读回执可能不可用，包括接收方禁用该功能的情况。请将送达和已读作为独立的指标。无论是缺少已读回执还是常规的无法送达错误，都无法确定客户的具体原因或证明被拉黑。
  </Accordion>

  <Accordion title="我的 API 调用超时了。再次发送相同的消息安全吗？">
    不能立即重发。平台可能已经接受了该请求。在发起另一次发送前，请检查消息标识符、可用日志以及后续的 Webhook 事件。将重试关联到同一个业务操作并设计防重机制；外部引用并不自动等同于端点幂等性保证。
  </Accordion>

  <Accordion title="日志中显示不支持的消息占位符。WhatsApp 是否拒绝了该消息？">
    显示限制与送达失败是两回事。请检查实际的方向、状态、消息类型以及任何错误。对于入站内容，请参阅[收件箱不支持的消息指引](/zh/documentation/inbox/unsupported-messages-in-inbox)；切勿猜测内容或将占位符视为出站发送失败。
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.