Уточнения статуса
Статус говорит, что случилось с сообщением, уточнение — почему. Это двухуровневый код источник.причина, который отдаётся рядом со статусом:
- поле
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"
}