Sign inGet Started

Zdarzenia reakcji WhatsApp

Reakcja emoji oznacza istniejącą wiadomość, a nie tworzy nową, dlatego nigdy nie pojawia się jako osobna wiadomość ani wśród jej zdarzeń statusu wiadomości. Bird przechowuje zamiast tego dwa widoki: reakcje aktualnie przypisane do wiadomości oraz dziennik każdej zmiany, która do nich doprowadziła. Oba rejestrują zmiany dokonane przez kontakt i przez Twój numer firmowy.

Aby otrzymywać powiadomienia o reakcji kontaktu w czasie rzeczywistym, zasubskrybuj whatsapp.reacted. Aby dodać lub usunąć własną reakcję, zobacz Wysyłanie reakcji.

Wymagania wstępne

Klucz API z uprawnieniem do odczytu WhatsApp oraz ID (wam_…) wiadomości, na którą dodano reakcję.

1. Odczytaj bieżące reakcje

Jeśli Twoja aplikacja wyświetla reakcję aktualnie przypisaną do wiadomości, pobierz wiadomość i odczytaj jej reactions. Lista zawiera jedną aktywną reakcję na nadawcę i jest pomijana, gdy żadna reakcja nie jest przypisana.

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

Przykład kodu
{
  "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.

To jest stan do wyświetlenia. Webhooki reakcji mogą mieć ten sam znacznik czasu i docierać w zmienionej kolejności, więc traktuj webhook jako wyzwalacz do ponownego odczytu wiadomości, a nie jako bieżący stan.

2. Odczytaj dziennik reakcji

Wyświetl zdarzenia reakcji z GET /v1/whatsapp/messages/{message_id}/reaction-events, aby zobaczyć każdą zmianę w powiązanej wiadomości, od najnowszej: dodania, zastąpienia i usunięcia. Każdy wpis zawiera ID reakcji (war_…), emoji, autora zmiany w from, znacznik czasu occurred_at oraz status:

  • received: zmiana dokonana przez kontakt.
  • sent: WhatsApp zaakceptował zmianę dokonaną przez Twój numer firmowy.
  • failed: WhatsApp odrzucił Twoją zmianę.
  • rejected: Bird odrzucił Twoją zmianę przed jej wysłaniem.

Wpis failed lub rejected zawiera przyczynę w error. Usunięcie zawiera emoji: null. Twoja zmiana, która wciąż jest w toku, nie ma wpisu do momentu poznania wyniku. Reakcja nigdy nie jest płatna, więc żadna awaria tutaj nie jest kwestią rozliczeniową.

Endpoint API zdarzeń reakcji zwraca odpowiedź stronicowaną. Ten przykład pokazuje odrzuconą reakcję firmową i wcześniejszą otrzymaną reakcję kontaktu:

Przykład kodu
{
  "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 zdarzeń statusu wiadomości nie zawiera zmian whatsapp.reacted. Informacje o przechowywaniu danych i paginacji znajdziesz w dokumentacji dziennika reakcji.

Rozwiązywanie problemów

  • Reakcja nie pojawia się na liście wiadomości: Wyszukaj oryginalną wiadomość. Reakcja jest do niej przypisana i nie ma osobnego wiersza wiadomości.
  • Stan reakcji zmienia się niespodziewanie: Odczytaj reactions wiadomości zamiast sortować zdarzenia webhooków według czasu dostarczenia lub znacznika czasu.

Następne kroki