Sign inGet started

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 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, 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 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, gdy adres kontaktu nie zawiera numeru telefonu.
Kontakt dodający reakcję kciuka w górę powoduje wysłanie następującego webhooka:
Przykład kodu
{
  "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ść 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):
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.
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, 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.
Endpoint API reaction-events zwraca paginowaną odpowiedź. Ten przykład pokazuje odrzuconą reakcję biznesową i wcześniejszą odebraną 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 message-events nie zawiera zmian whatsapp.reacted. Informacje o retencji i paginacji znajdziesz w dokumentacji logu reakcji.

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