Как настроить каскад для доставки SMS-кода и статуса

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

Что такое каскадные уведомления и чем они отличаются от многоканальной отправки?

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

Многоканальная коммуникация устроена иначе: одно сообщение уходит сразу по нескольким каналам. Такой подход увеличивает число контактов, но может создать дубли. Клиент получит один и тот же статус в SMS, письме и звонке, даже если уже прочитал первое уведомление.

Подход Как работает Когда подходит
Один канал Сообщение отправляется только через SMS, звонок или email Для простого статуса, который не требует немедленного действия
Многоканальная отправка Сообщение уходит по нескольким каналам одновременно Когда нужно быстро охватить клиента и дубли допустимы
Каскад Следующий канал включается после заданного условия Для OTP-кодов, входа в аккаунт, оплаты и критичных статусов

Для транзакционных сообщений каскад обычно проще контролировать: система прекращает цепочку после успешной доставки или подтверждения действия. Подробный пример настройки каскадной отправки OTP-кода через Viber и SMS описан в материале «Как настроить каскадную отправку OTP-кода».

Когда SMS стоит дополнить голосовым звонком?

Голосовой канал пригодится, когда клиент ждёт код прямо сейчас, а SMS задержалось, не дошло или оказалось недоступно на телефоне. Это актуально для входа в личный кабинет, подтверждения номера, смены пароля и операции, после которой пользователь не может продолжить работу без кода.

У звонка есть важная особенность: система передаёт код голосом, поэтому клиенту не нужно открывать приложение сообщений. Однако автоматический звонок не решает проблему, если номер занят, выключен или указан с ошибкой. Поэтому голосовой канал лучше использовать как ограниченный резерв, а не включать без проверки результата SMS.

Для статусов доставки сценарий может выглядеть иначе. Сначала сервис отправляет SMS о готовности заказа. Если сообщение не доставлено, система повторяет его через другой канал или создаёт задачу оператору. При этом в тексте звонка нужно сообщать только необходимый статус: например, что заказ готов и где клиент может уточнить детали.

Как построить цепочку SMS → голосовой звонок?

Начните с одного конкретного события. Хороший пример — запрос одноразового кода. Когда пользователь нажимает кнопку входа, приложение передаёт в систему номер телефона, код и идентификатор операции. Сервис отправляет SMS и ждёт технический результат доставки.

  1. Сформируйте короткое SMS: укажите название сервиса, код и срок его действия.
  2. Получите статус доставки от SMS-платформы.
  3. Запустите голосовой звонок только при недоставке или после заданной задержки.
  4. Остановите каскад, если клиент подтвердил операцию.
  5. Запишите технический результат: SMS доставлено, звонок выполнен, код введён или попытки закончились.

Для кода нельзя запускать звонок после каждого технического ответа без проверки. Если SMS уже доставлено, повторное чтение того же кода только запутает пользователя. В сценарии нужно разделить «сообщение доставлено» и «пользователь ввёл код»: первое условие останавливает канал доставки, второе завершает операцию.

Отдельно задайте число попыток и интервал между ними. Слишком частые звонки раздражают клиента и могут выглядеть как подозрительная активность. Слишком длинная пауза снижает вероятность, что пользователь завершит вход. Точные значения лучше выбирать по типу операции и времени жизни OTP-кода, а затем проверять на тестовых номерах.

Как выбрать порядок каналов для разных сообщений?

Порядок зависит от срочности и чувствительности информации. Код авторизации требует быстрой доставки и короткого срока действия. Статус заказа можно повторить позже. Напоминание о запланированном визите обычно не нуждается в голосовом звонке, если клиент может прочитать SMS в течение дня.

Сообщение Первый канал Резерв Ограничение
Код входа или подтверждения SMS Голосовой звонок Один действующий код и ограниченное число попыток
Статус оплаты SMS Email или повторное уведомление Не отправлять новый код вместо статуса
Статус заказа SMS Email или звонок при срочной доставке Не дублировать сообщение после подтверждённого прочтения
Сбой в доставке SMS Звонок оператору или клиенту по отдельному сценарию Сообщить причину и следующий шаг

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

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

Как проверить каскад до запуска?

Тестируйте не только успешную доставку. Имитируйте недоступный телефон, задержку SMS, неверный номер и повторный запрос кода. Проверьте, что старый код перестаёт работать после выпуска нового и что звонок не запускается при уже доставленном SMS.

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

Техническую часть можно сначала проверить в тестовой среде: отправить несколько сообщений, посмотреть DLR и убедиться, что повторы запускаются по нужному условию. Для этого пригодится материал о SMPP-песочнице, DLR и проверке SMS. После теста сценарий подключают к одному событию, например входу в аккаунт, и только затем распространяют на остальные операции.

Какие ошибки чаще всего ломают каскад?

  • Переход на звонок по таймеру без статуса SMS. Звонок может прийти уже после доставленного сообщения. Основанием для следующего шага должен быть результат доставки или явно заданное событие.
  • Выдача нового кода при каждом повторе. Клиент получает несколько цифр и не понимает, какую вводить. Для одной операции нужен один действующий код.
  • Отсутствие ограничения попыток. Бесконечные повторы создают лишнюю нагрузку и ухудшают пользовательский опыт.
  • Одинаковый текст для SMS и звонка. Голосовое сообщение должно звучать естественно: код нужно произносить медленно, а статус — формулировать как короткую инструкцию.
  • Запуск каскада для всех уведомлений. Резервный звонок нужен срочным сообщениям. Для обычного статуса чаще достаточно повторного SMS или email.

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