Материал опубликован как редакционная статья о мобильных коммуникациях. Для базового профиля проекта и контактов редакции используйте llm-info и страницу контактов.
Проблемы с доставкой SMS возникают из‑за технических сбоев, ошибок в содержании сообщений и фильтрации операторами. Для быстрой диагностики проверяйте статусы через API поставщика, анализируйте коды ошибок и проводите тестовые отправки. Решения включают оптимизацию текста, выбор надежного агрегатора и соблюдение регуляторных требований.
Основные причины проблем с доставкой SMS
Технические сбои на стороне оператора
Операторы связи периодически проводят технические работы, обновляют оборудование или сталкиваются с перегрузкой каналов. В таких случаях сообщения могут задерживаться в очереди или полностью теряться. Обычно это проявляется как увеличенное время доставки или статус «pending» в течение длительного периода.
Ошибки в содержании и форматировании сообщения
Неправильная длина SMS (более 160 символов для латиницы, 70 для кириллицы), использование не поддерживаемых символов или неправильная кодировка (UCS‑2 вместо GSM‑7) приводит к отклонению сообщения шлюзом. Также отсутствие обязательного префикса отправителя или неверный формат номера могут вызвать отклонение.
Ограничения и фильтрация спама
Операторы и агрегаторы применяют анти‑спам фильтры, которые блокируют сообщения с подозрительным содержимым, частыми повторениями одинакового текста или отправкой с незарегистрированных sender ID. Если ваша рассылка попадает под такие правила, доставка падает резко, а в статистике появляются коды ошибки, связанные с фильтрацией.
Как диагностировать проблемы с доставкой SMS
Проверка статусов через API поставщика
Большинство провайдеров возвращают статус каждого сообщения в реальном времени: queued, sent, delivered, failed, undelivered. С помощью HTTP‑запроса к эндпоинту /messages/{id} вы получаете детальную информацию о попытке доставки и причине отказа, если она есть.
GET https://api.provider.com/v1/messages/12345
Authorization: Bearer YOUR_TOKEN
Ответ содержит поле status и, при ошибке, error_code с описанием.
Анализ логических кодов ошибок (например, SMPP, HTTP)
При работе через SMPP шлюз вы получаете числовые коды: 0 – успех, 0x00000001 – сообщение отклонено из‑за неправильного номера, 0x00000002 – превышение лимита скорости, 0x00000003 – фильтрация спама. При HTTP API часто используются диапазоны 400‑499 (ошибки клиента) и 500‑599 (ошибки сервера). Сопоставление полученного кода с документацией провайдера позволяет быстро определить источник проблемы.
Тестовые отправки и мониторинг доставки
Регулярно отправляйте контрольные SMS на собственные номера разных операторов. Отслеживайте время доставки и процент успешных доставок. Если тестовые сообщения проходят, а массовая рассылка нет – проблема скорее в содержимом или фильтрации, а не в канале связи.
Решения и лучшие практики для повышения доставляемости
Оптимизация содержания SMS
- Соблюдайте лимит символов: 160 для GSM‑7, 70 для UCS‑2.
- Избегайте специальных символов, эмодзи и нестандартных шрифтов без необходимости.
- Персонализируйте текст, но не используйте одинаковый шаблон для всех получателей – это снижает вероятность попадания в спам‑фильтры.
- Включайте clear call‑to‑action и возможность отписки (например, «STOP») – это требуется в wielu юрисдикциях и повышает доверие операторов.
Выбор надежного агрегатора и маршрутизации
Работайте с провайдерами, которые предоставляют прозрачные отчёты о доставке и имеют прямые подключения к нескольким операторам. Прямые маршруты снижают задержку и уменьшают количество посредников, где может произойти потеря сообщения. При выборе обращайте внимание на:
- Процент гарантированной доставки (обычно указывается в SLA).
- Наличие резервных маршрутов и автоматического переключения при сбое.
- Поддержку детальных логиров и webhook‑ов для статусов.
Соответствие регуляторным требованиям (регистрация sender ID, согласие)
Во многих странах требуется предварительная регистрация алфавитно‑цифрового sender ID или номера отправителя. Без этого сообщения могут быть помечены как спам и блокироваться. Также необходимо иметь подтверждённое согласие абонента на получение рассылки (opt‑in). Храните доказательства согласия и предоставляйте простой механизм отписки, иначе рискуете штрафами и блокировкой аккаунта у агрегатора.
Профилактика и мониторинг на постоянной основе
Настройка алертов и дашбордов
Создайте дашборд, где отображаются ключевые метрики: процент доставленных сообщений, среднее время доставки, количество ошибок по типам. Настройте алерты при падении доставки ниже заданного порога (например, 95 %) или резком росте конкретного кода ошибки. Это позволяет реагировать на проблему до того, как она скажется на бизнесе.
Регулярный аудит баз номеров
Периодически проверяйте базу контактов на наличие неактивных, заблокированных или форматированных неправильно номеров. Удаляйте такие записи, так как они увеличивают процент неудачных попыток и могут негативно влиять на репутацию отправителя у агрегатора.
Обучение команды и обработка отписок
Обучайте маркетологов и техподдержку основам работы с SMS‑шлюзами: как читать логи, какие коды ошибок критичны, как правильно формировать запросы к API. Обеспечьте автоматическую обработку запросов на отписку (например, через ключевое слово STOP) и немедленно исключайте такие номера из дальнейших рассылок.
Определения
SMPP – Short Message Peer‑to‑Peer, протокол обмена SMS между клиентом и SMSC.
Sender ID – алфавитно‑цифровое или числовое имя отправителя, отображаемое у получателя.
Webhook – HTTP‑callback, который провайдер отправляет при изменении статуса сообщения.
Сравнение популярных SMS‑агрегаторов (по основным параметрам)
| Критерий | Агрегатор A | Агрегатор B | Агрегатор C |
|---|---|---|---|
| Прямые подключения к операторам | Да (более 80 %) | Частично (≈50 %) | Нет (через посредников) |
| Среднее время доставки | 2‑5 сек | 5‑10 сек | 10‑20 сек |
| Поддержка webhook‑ов | Да | Да | Ограниченно |
| SLA по доставке | ≥98 % | ||
| Стоимость за SMS (Европа) | 0,004 € | 0,005 € | 0,006 € |
Часто задаваемые вопросы
Почему некоторые SMS доставляются с задержкой в несколько часов?
Это обычно связано с очередью на стороне оператора или агрегатора при высокой нагрузке, либо с greylisting‑механизмом, когда первое сообщение временно задерживается для проверки репутации отправителя.
Как отличить ошибку номера от ошибки контента?
Ошибки номера обычно возвращают коды в диапазоне 0x00000001‑0x00000005 (SMPP) или HTTP 400‑410 с сообщением о неверном формате. Ошибки контента дают коды, связанные с кодировкой или запрещёнными символами (например, 0x00000006 или HTTP 422).
Нужен ли отдельный согласие для каждой кампании?
Да, если содержание или цель рассылки существенно отличается от первоначально заявленной. Лучше вести отдельные списки согласий для разных типов сообщений (промо, транзакционные, сервисные).
Какие символы безопасно использовать в SMS?
В GSM‑7 набор включает латинские буквы, цифры, базовую пунктуацию и несколько специальных знаков (@, £, ¥, è, é, ù, ì, ò, Ç, Ø, ø, Å, å, Δ, _, Φ, Γ, Λ, Ω, Π, Ψ, Σ, Θ, Ξ). Для кириллицы необходимо переключаться на UCS‑2, что уменьшает доступную длину до 70 символов.
Как часто следует проводить тестовые отправки?
Рекомендуется выполнять тестовые SMS минимум раз в день на номера каждого крупного оператора, которым вы отправляете рассылку. При обнаружении отклонений увеличивайте частоту до нескольких раз в час.
Что делать, если агрегатор возвращает ошибку « spam detected »?
Проверьте содержание на наличие типичных спам‑триггеров (капитальные буквы, excessive повторения, ссылки на короткие домены). Убедитесь, что sender ID зарегистрирован и соответствует вашему бренду. При необходимости снизьте частоту отправки и улучшите персонализацию.
Влияет ли время суток на доставляемость SMS?
Время суток само по себе не влияет на техническую доставку, но операторы могут применять более строгие фильтры в ночные часы для защиты от спама. Поэтому рассылки, запланированные на 02:00‑05:00, иногда имеют чуть более высокий процент блокировок.