Перейти до змісту

Флеш-кол (Flash Call)

Flash Call — це метод перевірки телефонного номера, що використовує пропущений/скинутий дзвінок (missed call) замість класичного SMS. Цей спосіб швидший, безпечніший та економічніший.

Огляд

Сценарій верифікації за допомогою Flash Call:

  1. Користувач вводить номер телефону і надсилає запит на верифікацію.
  2. Система ініціює вхідний дзвінок на телефон користувача.
  3. Пролунавши 1-2 секунди, дзвінок автоматично переривається.
  4. Додаток користувача перехоплює номер абонента (Caller ID), який йому телефонував.
  5. Захоплений номер порівнюється (верифiкується) із заявленим (очікуваним) патерном.
  6. Користувача успішно автентифіковано.

Переваги

Економічність

  • До 10 разів дешевше за класичні SMS.
  • Немає плати за доставку контенту повідомлення.
  • Суттєва економія бюджету під час щоденних масових авторизацій.

Швидкість

  • Миттєва авторизація (1-3 секунди).
  • Немає затримок із чеканням на доставку SMS.
  • Кращий досвід користування (UX).

Безпека

  • Набагато важче перехопити, ніж звичайне SMS.
  • Відсутній OTP пароль, який міг би бути показаним у спливаючих сповіщеннях (шторці).
  • Стійкість до атак підміни SIM-карти (SIM Swap attacks).

Базовий Запит Flash Call

Запит (Request)

{
  "from": "YourApp",
  "to": "+380XXXXXXXXX",
  "type": "flashcall",
  "messageData": {
    "callerId": "+380123456789"
  }
}

Параметри

Параметр Тип Обов'язково Опис
from string Так Ваш ідентифікатор відправника
to string Так Телефон клієнта у форматі E.164
type string Так Потрібно передати "flashcall"
callerId string Так Номер телефону, з якого буде здійснено короткий дзвінок
ttl integer Ні Час життя (Time-to-Live) у секундах (за замовчуванням: 60)

Як Це Працює?

1. Запит у системі

Ваш сервер надсилає запит на Flash Call до API:

curl -X POST https://restapi.smsbat.com/bat/messagelist \
  -H "X-Authorization-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{
      "from": "YourApp",
      "to": "+380XXXXXXXXX",
      "type": "flashcall",
      "messageData": {
        "callerId": "+380123456789"
      },
      "ttl": 60
    }]
  }'

2. Відповідь від API

API дасть відповідь із шаблонним патерном (Pattern) ідентифікатора, який вам треба очікувати:

{
  "messagelistId": 123456,
  "messages": [
    {
      "messageId": "abc123def456",
      "status": "accepted",
      "callerId": "+380123456789",
      "pattern": "***456789",
      "to": "+380XXXXXXXXX"
    }
  ]
}

3. Ініціація Дзвінка

Система робить короткий дзвінок на вказаний телефон і кладе слухавку після одного гудка.

4. Захоплення (Перехоплення) Дзвінка та Верифікація

Ваш додаток на пристрої має відстежити вхідний дзвінок. Якщо номер вхідного дзвінка відповідає патерну (в даному випадку будь-які три цифри + 456789), верифікація вважається успішною. Зірочки (*) у патерні відповідають будь-якій одній цифрі.

JavaScript Перевірка Патерну:

function verifyFlashCall(callerId, pattern) {
  // Видалити всі не-цифрові символи (+, пробіли, дужки)
  const callerDigits = callerId.replace(/\D/g, '');
  // Зірочки переставити на [0-9] (цифри) або будь-який символ формату регулярки '.'
  const patternDigits = pattern.replace(/\*/g, '.');

  const regex = new RegExp(patternDigits);
  return regex.test(callerDigits);
}

Дозволи (Permissions) для розробників iOS / Android

Щоб перехопити вхідні дзвінки, вам знадобиться доступ до історії викликів чи стану телефону.

Android:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />

iOS:

<key>NSPhoneCallUsageDescription</key>
<string>Нам потрібен доступ для верифікації вашого номера телефону</string>

(Примітка: в iOS ви можете використовувати CallKit-сумісні механізми перевірки).

Резервна Відправка у SMS (SMS Fallback)

Якщо Flash Call з якихось причин не відбувся або якщо ви хочете дати клієнту страхувальний варіант, автоматично використовуйте резервне SMS:

{
  "from": "YourApp",
  "to": "+380XXXXXXXXX",
  "type": "flashcall",
  "messageData": {
    "callerId": "+380123456789"
  },
  "fallback": {
    "type": "sms",
    "text": "Ваш код підтвердження: 456789"
  },
  "ttl": 60
}

Вирішення Проблем

Дзвінок не надійшов

  • Перевірте з'єднання мобільної мережі на пристрої користувача.
  • Переконайтеся, що номер написаний у правильному форматі E.164.
  • Переконайтеся, що на пристрої не ввімкнено блокувальників "Невідомих Номерів".

Патерн не сходиться

  • Не забудьте очистити номер (callerId) від плюса, пробілів та інших не-числових символів перед застосуванням регулярного виразу.
  • Дзвінок міг надійти із затримкою та перевищити час вашого перевірочного вікна (TTL).

Наступні Кроки