Как микро-бизнесу в Беларуси собрать Flash Call и SMS в единый сценарий подтверждения номера

Как микро-бизнесу в Беларуси собрать Flash Call и SMS в единый сценарий подтверждения номера

Подтверждение номера на сайте и в Telegram можно собрать из двух каналов: сначала Flash Call — короткий звонок с последними цифрами номера, затем SMS как запасной вариант. Такая связка закрывает сбои оператора, не раздражает клиента и стоит дешевле, чем одна только SMS-авторизация (по данным сервисов, Flash Call обходится примерно в 0,45–0,65 руб. за вызов против полной цены SMS). В статье разберём, как собрать сценарий без дублей и конфликтов, на каких API держится связка и где чаще всего ломается логика.

Почему Flash Call отдельно от SMS — это полумера

Flash Call работает иначе, чем SMS: сервис звонит на номер клиента, и кодом служат последние 4–6 цифр входящего звонка. Клиент видит пропущенный вызов, вбивает эти цифры в форму — и подтверждение готово. Доставка занимает секунды, а операторская фильтрация SMS его не блокирует (источник: Voice OTP, Flash Call и код в пропущенном звонке — как работают голосовые и call-based каналы, smsblog.ru).

Но у канала есть ограничения. Если у клиента старая трубка без определителя номера, если он за границей в роуминге или если оператор режет входящие вызовы на сервисные номера — код он не увидит. В таком случае SMS работает надёжнее, потому что идёт через сигнальный канал и не зависит от определителя. Поэтому в реальных проектах связка выглядит так: Flash Call — основной канал, SMS — fallback, то есть запасной путь, который срабатывает, если звонок не дошёл или клиент не ввёл цифры за отведённое время.

Как собрать сценарий без дублей

Главная ошибка на старте — отправлять и звонок, и SMS одновременно. В итоге клиент получает два уведомления и путается, какой код вводить. В корректной схеме каналы идут последовательно, и у каждого сценария — свой TTL (время жизни запроса).

Сценарий выглядит так:

  • Клиент вводит номер и нажимает «Получить код».
  • Сервис инициирует Flash Call, в запросе передаётся уникальный request_id.
  • Если в течение 20–30 секунд клиент ввёл последние цифры — request_id помечается как confirmed, повторно ничего не уходит.
  • Если подтверждения нет — через 30–40 секунд сервис отправляет SMS на тот же номер с новым одноразовым кодом.
  • После успешного ввода в форме request_id закрывается и помечается как used, чтобы его нельзя было переиграть.

Ключевой момент — у каждой попытки свой request_id и свой TTL. Если попытаться сэкономить и хранить один идентификатор на оба канала, при повторной попытке клиент увидит «код неверный»: старая SMS истечёт, а система уже привязала сессию к звонку. Подробное сравнение каналов с таблицей сценариев есть в материале Flashcall vs SMS vs WhatsApp/Telegram OTP.

Какие API понадобятся

Связка держится на двух интерфейсах: API Flash Call с вебхуком о статусе звонка и SMS API с поддержкой передачи request_id. Для белорусского бизнеса важно, чтобы провайдер отдавал номер в формате E.164 (международный формат, начинается с +375 для Беларуси) и возвращал статусы: initiated, delivered, confirmed, expired. Без этих статусов вы не поймёте, пора ли запускать fallback.

Для Telegram-ботов дополнительно нужен общий сценарий сессии: пользователь нажал «Подтвердить» в боте, бот запросил номер, прогнал Flash Call, при неудаче отправил SMS и попросил ввести код в чате. Здесь важно держать состояние в одном месте — либо в CRM, либо в Redis (база данных в оперативной памяти, где сессии живут секунды-минуты), — чтобы бот не терял, на каком шаге находится клиент.

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

Сколько стоит связка и где экономия

Экономика простая. Один Flash Call обходится в разы дешевле SMS-кода, поэтому основной поток идёт по звонку. SMS нужна только малой доле клиентов — тем, у кого не сработал определитель или кто не успел ввести цифры. Сравнение цен из открытых источников:

КаналПримерная стоимость за попыткуКогда срабатывает
Flash Callоколо 0,45–0,65 руб.У клиента работает определитель номера
SMS OTPзаметно дороже Flash CallFallback при сбое звонка
Связка Flash Call + SMSСредняя цена ниже, чем SMS на всём потокеОсновной сценарий авторизации

Точная цена SMS зависит от провайдера и объёма, но порядок цифр задаёт именно Flash Call. Чтобы посчитать экономию на конкретном трафике, удобно использовать методику расчёта от i-Digital, она учитывает разделение трафика на сервисный и авторизационный и абонплату (источник: Как посчитать экономию на Flashcall, i-dgtl.ru).

Типичные ошибки при сборке связки

  • Параллельная отправка Flash Call и SMS одновременно. Клиент получает два канала и путается, какой код вводить.
  • Один request_id на оба канала. При fallback старая сессия уже истекла, клиент видит «код неверный» и уходит.
  • Нет таймаута на fallback. SMS уходит слишком быстро, клиент раздражён двойной отправкой.
  • Не учитывается роуминг и старые телефоны. Для таких клиентов нужен альтернативный вход с кодом по звонку оператора или email.
  • Статусы Flash Call не пишутся в CRM. Без статусов вы не увидите, какой процент реально подтверждается через звонок.

Эти пять ошибок ломают до половины конверсии в подтверждении. Дополнительно стоит проверять, как ваш провайдер обрабатывает повторные запросы: если клиент жмёт «Отправить код» дважды, система должна либо блокировать дубль на 60 секунд, либо чётко разделять request_id по времени.

Что учесть для антифрода

Flash Call — это не только экономия, но и сигнал «живого» номера. Если на один аккаунт за час уходит 20 попыток авторизации с разных IP, обычный пользователь так не делает. Связка позволяет пометить такие сессии как подозрительные и запрашивать дополнительную проверку. Подробнее про антифрод-сценарий — в материале Flash Call как сигнал живого номера для антифрод-системы.

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

  1. Запросить у текущего SMS-провайдера API Flash Call с вебхуками и тарифами на белорусские номера.
  2. Собрать тестовый сценарий: Flash Call как основной канал, fallback через SMS через 30 секунд, у каждой попытки свой request_id.
  3. Прогнать 200–300 регистраций и сравнить конверсию и среднюю стоимость подтверждения со старой SMS-only схемой.