# 发送 WhatsApp 回应

用表情回应联系人的消息，例如竖起大拇指表示已收到对方的回复。你可以替换回应或稍后移除它。

## 前提条件

你需要一个具有 WhatsApp 写入权限的 API 密钥，以及你的工作区收到的消息的 Bird 消息 ID（`wam_…`）。使用来自 [`whatsapp.received`](/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. 添加回应

调用[对 WhatsApp 消息添加回应](/docs/api/reference/upsert-whatsapp-message-reaction)，传入一个表情：

**TypeScript**

```typescript
const reaction = await bird.whatsapp.reaction.set("wam_01krdgeqcxet5s7t44vh8rt9mg", {
  emoji: "👍",
});
console.log(reaction.id, reaction.emoji);
```

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

API 返回 `202`，包含已接受回应的 `id`（`war_…`）和 `emoji`。保存回应 ID 以便在回应日志中查找其结果。接受并不意味着 WhatsApp 已应用该回应。

你在每条消息上只能保留一个回应。要替换它，使用不同的表情重复 `PUT` 请求。回应不收费。

## 2. 检查回应结果

[检索消息](/docs/api/reference/get-whatsapp-message)以查看其当前 `reactions`，每个发送者一条记录。要了解某次特定更改的结果，请[列出消息的回应事件](/docs/api/reference/list-whatsapp-message-reaction-events)并查找已保存的回应 ID。

回应日志记录最终结果：`sent` 表示 WhatsApp 接受了你的更改，`failed` 表示 WhatsApp 拒绝了它，`rejected` 表示 Bird 在传输前拒绝了它。对于失败或被拒绝的更改，请检查事件的 `error`。待处理的回应尚无日志条目。回应没有送达回执、已读回执，也没有出站回应 webhook。

## 3. 移除你的回应

使用相同的消息 ID 调用[移除 WhatsApp 回应](/docs/api/reference/delete-whatsapp-message-reaction)：

**TypeScript**

```typescript
await bird.whatsapp.reaction.remove("wam_01krdgeqcxet5s7t44vh8rt9mg");
```

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

API 返回 `202`，没有响应正文。移除操作异步处理；检查消息的当前 `reactions` 或其回应日志以确认结果。移除日志条目具有 `emoji: null`。移除不存在的回应是安全的，此操作移除的是你工作区的回应，而非联系人的回应。

## 故障排除

- **`404` ([E15071](/docs/api/errors/E15071))**：检查目标消息 ID 和工作区。Bird 保留添加或移除回应所需的消息引用，有效期为 15 天。
- **`422` ([E01001](/docs/api/errors/E01001))**：使用收到的消息和单个表情。你无法对工作区发送的消息添加回应。组合表情算作一个表情；两个独立的表情则不算。
- **`202` 后回应未变化**：检查回应日志以查找失败或被拒绝的更改。成功的 HTTP 响应确认已接受处理。

## 后续步骤

- [接收回应变更](/docs/guides/whatsapp/receiving-whatsapp/reactions)
- [将消息标记为已读](/docs/guides/whatsapp/mark-message-as-read)
- [发送 WhatsApp 回复](/docs/guides/whatsapp/sending-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)
