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


