SMS не приходят
Часто причина — блокировка номера, недоступность сети, несоответствие формата, ошибки в API‑ключе, превышение ограничений оператора, наличие белого списка, проблемы с кодированием, ограничения по времени, отсутствие мгновенной доставки, и неверные маршруты. Ниже подробно разберём каждую.
1. Номер отправителя заблокирован оператором
- Операторы часто ставят номера в «черный список» из‑за спама или массовой рассылки без согласия. Это приводит к блокировке всего сообщения.
- Решение: Проверяйте статус
senderidчерез API провайдера и подключайте калькулятор узлов перед отправкой.
Проверка блокировки
- Запросите диалог с
/statusв API. - Проверьте ответ
blocked= true. - Если заблокирован, подключите новый
senderidчерез форму на портале.
2. Ошибка в формате номера получателя
- Номера в международном формате (+79991234567) обязательны для большинства операторов.
- Неправильные коды страны, отсутствие +, лишние пробелы – всё это приводит к отбрасыванию.
Пример проверки
function validatePhone(number) {
const regex = /^+d{11,15}$/;
return regex.test(number);
}3. Переполнение лимита отправки за сутки
- Многие провайдеры ограничивают количество сообщений. При превышении – сообщения откладываются или отклоняются.
- Решение: Включите фильтр по ROI и расставьте лимиты в настройках.
4. Неактивный баланс аккаунта
- Когда баланс
0, API автоматически блокирует отправку. - Проверяйте баланс через панель.
5. Недоступность SMS‑сети оператора получателя
- В регионах с плохим покрытием сообщения «спадать» частее. Это особенно актуально для удалённых областей.
- Решение: добавьте резервный номер, используйте метрику доставки.
6. Неправильно настроенное интеграционное API
- Ошибки в HTTP‑запросах (метод POST, неверный заголовок) приводят к отказу сервера.
- Пример корректного запроса:
POST /messages HTTP/1.1
Host: api.smsprovider.ru
Authorization: Bearer {token}
Content-Type: application/json
{
"sender": "Company",
"receiver": "+79991234567",
"text": "Привет!"
}7. Превышение лимита длины сообщения
- SMS ограничено 160 символами Unicode, 70 символами GSM. При превышении используется мультичастное сообщение.
- Операторы могут отбрасывать части, если кодировка неверна.
- Решение: используйте
segmentingв API или сокращайте сообщение.
8. Нет согласия получателя (opt‑out)
- В РФ закон обязывает хранить список opt‑out. Отправка без согласия → блокировка.
- Решение: храните файл
optout.jsonи проверяйте на входе.
Оптимальный шаблон хранения
| Параметр | Тип | Пример |
|---|---|---|
| phone | строка | +79991234567 |
| optedOut | булевый | true |
| dateOptOut | дата | 2026-03-12 |
9. Проблемы с кодировкой текста
- Некорректная кодировка UTF‑8 ↔ ISO‑8859‑1 приводит к некорректному отображению.
- Проверяйте через
iconvперед отправкой.
10. Неправильный маршрут доставки (shortcodes vs longcodes)
- Скоро «shortcode» 5‑значный часто переадресованы в официальный порт. Ошибки в шорткоде → отклоняются.
- Решение: правильно указывайте
routingIdв API.
Как повысить доставляемость
- Используйте политику A/B‑тестирования сигналов.
- Регулярно очищайте список от неактивных номеров.
- Внедряйте двухфакторную аутентификацию для черного списка.
- Следите за показателями 99,5%% доставки и реагируйте на падения.
Сравнение протоколов
| Протокол | Преимущества | Недостатки |
|---|---|---|
| SMPP | Низкие затраты, высокая скорость | Требуется сложная настройка |
| HTTP API | Простая интеграция, гибкая документация | Более высокие задержки |
Вывод
Проблемы доставки SMS часто вызваны техническими деталями, которые можно быстро выявить, если следовать рекомендациям. Проверяйте статус отправителей, формат номера, баланс, API‑ключ, лимиты, согласие, кодировку и маршруты. Используйте автоматизированную аналитическую панель, чтобы каждый отказ превращался в полезную метрику. В итоге – устойчивый поток сообщений, повышающие удержание и конверсию клиентов.