Блог

Телеграмм-бот для Топового банка

Мы позаботились о спокойном отпуске без рабочих уведомлений! Рассказываем, как это удалось, в новой статье💥
avatar user
Кондратенко Сергей
CIO
19 марта 2024 г.
#Бот
#Разработка

Команда NooSoft может похвастаться еще одним крутым проектом в своем портфолио. На этот раз мы по заказу одного из топовых банков России разработали телеграмм-бота для внутреннего использования. И функционал его кажется легким - создание фото для аватарок.

Но всё гениальное должно быть просто!

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

Зачем мне эти ваши работы
Зачем мне эти ваши работы

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

Но как оповестить всех, что кто-то отсутствует и именно этому человеку нельзя писать? Сообщения и уведомления -  вариант на один раз, прочел и забыл. Фотография с датами отсутствия во всех рабочих профилях - вот решение. Она не будет спамить письмами на почту, но будет всегда на виду.

Какая задача была поставлена перед NooSoft?

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

В ходе переговоров были обозначены задачи, решаемые ботом:

  • Выбор или загрузка фона. Пользователь может выбрать любой фон для аватарки из предложенных вариантов или загрузить свой собственный. Это обеспечит создание уникального внешнего вида аватара.
  • Установка даты отпуска. Важной функцией бота должна быть возможность визуализации даты начала и окончания отпуска на аватаре. Что подчеркнет время отсутствия на рабочем месте непосредственно в профиле.
  • Добавление надписи. Сотрудник может добавить надпись на свой аватар, выбирая из предложенных вариантов. Это позволит внести неформальность и отразить индивидуальность пользователя.
  • Генерация готовой аватарки. По итогу сотрудник должен получить готовую аватарку. Процесс генерации должен быть максимально упрощен, а итоговый результат можно использовать сразу.

Разработка Телеграмм-бота

Сначала логика - потом разработка

Команда NooSoft приступила к работе с описания логики работы бота.

Было решено разделить функционал на два сервиса:

  1. Бот общения с пользователем.
  2. Генератор изображений.

Четкое разделение обязанностей между ботом и сервисом сборки фотографий, предотвратило большое ожидание генерации изображений и "краш самого сервиса" и поддерживало его активность для всех пользователей.

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

По итогу была выстроена следующая логика:

Первоначальная логика
Первоначальная логика
  • Бот общается с пользователями и узнает параметры желаемой аватарки.
  • “Слушатель” вылавливает все присланные фото и отправляет их в очередь.
  • Генератор на основе сформированной очереди создает аватар и отправляет его обратно в бот.

Теперь можно и покодить!

После того, как был определен фронт работ, команда приступила к разработке. Клиент предоставил нам большой массив с примерами аватарок.
 

Примеры аватарок от клиента
Примеры аватарок от клиента

Для эффективной коммуникации между ботом и "сборщиком фото" внедрили RabbitMQ – брокер сообщений, обеспечивающий асинхронное взаимодействие. Таким образом, входящие данные не теряются, даже если работа бота временно приостановлена. Сообщения сохраняются, а "сборщик фото" слушает очередь и начинает сборку, минимизируя время ожидания для пользователей.

Бот вылавливает данные с чата и отправляет их в очередь. В это время созданный слушатель в генераторе берет изображение с очереди, обрабатывает и отправляет в чат в виде "Фото" и "Документа" для меньшей потери качества.

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

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

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

Готовые аватарки от бота
Готовые аватарки от бота

Для эффективной коммуникации между ботом и "сборщиком фото" внедрили RabbitMQ – брокер сообщений, обеспечивающий асинхронное взаимодействие. Таким образом, входящие данные не теряются, даже если работа бота временно приостановлена. Сообщения сохраняются, а "сборщик фото" слушает очередь и начинает сборку, минимизируя время ожидания для пользователей.

Бот вылавливает данные с чата и отправляет их в очередь. В это время созданный слушатель в генераторе берет изображение с очереди, обрабатывает и отправляет в чат в виде "Фото" и "Документа" для меньшей потери качества.

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

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

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

Новая логика работы бота
Новая логика работы бота

В конечной стадии разработки команда добавила сбор статистики для анализа производительности бота. И произвела переход работы от механизма pulling (периодический опрос сервера на наличие новых сообщений) к использованию Webhooks.

Webhook - это метод, при котором сервер Телеграмма непосредственно отправляет новые данные боту по мере их поступления.

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

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

Обратная связь от сотрудников

Внедрение телеграм-бота в банковскую среду оказало положительное влияние на сотрудников и атмосферу в коллективе, получив признание со стороны персонала. Клиенты поделились, как изменился рабочий процесс:

  • Снизился рабочий стресс.

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

  • Улучшилось общее настроение.

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

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

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


 

До и После отпуска
До и После отпуска

Контакты

свяжитесь с нами, мы это любим!
Скачать презентацию
Оставьте заявку