Sign inGet started

将消息标记为已读

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

前提条件

你需要一个具有 WhatsApp 写入权限的 API 密钥,以及你的工作区收到的消息的 Bird 消息 ID(wam_…)。可使用 whatsapp.received webhook 中的 data.whatsapp_id,或WhatsApp 日志中消息的 id
将示例消息 ID 替换为你的工作区收到的消息 ID。使用 TypeScriptPythonGoPHP SDK 指南为你的语言初始化客户端。对于 CLI 示例,请安装并认证 CLI,授予 WhatsApp 写入权限。在 cURL 请求中使用与你的工作区区域对应的 API 主机。

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

使用收到的消息 ID 调用将消息标记为已读。WhatsApp 还会将同一会话中更早的消息标记为已读,因此请选择代表你已阅读位置的消息。
const acknowledgement = await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {});
console.log(acknowledgement.typing_indicator);
请求成功时返回 202typing_indicator: false。确认回执已被接受并进入处理队列;响应并不表示联系人已看到该回执。已读确认不会产生计费的出站消息。

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

要在标记消息已读的同时显示正在输入,请在同一请求中传递 typing_indicator: true
await bird.whatsapp.markRead("wam_01krdgeqcxet5s7t44vh8rt9mg", {
  typing_indicator: true,
});
WhatsApp 会在你发送消息或 25 秒后清除该指示器。重复调用是安全的。要刷新正在输入状态,请省略 Idempotency-Key 或使用新的密钥;重放之前的请求不会刷新指示器。

3. 检查收到的消息

检索消息以查看 read_at。WhatsApp 接受确认回执后,收到的消息可以带有该时间戳,同时保持其 received 状态。没有单独的确认回执资源或投递 webhook 可供追踪。

故障排查

  • 404E15071:检查消息 ID 和工作区。Bird 可在 15 天内解析消息以进行确认;超过此期限的消息无法通过此操作标记为已读。
  • 422E15074:请使用你的工作区可以确认的入站消息。出站消息不是有效的目标。
  • 503E15073:解析消息时遇到临时故障,请重试。

后续步骤