# 将消息标记为已读

当你已阅读联系人的 WhatsApp 消息或开始处理其请求时，向对方发送已读确认。你还可以在准备回复时显示正在输入指示器。

## 前提条件

你需要一个具有 WhatsApp 写入权限的 API 密钥，以及你的工作区收到的消息的 Bird 消息 ID（`wam_…`）。可使用 [`whatsapp.received` webhook](/docs/guides/whatsapp/receiving-whatsapp) 中的 `data.whatsapp_id`，或[WhatsApp 日志](/docs/guides/whatsapp/message-log)中消息的 `id`。

将示例消息 ID 替换为你的工作区收到的消息 ID。使用 [TypeScript](/docs/sdks/typescript)、[Python](/docs/sdks/python)、[Go](/docs/sdks/go) 或 [PHP](/docs/sdks/php) SDK 指南为你的语言初始化客户端。对于 CLI 示例，请[安装并认证 CLI](/docs/cli#authenticate)，授予 WhatsApp 写入权限。在 cURL 请求中使用与你的[工作区区域](/docs/api/regions)对应的 API 主机。

## 1. 将收到的消息标记为已读

使用收到的消息 ID 调用[将消息标记为已读](/docs/api/reference/send-whatsapp-read-receipt)。WhatsApp 还会将同一会话中更早的消息标记为已读，因此请选择代表你已阅读位置的消息。

**TypeScript**

```typescript
const acknowledgement = await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {});
console.log(acknowledgement.typing_indicator);
```

Examples: [TypeScript](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.ts.md) · [Python](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.py.md) · [Go](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.go.md) · [PHP](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.php.md) · [CLI](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.cli.md) · [cURL](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.curl.md)

请求成功时返回 `202` 和 `typing_indicator: false`。确认回执已被接受并进入处理队列；响应并不表示联系人已看到该回执。已读确认不会产生计费的出站消息。

## 2. 在准备回复时显示正在输入

要在标记消息已读的同时显示正在输入，请在同一请求中传递 `typing_indicator: true`：

**TypeScript**

```typescript
await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {
  typing_indicator: true,
});
```

Examples: [TypeScript](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.ts.md) · [Python](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.py.md) · [Go](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.go.md) · [PHP](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.php.md) · [CLI](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.cli.md) · [cURL](/zh-sg/wendang/guides/whatsapp/mark-message-as-read.curl.md)

WhatsApp 会在你发送消息或 25 秒后清除该指示器。重复调用是安全的。要刷新正在输入状态，请省略 `Idempotency-Key` 或使用新的密钥；重放之前的请求不会刷新指示器。

## 3. 检查收到的消息

[检索消息](/docs/api/reference/get-whatsapp-message)以查看 `read_at`。WhatsApp 接受确认回执后，收到的消息可以带有该时间戳，同时保持其 `received` 状态。没有单独的确认回执资源或投递 webhook 可供追踪。

## 故障排查

- **`404`（[E15071](/docs/api/errors/E15071)）**：检查消息 ID 和工作区。Bird 可在 15 天内解析消息以进行确认；超过此期限的消息无法通过此操作标记为已读。
- **`422`（[E15074](/docs/api/errors/E15074)）**：请使用你的工作区可以确认的入站消息。出站消息不是有效的目标。
- **`503`（[E15073](/docs/api/errors/E15073)）**：解析消息时遇到临时故障，请重试。

## 后续步骤

- [发送回复](/docs/guides/whatsapp/sending-whatsapp)
- [对收到的消息添加表情回应](/docs/guides/whatsapp/reactions)
- [接收 WhatsApp 消息](/docs/guides/whatsapp/receiving-whatsapp)

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
