Налаштування верифікації клієнта через flash call у 1С-Bitrix
Flash call відрізняється від дзвінку-скидання деталлю, яка змінює всю схему: на Android-пристроях додаток постачальника або сам браузер перехоплює вхідний дзвінок, автоматично зчитує номер і підтверджує верифікацію без участі користувача. Людина взагалі нічого не вводить. Конверсія верифікації при цьому вище SMS на 15–25%.
Технологія і вимоги
Flash call працює в двох режимах:
Автоматичний (справжній flash call) — вимагає встановленого мобільного додатку з дозволом на читання дзвінків, або браузерного API (Android Chrome + Web OTP API для деяких постачальників). Вхідний дзвінок перехоплюється програмно, останні цифри номера витягуються і відправляються на сервер без дій користувача.
Напівавтоматичний — користувачу показується екран з маскою, система ініціює дзвінок, користувач бачить 4 цифри і вводить їх. Це фактично той же «дзвінок-скидання», але з позиціонуванням як flash call.
Для справжнього автоматичного flash call у Bitrix-магазині без мобільного додатку реалістичний лише напівавтоматичний режим. Повністю автоматичний — через SDK, вбудований у мобільний додаток магазину.
Інтеграція з постачальниками flash call
Спеціалізовані постачальники flash call для ринку РФ/СНД:
- Exolve Flash Call API — підтримує автоматичне перехоплення на Android через Web API
- МГТС Flash Call — B2B-сервіс з SLA
- Devino Telecom — REST API з кодом у номері
Приклад інтеграції з Exolve:
class ExolveFlashCallProvider {
private const API_URL = 'https://api.exolve.ru/call/v1/MakeCall';
private string $apiKey;
public function __construct(string $apiKey) {
$this->apiKey = $apiKey;
}
public function initiate(string $targetPhone, string $code): array {
// Номер дзвінюча містить код у останніх 4 цифрах
$callerNumber = $this->getCallerByCode($code);
$response = (new \Bitrix\Main\Web\HttpClient())->post(
self::API_URL,
json_encode([
'number' => $callerNumber,
'destination' => $targetPhone,
'call_duration' => 1, // Мінімальна тривалість — одразу скидання
]),
['Authorization' => 'Bearer ' . $this->apiKey,
'Content-Type' => 'application/json']
);
return json_decode($response->getResult(), true);
}
}
Підтримка Web OTP API
На Android-пристроях з Chrome 84+ можлива напівавтоматична обробка через Web OTP API. Браузер перехоплює SMS з кодом (не дзвінок), якщо повідомлення оформлено спеціальним способом. Це поєднання SMS і flash-механізму.
Формат SMS для Web OTP:
Ваш код верифікації: 4821
@shop.ru #4821
JavaScript для автоперехвату:
if ('OTPCredential' in window) {
const ac = new AbortController();
navigator.credentials.get({
otp: { transport: ['sms'] },
signal: ac.signal
}).then(otp => {
document.getElementById('verification-code').value = otp.code;
submitVerificationForm();
}).catch(err => {
// Fallback: користувач вводить вручну
console.log('OTP auto-read failed:', err);
});
}
Серверна частина: контролер верифікації
У Bitrix реалізується як контролер D7:
namespace Custom\Verification;
class FlashCallController extends \Bitrix\Main\Engine\Controller {
public function initiateAction(string $phone): array {
$phone = $this->normalizePhone($phone);
if (!$this->checkRateLimit($phone)) {
return $this->error('Занадто багато запитів. Зачекайте хвилину.');
}
$code = str_pad(random_int(1, 9999), 4, '0', STR_PAD_LEFT);
try {
$provider = new ExolveFlashCallProvider(EXOLVE_API_KEY);
$provider->initiate($phone, $code);
} catch (\Exception $e) {
\Bitrix\Main\Diag\Logger::getLogger('flash_call')->error($e->getMessage());
return $this->error('Помилка надсилання. Спробуйте SMS-верифікацію.');
}
FlashCallTable::add([
'PHONE' => $phone,
'CODE' => $code,
'CREATED_AT' => new \Bitrix\Main\Type\DateTime(),
'EXPIRES_AT' => new \Bitrix\Main\Type\DateTime(date('Y-m-d H:i:s', time() + 120)),
]);
return ['success' => true];
}
public function verifyAction(string $phone, string $code): array {
$record = FlashCallTable::getList([
'filter' => [
'=PHONE' => $this->normalizePhone($phone),
'=CODE' => $code,
'=VERIFIED' => false,
'>EXPIRES_AT' => new \Bitrix\Main\Type\DateTime(),
],
'order' => ['CREATED_AT' => 'DESC'],
'limit' => 1,
])->fetch();
if (!$record) {
return $this->error('Неправильний код або час закінчився.');
}
FlashCallTable::update($record['ID'], ['VERIFIED' => true]);
\Bitrix\Main\Application::getInstance()->getSession()->set('PHONE_VERIFIED', $phone);
return ['success' => true];
}
}
Сроки виконання
| Обсяг робіт | Строк |
|---|---|
| Базова інтеграція з постачальником | 1 день |
| Контролер + UI + rate limiting | 2–3 дні |
| Web OTP API + fallback на SMS | +1 день |
| Інтеграція з реєстрацією та замовленням | +1 день |
Flash call-верифікація стає конкурентною перевагою для мобільної аудиторії — менше тертя, вища конверсія.







