Как читать DLR-отчёт SMPP-шлюза: 5 метрик качества транзакционных SMS

Как читать DLR-отчёт SMPP-шлюза: 5 метрик качества транзакционных SMS

Чтобы понять, доходят ли транзакционные SMS до клиентов и на каком этапе возникают потери, проверяйте DLR-отчёт SMPP-шлюза. DLR (Delivery Receipt) — это отчёт о статусе доставки, который шлюз возвращает после попытки отправить сообщение. В нём может быть указано, что SMS доставлено, осталось в очереди, отклонено оператором или не дошло, например, потому что абонент недоступен. Формат отчёта зависит от шлюза: данные могут отображаться в личном кабинете, поступать на сервер через HTTP-callback или передаваться как PDU-пакеты по SMPP-соединению. Если не анализировать DLR, о сбоях можно узнать только из жалоб клиентов, а не из статусов сообщений.

Что показывает DLR

Отчёт обычно содержит идентификатор сообщения, статус доставки, временную метку и, если сообщение не доставлено, код ошибки. Он может прийти через секунду, через несколько минут, а иногда — примерно через час. Шлюз передаёт DLR одним из трёх способов: показывает в личном кабинете, отправляет HTTP-callback на ваш сервер или возвращает PDU-пакет по тому же SMPP-соединению, через которое поступают исходящие сообщения.

Число отправленных SMS само по себе не говорит о том, сколько сообщений получили абоненты. Статус «отправлено» означает, что шлюз принял сообщение в обработку, но не подтверждает доставку на устройство. Поэтому важно проверять DLR и смотреть не только на общие показатели, но и на ошибки, время ожидания и динамику статусов.

Некоторые платформы предоставляют визуальные отчёты и API для получения DLR, так что разбирать сырые данные SMPP может не потребоваться. Если провайдер не возвращает отчёты или передаёт их с задержкой более часа, уточните, какие возможности предусмотрены для получения статусов и устранения неполадок.

Как получить отчёты о доставке

  • Личный кабинет. Самый простой вариант: статусы появляются в разделе статистики или журнале отправки. Он подходит, если объём не превышает 5000 SMS в сутки и мгновенная реакция на сбои не нужна.
  • HTTP-callback. Шлюз отправляет на ваш URL POST-запрос с данными DLR в формате JSON или form-data. Сервер должен принять запрос и сохранить статусы. Такой способ подходит для интеграции с CRM и автоматической обработки сбоев.
  • SMPP PDU. Отчёт поступает отдельным пакетом по тому же соединению, что и исходящие SMS. Этот вариант подходит для высоконагруженных систем и требует специалиста, знакомого со спецификацией SMPP.

Если ни один способ получения DLR не доступен, вы не сможете надёжно отслеживать доставку. Уточните у провайдера, поддерживает ли он отчёты и в каком формате их передаёт. Для оценки других аспектов работы поставщика пригодится проверка качества SMS-шлюза.

Пять метрик для оценки доставки

В отчёте может быть от семи до двенадцати полей, но для первичной оценки обычно достаточно пяти показателей. Указанные ниже ориентиры помогают заметить отклонения; при разборе причин также учитывайте тип SMS, оператора и коды ошибок.

1. Submitted — принято шлюзом

Показатель Submitted, связанный с командой SUBMIT_SM, показывает, принял ли шлюз сообщение в обработку. Ориентир — 100% от отправленных сообщений. Если значение ниже, часть запросов шлюз не принял: возможны проблемы с API, неверный формат номера, блокировка по IP или превышение лимита сообщений в секунду. В этом случае проверьте ответ и журнал API.

2. Delivered — доставлено абоненту

Delivered, или успешный DLR, показывает долю сообщений, доставленных на устройство абонента, относительно принятых шлюзом. Ориентир — 95–99% от Submitted. Если показатель опускается ниже 95%, проверьте коды ошибок: причиной могут быть сбои у оператора или фильтрация сообщений. Само по себе значение Delivered не объясняет, почему конкретное SMS не дошло, поэтому анализируйте его вместе с деталями статусов.

3. Buffered или Queued — ожидает доставки

Этот статус означает, что сообщение находится в очереди оператора и ещё не доставлено. В качестве ориентира — до 2% сообщений в очереди в любой момент времени. Если доля превышает 5% и остаётся такой в течение часа, возможны перегрузка сети оператора или недоступность абонентов. Проверяйте, меняется ли статус позднее: нахождение в очереди ещё не равнозначно окончательному отказу.

4. Failed или Rejected — ошибка или отказ

Этот показатель объединяет сообщения, которые не удалось доставить по технической причине. Ориентир — до 3% от Submitted. Если доля превышает 5%, сгруппируйте записи по кодам ошибок. Они могут указывать на неверный или несуществующий номер, недоступность абонента, блокировку оператором либо попадание в чёрный список. Без кода ошибки общее значение Failed не позволяет определить источник проблемы.

5. Time-to-DLR — время до отчёта

