HTTPS API v2 / WhatsApp Webhook
Webhook URL przypisany do agenta WhatsApp służy do przekazywania zdarzeń generowanych podczas konwersacji z użytkownikiem. Mechanizm ten umożliwia integrację systemu z zewnętrznymi usługami poprzez wysyłanie żądań HTTP POST zawierających dane zdarzenia w formacie JSON. Powiadomienia mogą obejmować m.in. informacje o wygenerowanych raportach, interakcjach użytkownika (np. wybór sugerowanej odpowiedzi) oraz wiadomościach wysyłanych przez użytkownika. Każde zdarzenie jest klasyfikowane na podstawie pola 'type', które określa jego typ i strukturę danych:
- report – wygenerowany raport wiadomości,
- reply – odpowiedź użytkownika wybrana z sugerowanych opcji,
- message – wiadomość tekstowa wysłana przez użytkownika,
- template – zdarzenia związane ze zmianą stanu szablonów,
- template_quality – aktualizacja jakości szablonów,
- template_category – zmiana kategorii szablonów.
Request HTTP
Komunikacja odbywa się poprzez HTTP POST z payloadem w formacie JSON (Content-Type: application/json). Ruch wychodzący dla mechanizmu powiadomień realizowany jest z adresów IP 94.152.153.158 / 94.152.131.145. Przesyłany payload może zawierać tablicę obiektów, przy czym maksymalna liczba elementów w pojedynczym żądaniu wynosi 30.
Struktury JSON
1. Typ 'report':
[{
"type": "report",
"phone": "48100100100",
"status": "displayed",
"date": "2022-05-04 16:55:45",
"msgid": "wamid.HBgLNDg3OTE3NjEwNTcVAgARGBJGOTcyNUExMjkxMDRCMzM1RDcA",
"smsid": "d4505eaeb9",
"mcc": "260",
"pricing": {
"billable": false,
"pricing_model": "PMP",
"category": "service",
"type": "free_customer_service"
},
"whatsapp_id":"12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. W tym przypadku 'report' oznacza raport statusu wiadomości
- phone - numer telefonu użytkownika w formacie międzynarodowym (MSISDN), np. 48100100100
- status - status wiadomości
- date - data i godzina wystąpienia zdarzenia w formacie YYYY-MM-DD HH:MM:SS
- msgid - unikalny identyfikator wiadomości w systemie WhatsApp
- smsid - wewnętrzny identyfikator wiadomości w systemie SerwerSMS
- mcc - Mobile Country Code – kod kraju sieci komórkowej, np. 260 dla Polski
- pricing - obiekt zawierający informacje o modelu rozliczeniowym oraz klasyfikacji wiadomości lub zdarzenia w kontekście billingowym
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
Dostępne wartości parametru 'status':
- sent - wiadomość została przyjęta do wysyłki
- unsent - wiadomość nie została poprawnie wysłana
- delivered - wiadomość została dostarczona
- displayed - wiadomość została odczytana
- expired - wiadomość nie została dostarczona i minął okres jej ważności
Dostępne wartości parametru 'pricing ':
- billable – informacja, czy wiadomość podlega opłacie (true/false)
- pricing_model – model rozliczeniowy (np. PMP Per Message Pricing czyli rozliczenie per wiadomość)
- category – kategoria wiadomości (np. service - rozmowa inicjowana przez użytkownika lub mieszcząca się w oknie obsługi klienta)
- type – typ taryfy, np. free_customer_service czyli wiadomość w ramach darmowego okna obsługi klienta, w którym firma może odpowiadać użytkownikowi bez opłat
2. Typ 'reply':
[{
"type": "reply",
"phone": "48100100100",
"text": "Tak, zgadzam się!",
"date": "2022-05-04 16:55:45",
"msgid": "wamid.HBgLNDg3OTE3NjEwNTcVAgARGBJGOTcyNUExMjkxMDRCMzM1RDcA",
"data": "21",
"profile": {
"profile": {
"name": "Jan Kowalski"
},
"wa_id": "48100100100",
"user_id": "PL.2000000000000000"
},
"whatsapp_id":"12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. Wartość 'reply' oznacza odpowiedź użytkownika na wcześniej zaproponowaną interakcję
- phone - numer telefonu nadawcy w formacie międzynarodowym (MSISDN), np. 48100100100
- text - treść odpowiedzi użytkownika
- date - data i godzina wysłania odpowiedzi w formacie YYYY-MM-DD HH:MM:SS
- msgid - unikalny identyfikator wiadomości nadany przez WhatsApp
- data - identyfikator klikniętego przycisku
- profile - dane profilu użytkownika zawierające nazwę, numer telefonu oraz unikalny identyfikator użytkownika w systemie Meta
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
3. Typ 'message':
[{
"type": "message",
"phone": "48100100100",
"text": "Stop",
"date": "2022-05-04 16:55:45",
"msgid": "wamid.HBgLNDg3OTE3NjEwNTcVAgARGBJGOTcyNUExMjkxMDRCMzM1RDcA",
"profile": {
"profile": {
"name": "Jan Kowalski"
},
"wa_id": "48100100100",
"user_id": "PL.2000000000000000"
},
"whatsapp_id": "12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. Wartość 'message' oznacza odpowiedź użytkownika w postaci odesłanej wiadomości zwrotnej
- phone - numer telefonu nadawcy w formacie międzynarodowym (MSISDN), np. 48100100100
- text - treść odpowiedzi użytkownika
- date - data i godzina wysłania odpowiedzi w formacie YYYY-MM-DD HH:MM:SS
- msgid - unikalny identyfikator wiadomości nadany przez WhatsApp
- profile - dane profilu użytkownika zawierające nazwę, numer telefonu oraz unikalny identyfikator użytkownika w systemie Meta
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
4. Typ 'template':
[{
"type": "template",
"template_id": "1228394058379665",
"template_name": "serwersms_indywidualny_marketing_test",
"language": "pl",
"category": "MARKETING",
"status": "APPROVED",
"reason": "NONE",
"whatsapp_id": "12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. Wartość 'template' oznacza powiadomienie dotyczące szablonu
- template_id - identyfikator szablonu Mety
- template_name - wygenerowana nazwa szablonu
- language - język szablonu (domyślnie 'pl')
- category - kategoria szablonu
- status - status szablonu
- reason - ewentualna przyczyna odrzucenia szablonu
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
5. Typ 'template_quality':
[{
"type": "template_quality",
"template_id": "1228394058379665",
"template_name": "serwersms_indywidualny_marketing_test",
"language": "pl",
"previous_quality_score": "UNKNOWN",
"new_quality_score": "GREEN",
"whatsapp_id": "12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. Wartość 'template_quality' oznacza powiadomienie dotyczące zmiany jakości szablonu
- template_id - identyfikator szablonu Mety
- template_name - wygenerowana nazwa szablonu
- language - język szablonu (domyślnie 'pl')
- previous_quality_score - poprzednia jakość szablonu
- new_quality_score - nowa jakość szablonu
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
6. Typ 'template_category':
[{
"type": "template_category",
"template_id": "1228394058379665",
"template_name": "serwersms_indywidualny_marketing_test",
"language": "pl",
"previous_category": "UTILITY",
"new_category": "MARKETING",
"correct_category": "MARKETING",
"category_appeal_status": "APPROVED",
"whatsapp_id": "12341314-1230-12ae-1234-123458a0c6ea"
}]
Oznaczenia pól:
- type - typ zdarzenia. Wartość 'template_category' oznacza powiadomienie dotyczące zmiany kategorii szablonu
- template_id - identyfikator szablonu Mety
- template_name - wygenerowana nazwa szablonu
- language - język szablonu (domyślnie 'pl')
- previous_category - poprzednia kategoria szablonu
- new_category - nowa kategoria szablonu
- correct_category - właściwa kategoria szablonu
- category_appeal_status - status szablonu
- whatsapp_id - identyfikator agenta w systemie SerwerSMS
Weryfikacja odpowiedzi
W panelu klienta, dla wybranego agenta WhatsApp, istnieje możliwość konfiguracji response tag (tagu oczekiwanej odpowiedzi). Jeżeli tag zostanie zdefiniowany jako niepusty ciąg znaków, system przechodzi w tryb oczekiwania na zgodną odpowiedź. W takim przypadku poprawna odpowiedź musi zawierać lub być równa zdefiniowanemu tagowi, aby zostać uznana za prawidłową. W przypadku braku zgodnej odpowiedzi system uruchamia mechanizm retry (ponowień zapytania), zgodnie z następującymi interwałami, dla raportów doręczeń (DLR) ponowienia wykonywane są co 30 minut, natomiast dla odpowiedzi użytkowników co 5 minut. Mechanizm działa do momentu osiągnięcia maksymalnie 5 prób, po czym proces zostaje zakończony jako nieudany.