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
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Obejrzyj przewodnikConnecting WhatsApp to Bird: from buying a number to a live channelZrozum koncepcjęWhat is the 24-hour customer service window on WhatsApp?Użyj narzędziaWhatsApp message builderPoznaj możliwościWhatsApp
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy