Автоматизация получения SMS-кодов для клиент-банков в Битрикс24

Автоматизация получения SMS-кодов для клиент-банков в Битрикс24

Один из моих клиентов — компания, которая оказывает услуги бухгалтерского, налогового и юридического сопровождения.

Клиентская база насчитывает около 700 компаний по всей России. Отрасли самые разные: производство, строительство, логистика, торговля, маркетплейсы, IT, стартапы.

Практически у каждого клиента есть свой клиент-банк, и сотрудникам компании регулярно приходится в них авторизовываться.

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

Физически это было организовано довольно просто: купили пять мобильных телефонов, в каждый установили свою SIM-карту, а SMS с кодами приходили непосредственно на эти аппараты.

Дальше начиналась ручная работа. Офис-менеджер следила за телефонами, при поступлении нового SMS открывала сообщение, копировала код и пересылала его сотруднику в мессенджере.

На первый взгляд процесс выглядел несложным. Но сообщений приходили сотни, причём в случайные моменты времени.

Каждое сообщение требовало всего около 30 секунд ручной работы: открыть SMS, скопировать код и переслать его сотруднику.

На первый взгляд это немного. Но проблема была в другом: невозможно было просто выделить на эту работу час или два в течение дня. Новое сообщение могло прийти в любой момент, а код требовалось передать достаточно быстро.

Поэтому офис-менеджер фактически должна была постоянно дежурить возле пяти телефонов и следить за входящими SMS. Даже когда в данный момент сообщений не было, она не могла просто заняться другой работой и забыть об этих телефонах.

Получался классический пример процесса, где на выполнение каждой отдельной операции уходит совсем немного времени, но сама операция требует постоянного присутствия человека.

Когда я начал работать с компанией, это одна из проблем, на которую я обратил внимание.

Я предложил поискать вариант автоматизации этого процесса.

Как оказалось, директор давно хотел что-то сделать с этой проблемой. Просто до этого никто из предыдущих автоматизаторов не проявлял инициативу и не предложил конкретного решения.

Анализ

Первой задачей было понять, как вообще можно автоматически получать SMS с обычного мобильного телефона.

Я исходил из простой идеи: если существует мобильное приложение, способное передавать входящие SMS на URL, то дальше всю обработку можно перенести в Битрикс24.

В таком случае схема получается достаточно очевидной: SMS на телефон → мобильное приложение → HTTP-запрос → Битрикс24 → рабочий чат.

На стороне Битрикс24 с полученными сообщениями уже можно было делать всё необходимое.

В процессе поиска я нашёл приложение Пересылка СМС. При изучении его возможностей выяснилось, что помимо стандартного функционала у него есть API-сервис для интеграции с внешними системами. API позволяет получить данные о последних 300 SMS, поступивших на номер.

Это было не совсем то, что я искал, но это решало задачу не менее качественно.

И здесь возникла отдельная техническая задача: мне было необходимо получать новые сообщения достаточно быстро, поскольку срок жизни SMS-кода ограничен. При этом постоянно обращаться к API тоже было нельзя: слишком частые запросы создавали бы лишнюю нагрузку и потенциально могли привести к ограничениям на стороне сервиса.

Нужно было найти компромисс между частотой запросов и скоростью получения данных.

Моделирование решения

После анализа я остановился на следующей схеме.

На каждый из пяти телефонов устанавливается приложение Пересылка СМС.

Битрикс24 периодически обращается к API и получает список последних сообщений.

При очередном запуске система определяет последнюю обработанную SMS и сохраняет её как контрольную точку. Следующий запуск снова получает последние сообщения, но уже обрабатывает только те, которые появились после сохранённой контрольной точки.

Каждая новая SMS автоматически отправляется в рабочий чат Битрикс24, где уже находятся сотрудники компании.

Таким образом, сотруднику больше не нужно писать офис-менеджеру и ждать, пока кто-то увидит сообщение на телефоне.

Весь процесс получается таким:

  1. Сотрудник запрашивает код при авторизации в клиент-банке
  2. SMS приходит на один из пяти телефонов.
  3. SMS Forwarder делает сообщение доступным через API
  4. Битрикс24 получает новые SMS
  5. Новое сообщение автоматически появляется в рабочем чате.
  6. Сотрудник использует полученный код для авторизации.

Главная идея была не в том, чтобы заменить один мессенджер другим, а в том, чтобы полностью убрать человека из промежуточного звена.