Time-to-DLR, или задержка DLR, — это время между отправкой SUBMIT и получением отчёта. Для транзакционных SMS ориентир составляет 1–30 секунд. Если отчёт приходит более чем через две минуты, задержка может быть критичной для одноразовых паролей и уведомлений о доставке. При этом статус Delivered может быть успешным, но сообщение всё равно окажется бесполезным для клиента, если опоздает к моменту, когда оно было нужно.

Как рассчитать показатели по журналу

  1. Откройте журнал отправки за выбранный период — например, за последние 24 часа — и выгрузите данные в CSV или Excel, если такая функция доступна.
  2. Разделите сообщения по назначению. Отдельно учитывайте транзакционные SMS: OTP-коды, подтверждения заказа и статусы доставки. Не смешивайте их с сервисными уведомлениями, например напоминаниями о встрече: для разных типов сообщений могут быть важны разные показатели.
  3. Рассчитайте Delivered Rate: количество доставленных сообщений разделите на количество принятых шлюзом и умножьте на 100%. Если результат ниже 95%, переходите к анализу Failed и кодов ошибок.
  4. Посчитайте среднее время между отправкой и DLR. Для транзакционных сообщений ориентир — до 30 секунд. Если медиана превышает две минуты, проверьте, не задерживает ли доставка получение важных кодов.
  5. Сгруппируйте неуспешные сообщения по кодам. Статусы «абонент недоступен», «номер не существует» и «отклонено оператором» указывают на разные ситуации, поэтому их не следует считать одной причиной.

Если платформа не рассчитывает метрики автоматически, выгрузка журнала и группировка статусов помогут начать проверку вручную. О влиянии показателей доставки на отношение клиентов к сервису можно узнать в материале о метриках доставки SMS.

Как действовать при ухудшении показателей

Delivered Rate ниже 95%

Сначала изучите ошибки, а не меняйте настройки наугад. Если часто встречается статус «отклонено оператором», запросите у провайдера информацию о маршруте и возможности использовать альтернативный канал или ротацию. Если преобладает статус «абонент недоступен», это может быть связано с выключенными телефонами, а не с качеством маршрута. Ошибки «номер не существует» указывают на необходимость проверить базу номеров.

Time-to-DLR составляет несколько минут

Для одноразовых кодов и других срочных сообщений задержка в несколько минут может сделать доставку неэффективной. Проверьте нагрузку на шлюз и ограничения пропускной способности. Например, если система отправляет 10 000 OTP в минуту и шлюз не справляется, обсудите с провайдером увеличение пропускной способности или распределите отправку по времени.

Submitted ниже 100%

Это означает, что шлюз не принял часть сообщений. Проверьте журнал API: там может быть указан код ошибки. Среди возможных причин — превышение лимита сообщений в секунду, неправильный формат номера или блокировка по IP. Исправлять нужно именно ту причину, на которую указывает ответ шлюза.

Если отправки регулярно упираются в ограничения операторов, проверьте настройки лимитов и распределения трафика. Подробности приведены в материале об управлении лимитами операторов.

Ошибки, из-за которых DLR читают неправильно

  • Считать отправленное доставленным. Принятие сообщения шлюзом — это не подтверждение получения абонентом. Для этого нужен положительный DLR.
  • Не учитывать коды ошибок. Общий статус Failed не показывает, связана ли проблема с номером, оператором или настройками системы.
  • Опираться только на среднее за большой период. Показатель за месяц может скрыть резкое ухудшение в отдельные часы или дни. Сравнивайте данные в динамике.
  • Смешивать типы сообщений. Маркетинговые SMS операторы могут фильтровать строже, чем транзакционные. В исходных ориентирах для маркетинговых сообщений указан Delivered Rate 85–90%, поэтому сравнение с транзакционными SMS может быть некорректным.
  • Игнорировать задержку. Успешный статус не отменяет того, что поздно пришедший OTP-код может уже не помочь клиенту.

Как часто проверять отчёты

Для транзакционных SMS проверяйте DLR ежедневно. Если клиенты получают коды подтверждения и уведомления о заказах, резкое ухудшение доставки может быстро привести к жалобам. Можно настроить оповещение, если Delivered Rate среди последних 100 сообщений падает ниже 90%. Для сервисных уведомлений, например напоминаний о встрече или статуса доставки, достаточно еженедельной проверки, если задержка в несколько часов не критична.

Если объём отправки большой, а показатели регулярно ухудшаются, рассмотрите ротацию каналов между операторами: это уменьшает зависимость от одного маршрута. При этом продолжайте отдельно отслеживать Delivered, Failed и время получения DLR — смена маршрута не заменяет анализ отчётов.

Если шлюз не передаёт DLR

Без отчётов нельзя надёжно отличить доставленное SMS от потерянного. Если провайдер не возвращает DLR, запросите включение этой функции и уточните, какие способы получения доступны. Если отчёты есть только в личном кабинете, но нужна автоматическая реакция на сбои, узнайте, поддерживает ли шлюз HTTP-callback. Если нужных возможностей нет, сравните альтернативных провайдеров.

Для начала откройте журнал отправки и рассчитайте Delivered Rate за последние семь дней. Если показатель ниже 95%, сгруппируйте Failed по кодам ошибок: это даст конкретную отправную точку для разговора с провайдером или исправления данных.