Как собрать отчёт по недоставленным SMS за смену и быстро реагировать на сбои

Как собрать отчёт по недоставленным SMS за смену и быстро реагировать на сбои

Отчёт по недоставленным SMS за смену — это простой набор действий: выгрузить статусы доставки из личного кабинета или по API, сгруппировать их по кодам ошибок, посчитать долю недоставленных сообщений и сразу эскалировать проблему оператору или клиенту. В этой статье разберём, какие статусы важно отслеживать, как читать коды ошибок SMPP, что делать при массовых сбоях и как собрать рабочий отчёт за 15–20 минут.

Какие статусы доставки нужно отслеживать в первую очередь

SMS-шлюз возвращает для каждого сообщения статус доставки. Их три базовых состояния: «доставлено», «в очереди» и «не доставлено» с конкретным кодом ошибки. Для ежедневного контроля достаточно смотреть на соотношение этих трёх групп. Если доля недоставленных за смену превышает обычный фон (у каждого канала он свой), это уже сигнал для разбора.

В практике встречаются такие коды ошибок SMPP, которые сервис рассылок возвращает в статусе: expired (время жизни сообщения истекло), undeliverable (абонент недоступен или номер не существует), submit_failed (отказ на стороне оператора). Полный список кодов и их расшифровка есть в документации провайдеров, например у SMS-центра или REDSMS. Эти справочники пригодятся, когда нужно понять причину сбоя по конкретному сообщению.

Как читать коды ошибок и быстро находить причину

Коды SMPP делятся на группы. Сетевые — связаны с оператором связи и каналом, например перегрузка или тайм-аут. Клиентские — некорректный номер, абонент заблокировал приём SMS или обслуживается в роуминге. Сервисные — ошибки на стороне провайдера: сбой авторизации, превышение квоты, проблемы с биллингом. Без таблицы кодов разобраться в причинах сложно, поэтому первое, что стоит сделать — сохранить себе справочник из документации используемого сервиса.

Группа ошибокТипичные коды SMPPЧто означаетЧто делать
Номер абонентаInvalid MSISDN, UndeliverableНекорректный номер, абонента нет в сетиПочистить базу, проверить формат с кодом страны
Сеть оператораNetwork error, Temporary failureПерегрузка канала, сбой у оператораПовторить отправку через 10–15 минут
АбонентSubscriber absent, RoamingТелефон выключен или вне зоны покрытияДождаться повторной попытки или предупредить клиента
АвторизацияInvalid password, Bind failedСбой подключения к SMPP-шлюзуПроверить логин, пароль и IP в настройках
БиллингThrottling, Quota exceededПревышен лимит отправки или балансПополнить счёт, уменьшить скорость рассылки

Как собрать отчёт по недоставленным SMS за смену

Проще всего работать с выгрузкой из личного кабинета или через API. В большинстве сервисов доступен фильтр по дате и статусу. Запрос формируется так: выбираем период «смена», статус «undeliverable» или «expired», получаем список ID сообщений с кодами ошибок. Эту выгрузку удобно открыть в Excel или Google Sheets и сгруппировать по коду.

Для ежедневной рутины хватает трёх метрик. Общее число отправленных SMS. Число недоставленных с разбивкой по группам ошибок. Доля недоставленных в процентах от общего объёма. Если доля выросла по сравнению со вчера — повод смотреть детально. Если выросла и держится выше нормы — повод эскалировать.

Что делать при массовом сбое доставки

Когда доля недоставленных SMS за смену резко выросла, действуйте по простому алгоритму. Сначала проверьте, нет ли предупреждений на странице статуса SMPP-шлюза вашего провайдера — такие сервисы, как targetsms или smsdirector, публикуют уведомления о плановых и аварийных работах. Затем посмотрите, не меняли ли вы логин или пароль для подключения: ошибки авторизации часто маскируются под сетевые.

Если сбой на стороне канала, попробуйте снизить скорость отправки. SMPP-протокол поддерживает throttling — ограничение числа сообщений в секунду. При перегрузке оператор возвращает ошибки, поэтому пауза между пакетами в 2–3 раза дольше обычной часто решает проблему. Когда и это не помогает, обращайтесь в поддержку провайдера с конкретными кодами ошибок и временем их появления — так разбор пойдёт быстрее.

Типичные ошибки при работе с отчётами по SMS

  • Смотрят только на число доставленных и не учитывают «в очереди» — сообщение может «висеть» до 24 часов и портить картину.
  • Игнорируют коды ошибок и реагируют только на слова «не доставлено» — без кода непонятно, чистить базу или звонить оператору.
  • Читают отчёт раз в неделю вместо каждой смены — массовый сбой замечают слишком поздно.
  • Не сохраняют историю статусов — через месяц невозможно понять, какой процент недоставки был нормой.
  • Отправляют повторно сразу после ошибки без паузы — оператор блокирует канал из-за подозрения на спам.
  • Используют один и тот же канал на все типы SMS — для кодов подтверждения и сервисных уведомлений лучше держать разные приоритеты.

Как автоматизировать контроль доставки

Если объём SMS у бизнеса больше нескольких сотен в день, ручная выгрузка статусов быстро надоедает. В этом случае подключают API или SMPP-шлюз напрямую и пишут простой скрипт, который раз в час запрашивает статусы и считает долю недоставки. При превышении порога скрипт шлёт письмо или сообщение в чат администратору. Такой мониторинг занимает у разработчика пару часов, но экономит дни на разбор сбоев. Если тема интересна глубже, посмотрите, как настраивают мониторинг доставки сервисных SMS и уведомления о готовности заказа — там описаны смежные сценарии для малого бизнеса.

3 шага, которые можно сделать уже сегодня:

  1. Выгрузить статусы SMS за последнюю смену и посчитать долю недоставленных сообщений по группам ошибок.
  2. Сохранить себе справочник кодов SMPP из документации используемого провайдера и повесить его рядом с рабочим местом.
  3. Настроить уведомление администратору, если доля недоставки за час превышает обычный фон в 2–3 раза.