Уточнення статусу
Статус каже, що сталося з повідомленням, уточнення — чому. Це дворівневий код джерело.причина, який повертається поруч зі статусом:
- поле
status_detail— статус у JSON і вебхук; - атрибут
status_detail— статус у XML; - рядок
status_detail:— статус у HTTP; - параметр
status_detail— звіт про доставку.
Перший рівень називає, де причина, а не статус: recipient — на боці абонента, sender — відправник, template — шаблон, content — вміст повідомлення, policy — правила месенджера, channel — канал доставки. Тому REJECTED з recipient.no_viber_user читається як «відхилено, бо в абонента немає Viber».
Правила:
- Уточнення є, лише коли причину відомо. Інакше такого поля немає, і відповідь точно така, як раніше.
- Сам статус не змінюється: уточнення додається поруч зі статусом, який повідомлення вже має.
- Уточнення стосується каналу, яким іде повідомлення. Якщо недоставлене повідомлення Viber переслано через SMS, причина Viber до нього більше не стосується, і уточнення зникає.
- Нові коди з часом додаються, наявні не перейменовуються. Незнайомий код вважайте «уточнення немає» і продовжуйте обробляти статус.
| Код | Опис |
|---|---|
recipient.no_viber_user | На номері немає Viber |
recipient.no_whatsapp_user | Номер не приймає WhatsApp: месенджера немає або він застарів |
recipient.blocked_sender | Абонент заблокував відправника |
recipient.opted_out | Абонент відмовився від рекламних повідомлень |
recipient.no_suitable_device | Немає пристрою абонента, що може прийняти повідомлення |
policy.marketing_limit | Месенджер обмежив рекламні повідомлення цьому абоненту |
policy.outside_service_window | WhatsApp: минуло 24 години з останнього повідомлення абонента — надішліть шаблон |
sender.not_permitted | Відправника не підтверджено або йому заборонено надсилання |
sender.message_type_not_allowed | Цей тип повідомлень заборонено для відправника |
template.not_found | Шаблон не знайдено |
template.unavailable | Шаблон призупинено або вимкнено |
template.parameters_mismatch | Параметри не відповідають шаблону |
content.spam | Заблоковано як спам |
content.blacklisted_word | Текст містить заборонене слово |
content.invalid_text | Текст порожній або задовгий |
content.invalid_media | Помилка у вкладенні: зображенні, відео, файлі чи підписі |
content.invalid_button | Помилка в кнопці або її посиланні |
content.invalid_carousel | Помилка в каруселі |
content.invalid_parameters | Інші некоректні параметри повідомлення |
channel.no_route | Немає маршруту доставки до номера |
channel.provider_error | Збій на боці каналу доставки |
Приклад — статус у JSON для повідомлення Viber, не доставленого тому, що на номері немає Viber:
{
"msg_id": 123456789,
"type": "viber",
"status": "REJECTED",
"success": false,
"updated": "2026-10-20T12:34:00+03:00",
"status_detail": "recipient.no_viber_user"
}