# Mengirim reaksi WhatsApp

Bereaksi terhadap pesan kontak dengan emoji, misalnya jempol untuk mengonfirmasi balasan mereka. Anda dapat mengganti reaksi atau menghapusnya nanti.

## Prasyarat

Anda memerlukan kunci API dengan izin tulis WhatsApp dan ID pesan Bird (`wam_…`) dari pesan yang diterima workspace Anda. Gunakan `data.whatsapp_id` dari [`whatsapp.received`](/docs/guides/whatsapp/receiving-whatsapp), atau `id` pesan dari [log WhatsApp](/docs/guides/whatsapp/message-log).

Ganti contoh ID pesan dengan ID pesan yang diterima workspace Anda. Inisialisasi klien untuk bahasa Anda menggunakan panduan SDK [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go), atau [PHP](/docs/sdks/php). Untuk contoh CLI, [instal dan autentikasi CLI](/docs/cli#authenticate) dengan akses tulis WhatsApp. Gunakan host API sesuai [region workspace](/docs/api/regions) Anda dalam permintaan cURL.

## 1. Menambahkan reaksi

Panggil [React to a WhatsApp message](/docs/api/reference/upsert-whatsapp-message-reaction) dengan satu emoji:

**TypeScript**

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

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

API mengembalikan `202` dengan `id` (`war_…`) dan `emoji` reaksi yang diterima. Simpan ID reaksi untuk menemukan hasilnya di log reaksi. Penerimaan tidak mengonfirmasi bahwa WhatsApp menerapkan reaksi tersebut.

Anda hanya memiliki satu reaksi per pesan. Untuk menggantinya, ulangi permintaan `PUT` dengan emoji berbeda. Reaksi tidak dikenakan biaya.

## 2. Memeriksa hasil reaksi

[Retrieve the message](/docs/api/reference/get-whatsapp-message) untuk melihat `reactions` saat ini, dengan satu entri per pengirim. Untuk hasil perubahan tertentu, [list the message's reaction events](/docs/api/reference/list-whatsapp-message-reaction-events) dan temukan ID reaksi yang disimpan.

Log reaksi mencatat hasil akhir: `sent` berarti WhatsApp menerima perubahan Anda, `failed` berarti WhatsApp menolaknya, dan `rejected` berarti Bird menolaknya sebelum transmisi. Periksa `error` pada event untuk perubahan yang gagal atau ditolak. Reaksi yang masih tertunda belum memiliki entri log. Reaksi tidak memiliki tanda terima pengiriman atau baca, dan tidak ada webhook reaksi keluar.

## 3. Menghapus reaksi Anda

Panggil [Remove a WhatsApp reaction](/docs/api/reference/delete-whatsapp-message-reaction) dengan ID pesan yang sama:

**TypeScript**

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

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

API mengembalikan `202` tanpa body respons. Penghapusan diproses secara asinkron; periksa `reactions` pesan saat ini atau log reaksinya untuk mengonfirmasi hasilnya. Entri log penghapusan memiliki `emoji: null`. Menghapus reaksi yang tidak ada aman dilakukan, dan operasi ini menghapus reaksi workspace Anda, bukan reaksi kontak.

## Pemecahan masalah

- **`404` ([E15071](/docs/api/errors/E15071))**: Periksa ID pesan target dan workspace. Bird menyimpan referensi pesan yang diperlukan untuk menambah atau menghapus reaksi selama 15 hari.
- **`422` ([E01001](/docs/api/errors/E01001))**: Gunakan pesan yang diterima dan satu emoji. Anda tidak dapat bereaksi terhadap pesan yang dikirim workspace Anda. Emoji gabungan dihitung sebagai satu emoji; dua emoji terpisah tidak.
- **Reaksi tidak berubah setelah `202`**: Periksa log reaksi untuk perubahan yang gagal atau ditolak. Respons HTTP yang berhasil mengonfirmasi penerimaan untuk diproses.

## Langkah selanjutnya

- [Menerima perubahan reaksi](/docs/guides/whatsapp/receiving-whatsapp/reactions)
- [Menandai pesan sebagai dibaca](/docs/guides/whatsapp/mark-message-as-read)
- [Mengirim balasan 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)
