Флеш-кол (Flash Call)
Flash Call — це метод перевірки телефонного номера, що використовує пропущений/скинутий дзвінок (missed call) замість класичного SMS. Цей спосіб швидший, безпечніший та економічніший.
Огляд
Сценарій верифікації за допомогою Flash Call:
- Користувач вводить номер телефону і надсилає запит на верифікацію.
- Система ініціює вхідний дзвінок на телефон користувача.
- Пролунавши 1-2 секунди, дзвінок автоматично переривається.
- Додаток користувача перехоплює номер абонента (Caller ID), який йому телефонував.
- Захоплений номер порівнюється (верифiкується) із заявленим (очікуваним) патерном.
- Користувача успішно автентифіковано.
Переваги
Економічність
- До 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).
Наступні Кроки
- Viber OTP - Альтернативний дешевий метод авторизації.
- SMS повідомлення - Резервні канали (Fallback).
- Перевірка статусу - Більше про розуміння статусів обробки запитів.