Реализация

Для проверки новых сообщений я использовал непериодический агент Битрикс24 с интервалом 15 секунд.

Здесь есть важный нюанс: непериодический агент не означает строгое выполнение каждые 15 секунд. Фактический запуск зависит от того, когда Битрикс24 обрабатывает агент.

Поэтому реальный интервал получался несколько больше.

Тем не менее на практике новые SMS обычно попадали в чат примерно в течение 30-40 секунд после поступления, что вполне укладывается в любой срок жизни одноразового кода.

Контроль обработанных сообщений

Отдельно нужно было сделать так, чтобы одна и та же SMS не пересылалась повторно.

После обработки агент передавал самому себе в качестве параметра последнюю полученную SMS.

При следующем запуске он снова запрашивал последние сообщения через API и сравнивал их с уже обработанной.

В работу попадали только сообщения, появившиеся позже сохранённой контрольной точки.

После обработки последняя SMS становилась новой точкой отсчёта для следующего запуска.

Таким образом, агент мог работать постоянно, не создавая повторных сообщений в чате.

Передача сообщений в Битрикс24

После получения новой SMS система автоматически отправляла её в рабочий чат.

Специально создавать отдельный интерфейс для сотрудников не потребовалось.

Они уже работали в Битрикс24 и знали, где искать сообщения от коллег.

Поэтому автоматизация вписалась в существующий процесс практически без изменения привычного сценария работы.

Фильтрация SMS

Отдельный механизм фильтрации входящих сообщений здесь не понадобился.

Телефонные номера не использовались для обычного общения и практически нигде не были засвечены, поэтому спам на них почти не поступал.

Иногда могли приходить единичные посторонние сообщения, но заметного шума они не создавали.

В этой ситуации реализовывать дополнительную сложную фильтрацию ради редких исключений не имело смысла.

Эффект

После установки приложения на все пять мобильных телефонов ручная передача SMS была полностью исключена.

Но главный результат автоматизации заключался не столько в экономии нескольких часов ручной работы.

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

Раньше офис-менеджер должна была находиться рядом с аппаратами и следить за входящими сообщениями, потому что новое SMS могло прийти в любой момент.

Теперь эта необходимость исчезла.

SMS автоматически попадает в Битрикс24, а сотрудник подключается к процессу только тогда, когда ему действительно нужен код.

То есть человек больше не является обязательным звеном между телефоном и сотрудником.

Получилась простая цепочка: SMS → Битрикс24 → сотрудник.

Таким образом, автоматизация освободила не просто рабочее время офис-менеджера, а сняла с неё постоянную обязанность находиться «на посту» и ждать следующего сообщения.

Где ещё можно применить такой подход

Сам подход оказался полезнее конкретной задачи с клиент-банками.

Здесь использована достаточно универсальная схема: внешний источник события → API → Битрикс24 → рабочее действие.

Если внешняя система предоставляет API, Битрикс24 можно использовать как промежуточный слой для автоматической обработки и передачи информации сотрудникам.

По похожему принципу можно автоматизировать различные процессы, в которых человек сейчас вручную переносит информацию из одной системы в другую.

Особенно хорошо такой подход работает там, где события возникают непредсказуемо и требуют быстрой реакции.

Например, сотруднику может приходить уведомление из внешнего сервиса, которое он должен быстро увидеть, проверить и передать дальше.

Если при этом человек не принимает содержательного решения, а только выполняет механическую передачу информации, его часто можно полностью убрать из процесса.

Выводы

Этот кейс начался не с разработки и даже не с выбора конкретного приложения.

Сначала я посмотрел на сам процесс и задал простой вопрос: «зачем здесь вообще нужен человек?».

Оказалось, что офис-менеджер фактически выполняла механическую функцию — следила за пятью телефонами и переносила SMS-коды из одного канала коммуникации в другой.

После поиска подходящего инструмента удалось собрать решение из готового мобильного приложения с API и механизмов Битрикс24.

В результате компания полностью отказалась от ручной передачи SMS, а сотрудник перестал быть обязательным звеном процесса.

На мой взгляд, это хороший пример того, что автоматизация не всегда начинается с большой системы.

Иногда достаточно найти одно небольшое повторяющееся действие, понять, зачем в нём вообще участвует человек, и убрать его из процесса.

Все статьи