Настройка верификации клиента через flash call 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка верификации клиента через flash call 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка верификации клиента через flash call 1С-Битрикс

Flash call отличается от звонка-сброса деталью, которая меняет всю схему: на Android-устройствах приложение-провайдер или сам браузер перехватывает входящий звонок, считывает номер автоматически и подтверждает верификацию без участия пользователя. Человек вообще ничего не вводит. Конверсия верификации при этом выше SMS на 15–25%.

Технология и требования

Flash call работает в двух режимах:

Автоматический (настоящий flash call) — требует установленного мобильного приложения с разрешением на чтение вызовов, либо браузерного API (Android Chrome + Web OTP API для некоторых провайдеров). Входящий звонок перехватывается программно, последние цифры номера извлекаются и отправляются на сервер без действий пользователя.

Полуавтоматический — пользователю показывается экран с маской, система инициирует вызов, пользователь видит 4 цифры и вводит их. Это фактически тот же «звонок-сброс», но с позиционированием как flash call.

Для настоящего автоматического flash call в Битрикс-магазине без мобильного приложения реальна только полуавтоматическая схема. Полностью автоматическая — через 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);
    });
}

Серверная часть: контроллер верификации

В Битрикс реализуется как контроллер 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-верификация становится конкурентным преимуществом для мобильной аудитории — меньше трений, выше конверсия.