Как проверять номера по HLR до отправки SMS?

Как проверять номера по HLR до отправки SMS?

HLR-запрос показывает, существует ли номер и может ли он принять SMS, еще до рассылки. DLR-статус рассказывает о судьбе сообщения после отправки. Через SMPP-шлюз подключаются оба механизма: сначала вы отсеиваете несуществующие номера, затем анализируете доставку. Разберем, как это работает, как настроить фильтрацию и что делать со статусами, чтобы не платить за сообщения, которые не могут быть доставлены.

Что такое HLR и зачем он нужен?

HLR — это база данных оператора связи. В ней хранится информация об абоненте: активен ли номер, подключен ли к сети, поддерживает ли SMS. По запросу оператор отвечает, существует номер или нет. Это быстрая проверка перед отправкой — вы заранее видите, какие номера «мертвые».

SMPP — открытый протокол для передачи коротких сообщений в телеком-отрасли. Через SMPP-шлюз вы отправляете SMS оператору, и через него же можно отправлять HLR-запросы. Шлюз принимает список номеров, запрашивает данные у оператора и возвращает ответ по каждому. Такой запрос обходится дешевле, чем отправка полноценного SMS на несуществующий номер, хотя точная цена зависит от провайдера.

Если вы только настраиваете свой шлюз, обратите внимание на материал о том, как защитить SMPP-шлюз от взлома. Проверка номеров не должна открывать доступ посторонним.

Как настроить HLR-фильтрацию через SMPP-шлюз

Схема простая: сначала очищаете базу, потом отправляете сообщения. Вот пошаговый порядок для малого бизнеса без привлечения программиста.

  1. Проверьте, что ваш SMPP-провайдер поддерживает HLR-запросы. Обычно это отдельная опция в личном кабинете или дополнительная услуга.
  2. Выгрузите номера в формате MSISDN. Для Беларуси код страны — 375, номер начинается с операторского кода, плюс в начале не нужен. Например, 375291234567.
  3. Отправьте HLR-запрос. Способ зависит от шлюза: один провайдер использует специальный service_type, другой принимает обычный submit_sm с префиксом. Точную команду смотрите в документации.
  4. Получите ответ по каждому номеру. Шлюз вернет статус: номер существует, не существует, не в сети.
  5. Исключите из выборки номера со статусом «не существует».
  6. Запустите SMS-рассылку только по подтвержденным номерам.

Последний шаг можно автоматизировать. Если шлюз умеет работать по правилам, настройте фильтр: при получении отрицательного HLR-ответа номер автоматически помечается в вашей базе как невалидный. Тогда каждая новая рассылка будет собирать только чистый список.

Для надежности настройте резервный канал: если основной шлюз недоступен, HLR-запросы не пропадут. Инструкция — в статье как настроить резервный SMPP-канал и не терять SMS при сбое провайдера.

Что отвечает HLR и что с этим делать

Ответы HLR различаются в деталях у каждого оператора, но основные статусы одни и те же. Разберем их в таблице.

Ответ HLRЧто означаетЧто делать
Номер существует, в сетиАбонент активен, телефон включенОтправлять SMS
Номер существует, не в сетиТелефон выключен или временно вне зоныОтправлять, но доставка может задержаться
Номер не существуетОператор не нашел номер / номер не обслуживаетсяИсключить из рассылки
Абонент в роумингеНомер активен, но тарификация может отличатьсяУчитывать при расчете бюджета

Если в ответе «номер не существует», отправлять сообщение бессмысленно. Оператор все равно не доставит его, а деньги за отправку могут списаться.

Чем DLR-аналитика дополняет HLR

HLR работает до отправки, DLR — после. DLR (delivery report) — это уведомление о статусе доставки сообщения. Когда SMS уходит через SMPP-шлюз, оператор возвращает ответ: доставлено, просрочено, ошибка.

DLR позволяет увидеть, сколько сообщений реально дошло. Если большая часть статусов — «просрочено», значит номера были вне сети или абоненты находились в роуминге. Если DLR постоянно возвращает ошибку после положительного HLR-ответа, стоит проверить, не блокирует ли оператор рассылку.

Для интернет-магазинов и сервисов полезно настроить автоматическую выгрузку DLR-статусов в свою систему учета. Например, в 1С можно отмечать, что заказ доставлен или что клиент не получил уведомление. Пошаговую настройку смотрите в инструкции как настроить выгрузку статусов SMPP в 1С.

Типичные ошибки при работе с HLR

  • Проверять номера после того, как часть SMS уже отправлена. HLR нужно запускать до старта кампании, иначе часть бюджета уходит впустую.
  • Не обновлять базу после получения статуса «не существует». Если вы один раз проверили номер и ничего не сделали с ним, в следующей рассылке он снова попадет в список.
  • Отправлять HLR-запросы на номера, которые недавно подтверждались успешными доставками. Это лишние расходы и лишняя нагрузка на оператора.
  • Игнорировать статус «не в сети» при срочных рассылках. Если сообщение должно прийти за минуты, а телефон выключен, оно задержится.
  • Не сравнивать HLR и DLR. Если HLR говорит «номер живой», а DLR показывает ошибку доставки, значит, с номером что-то не так. Без сравнения вы не заметите проблему.

HLR и DLR — это не разовые действия, а цикл. Один раз очистили базу, проверили доставку, через месяц повторили. Тогда расходы на SMS остаются контролируемыми.

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

  1. Запросите HLR-статусы для всех номеров в вашей базе и удалите те, которые получили ответ «не существует».
  2. Настройте автоматическое проставление HLR-статуса в вашей CRM или Excel-таблице, чтобы видеть актуальное состояние базы.
  3. После ближайшей рассылки откройте DLR и по каждому недоставленному сообщению решите, оставить номер для будущих кампаний или удалить.

Такой подход сокращает количество сообщений, которые не доходят до адресата, и позволяет строить рассылки на реально работающих номерах.