Sign inGet started

Odbieranie interaktywnych odpowiedzi WhatsApp

Stuknięcie przycisku odpowiedzi, wiersza listy lub przycisku szybkiej odpowiedzi szablonu przychodzi jako osobna wiadomość przychodząca zawierająca interactive_reply. Ramię zwraca uchwyt ustawiony przy wysyłce, więc przepływ rozgałęzia się na podstawie Twojego identyfikatora, a nie etykiety, którą widział kontakt.

Co zawiera przychodząca odpowiedź interaktywna

type określa rodzaj stuknięcia, a pole o tej samej nazwie je zawiera:
Przykład kodu
{
  "id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "interactive_reply": {
    "type": "button",
    "button": { "slug": "cancel-booking", "text": "Cancel" }
  },
  "created_at": "2026-08-25T09:04:11Z"
}
typePoleCo zawiera
buttonbuttonslug i text przycisku odpowiedzi lub przycisku szybkiej odpowiedzi szablonu
listlistslug i text wiersza wybranego przez kontakt oraz jego description, jeśli go miał
Wiersz listy zastępuje button przez list i dodaje drugą linię, którą wiersz wyświetlał:
Przykład kodu
{
  "interactive_reply": {
    "type": "list",
    "list": {
      "slug": "priority_express",
      "text": "Priority Mail Express",
      "description": "Next day to 2 days"
    }
  }
}
slug to uchwyt, który zadeklarowałeś i którego kontakt nigdy nie widział; text to etykieta, którą przeczytał. Rozgałęziaj na podstawie slug. Etykiety bywają przeformułowywane i tłumaczone, a przy stuknięciu przycisku szybkiej odpowiedzi szablonu slug to ładunek zadeklarowany przez ten szablon, który WhatsApp ustawia na własną etykietę przycisku.
Lista rodzajów jest otwarta: WhatsApp dodaje nowe rodzaje interaktywne z czasem, więc traktuj nierozpoznany type jako przyszły rodzaj, a nie błąd, i zaloguj wiadomość zamiast przerywać odczyt.

Powiązanie stuknięcia z wysłaną wiadomością

in_reply_to_message_id wskazuje wiadomość, która zawierała przycisk lub menu, dzięki czemu wiesz, na które pytanie jest ta odpowiedź. WhatsApp nie raportuje go przy każdym stuknięciu, a rozwiązanie może też nie nastąpić, i wtedy pole jest pomijane, a nie zwracane jako puste. Sekcja cytowane odpowiedzi w hubie opisuje, co oznacza brak rozwiązania i jak długo cytowana wiadomość pozostaje rozwiązywalna.
Jeśli korelacja musi być niezawodna, umieść własną referencję w samym slug lub w metadata przy wysyłce, zamiast polegać na tym polu. Szczegóły wysyłki znajdziesz w sekcji cytowanie wiadomości.

Dwa stuknięcia, które trafiają gdzie indziej

Dwa typy interaktywne odpowiadają w ogóle bez interactive_reply:
Przycisk z linkiem nie odsyła niczego: kontakt przechodzi pod URL i żadna wiadomość przychodząca nie rejestruje stuknięcia. Integracja obserwująca tylko interactive_reply przeoczy wszystkie trzy przypadki.

Ładunek webhooka

whatsapp.received zawiera ramię interactive_reply w kopercie zdarzenia, więc bot może odpowiedzieć na stuknięcie bez ponownego odczytywania wiadomości:
Przykład kodu
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:04:11.118Z",
  "data": {
    "whatsapp_id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
    "to": { "phone_number": "+13124495569" },
    "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
    "interactive_reply": {
      "type": "button",
      "button": { "slug": "cancel-booking", "text": "Cancel" }
    },
    "tags": null,
    "metadata": null
  }
}

Na co uważać

  • interactive i interactive_reply to przeciwne kierunki. interactive to to, co wysłałeś, i nigdy nie przychodzi jako wiadomość przychodząca; interactive_reply to to, co kontakt stuknął, i nigdy nie pojawia się w wiadomości wychodzącej.
  • Stuknięcie resetuje okno serwisowe. Jest wiadomością przychodzącą, więc otwiera 24 godziny swobodnych odpowiedzi tak samo jak wiadomość tekstowa.
  • Kontakt może stuknąć ten sam przycisk dwa razy. Nic nie deduplikuje stuknięć, więc każde z nich jest osobną wiadomością z własnym ID. Spraw, żeby akcja wykonywana na podstawie slug była idempotentna.
  • Stuknięcie starego menu wciąż dochodzi. Kontakt przewijający wstecz może stuknąć przycisk sprzed kilku dni, więc sprawdzaj, czy przepływ jest nadal otwarty, zamiast zakładać, że stuknięcie odpowiada na Twoją najnowszą wiadomość.

Następne kroki