# Odbieranie reakcji WhatsApp

Subskrybuj zmiany reakcji, aby wiedzieć, kiedy kontakt dodaje emoji do jednej z Twoich wiadomości, zmienia je lub cofa. Reakcje oznaczają istniejącą wiadomość i przychodzą przez `whatsapp.reacted`.

## Wymagania wstępne

Skonfiguruj [endpoint webhooka](/docs/guides/webhooks) dla swojego obszaru roboczego. Aby pobrać bieżące reakcje lub ich historię, użyj klucza API z uprawnieniem do odczytu WhatsApp.

## 1. Subskrybuj zmiany reakcji

Dodaj `whatsapp.reacted` do subskrypcji webhooka. Subskrypcja `whatsapp.received` nie obejmuje reakcji. Postępuj zgodnie z [przewodnikiem po webhookach](/docs/guides/webhooks), aby skonfigurować weryfikację podpisu, ponowne dostarczanie i endpoint.

Reakcje nie tworzą nowej wiadomości na liście wiadomości ani nie otwierają okna obsługi klienta. Jeśli chcesz odpowiedzieć, sprawdź [reguły okna obsługi](/docs/guides/whatsapp/sending-whatsapp) przed wysłaniem wiadomości dowolnej treści.

## 2. Zidentyfikuj wiadomość i zmianę

Odczytaj `data.whatsapp_id` zdarzenia, aby znaleźć wiadomość, na którą kontakt zareagował. To jest oryginalny identyfikator wiadomości Bird (`wam_…`), a nie osobny identyfikator reakcji.

Użyj `data.from`, aby zidentyfikować kontakt, i `data.to`, aby zidentyfikować nadawcę WhatsApp. To są obiekty adresowe WhatsApp; obsłuż [identyfikatory użytkowników w zakresie firmy](/docs/guides/whatsapp/business-scoped-user-ids), gdy adres kontaktu nie zawiera numeru telefonu.

Kontakt dodający reakcję kciuka w górę powoduje wysłanie następującego webhooka:

```json
{
  "data": {
    "emoji": "👍",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "whatsapp_id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-08-28T19:01:10.000Z",
  "type": "whatsapp.reacted"
}
```

Interpretuj `data.emoji` w następujący sposób:

- Emoji o wartości innej niż null dodaje lub zastępuje reakcję tego kontaktu na wskazanej wiadomości.
- Emoji `null` usuwa reakcję tego kontaktu. Pole jest obecne w zdarzeniu usunięcia.

Zastąpienie przychodzi jako jedno zdarzenie z nowym emoji; nie ma osobnego zdarzenia usunięcia starego emoji. Zachowuj dokładny ciąg znaków: `❤` i `❤️` to różne wartości w payloadzie.

## 3. Pobierz bieżące reakcje

Jeśli Twoja aplikacja wyświetla reakcję aktualnie dołączoną do wiadomości, [pobierz wiadomość](/docs/api/reference/get-whatsapp-message) i odczytaj jej `reactions`. Lista zawiera jedną obowiązującą reakcję na nadawcę i jest pomijana, gdy żadna reakcja nie obowiązuje.

Dla `GET /v1/whatsapp/messages/wam_01ky8b3xq4gd7pmzn2ka51f7te` pola związane z reakcjami mają następującą postać (pozostałe pola wiadomości pominięto):

```json
{
  "id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
  "reactions": [
    {
      "emoji": "👍",
      "from": { "phone_number": "+14155550100" }
    }
  ]
}
```

Wiadomość zachowuje oryginalną treść, kierunek i status dostarczenia. `reactions[].from` identyfikuje osobę, która zareagowała.

Nie traktuj ostatniego otrzymanego webhooka jako bieżącego stanu. WhatsApp raportuje czasy reakcji z dokładnością do sekundy, więc zmiany mogą mieć ten sam znacznik czasu, a ponowienia webhooków mogą zmienić kolejność dostarczenia. Używaj webhooków do wyzwalania odświeżenia bieżących reakcji wiadomości.

## 4. Sprawdź historię reakcji

[Wyświetl zdarzenia reakcji](/docs/api/reference/list-whatsapp-message-reaction-events), aby sprawdzić zmiany w powiązanej wiadomości. Przychodzące zmiany kontaktu mają status `received`; usunięcie niesie `emoji: null`. Lista zawiera również wyniki [reakcji wysłanych z Twojego obszaru roboczego](/docs/guides/whatsapp/reactions).

Endpoint API reaction-events zwraca paginowaną odpowiedź. Ten przykład pokazuje odrzuconą reakcję biznesową i wcześniejszą odebraną reakcję kontaktu:

```json
{
  "data": [
    {
      "id": "war_01krdgeqcxet5s7t44vh8rt9mh",
      "emoji": "🎉",
      "status": "rejected",
      "from": {
        "phone_number": "+13124495569"
      },
      "error": {
        "code": "internal_error",
        "description": "the receiving number is no longer connected",
        "occurred_at": "2026-08-28T19:04:22Z"
      },
      "occurred_at": "2026-08-28T19:04:22Z"
    },
    {
      "id": "war_01krdgeqcxet5s7t44vh8rt9mg",
      "emoji": "👍",
      "status": "received",
      "from": {
        "phone_number": "+14155550100",
        "bsuid": "US.13491208655302741918"
      },
      "occurred_at": "2026-08-28T19:01:10Z"
    }
  ],
  "next_cursor": null,
  "prev_cursor": null,
  "refresh_cursor": "eyJ2IjoxLCJzIjoiMjAyNi0wOC0yOFQxOTowNDoyMloiLCJpIjoiMDE5ZTFiMDctNWQ5ZC03NjhiLTkzZTgtODRkYzUxOGQyNjkxIn0"
}
```

Historia reakcji jest oddzielona od zdarzeń dostarczenia wiadomości. Endpoint message-events nie zawiera zmian `whatsapp.reacted`. Informacje o retencji i paginacji znajdziesz w [dokumentacji logu reakcji](/docs/api/reference/list-whatsapp-message-reaction-events).

## Rozwiązywanie problemów

- **Brak webhooka reakcji**: Sprawdź, czy subskrypcja zawiera `whatsapp.reacted`. Reakcja na starszą wiadomość, której referencja dostawcy nie może już zostać rozwiązana, nie generuje dopasowanej reakcji, wpisu w logu ani webhooka.
- **Reakcja nie pojawia się na liście wiadomości**: Wyszukaj oryginalną wiadomość. Reakcja jest do niej dołączona i nie ma osobnego wiersza wiadomości.
- **Stan reakcji zmienia się nieoczekiwanie**: Odśwież `reactions` oryginalnej wiadomości zamiast porządkować zdarzenia webhooków według czasu dostarczenia lub znacznika czasu.

## Kolejne kroki

- [Wyślij lub usuń reakcję](/docs/guides/whatsapp/reactions)
- [Przeczytaj payloady zdarzeń WhatsApp](/docs/guides/whatsapp/events)
- [Odbieraj wiadomości 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)
