[DIY или Сделай сам, Лайфхаки для гиков, Офисы IT-компаний, Программирование] Управляем офисом с помощью простого telegram-бота

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
28-Июл-2020 18:31

Привет, Хабр! Меня зовут Александр, я работаю в компании FINCH. Мы создаем приложения для крупных брендов вроде «Спартака», «Столото» и «Газпром-медиа».
Помимо клиентских проектов, мы очень любим создавать внутренние проекты — для веселья и удобства. Круто, когда ты с коллегами можешь придумать суперприложение или бота для стендапов. Так же появился внутренний бот для открытия дверей и просмотра камер, о котором я расскажу в этой заметке.

Дисклеймер: если вы ищете сложных технических кейсов, боюсь мне нечем вас порадовать. Говорю заранее, чтобы у вас не было ложных ожиданий. У нас простое, но эффективное решение, которое можно легко сделать за пару часов, получив кучу пользы.
Как устроен бот
Бот предельно простой: две кнопки для дверей (открыть дверь, открыть калитку) + несколько для камер.

При этом на запуске эффект оказался безумным — ботом сразу стали пользоваться, причем просто так, потому что прикольно одним тапом по кнопке что-то менять вокруг.
Бот экономит время
Бот — это удобно. Особенно, когда забыл ключи или когда лень их доставать пока идешь курить. Кажется, что это мелочи — ну достань ты связку ключей с брелоком из Парижа или пропуск из кармана и приложи к двери. Но из таких мелочей состоит вся наша жизнь — кажется, если каждый день экономить по 10-15 секунд то можно будет наслаждаться реальностью дополнительные 5-10 дней. Посмотрите на эту красивую инфографику о том, куда уходят наши годы жизни.
Но главная причина для бота — курьеры. У нас двухэтажный офис на 800м², но с одним входом для курьеров. Если ты работаешь на первом этаже, то проблем нет, но пока дойдешь из DevOps-отдела до входа, пройдет вечность.

Встреча с курьером после долгих лет странствий
При этом встреча курьера сама по себе смысла не несет: ты видишь парня в комбинезоне, открываешь ему кнопкой дверь, ждешь пока он дойдет, откроет заветный ларец, берешь пакет и снова открываешь кнопкой дверь. А потом — долгий путь обратно.
С ботом все было бы проще. Спокойно работаешь, курьер звонит, просишь его нажать на кнопку звонка и оставить заказ у двери, слышишь звонок. Нажал на кнопку — открыл калитку, нажал вторую — открыл дверь. Курьер оставил еду — Profit!
Главное — нажать две кнопки — двери и калитки. Иначе курьер застрянет во внутреннем дворике и будет ругаться на непонятном языке, как персонаж «Симс», в ужасе не понимая, что ему делать.
Как бот следит за офисом
С дверью разобрались, но тут возникает другая проблема— в офис могут стучаться посторонние. Если с ребятами в комбинезоне все понятно, то если приехал клиент, партнер или кто-то незнакомый все не так просто. Для таких случаев нам пригодилась интеграция с камерами. Удобно, когда ты можешь тапнуть одну кнопку и понять, кто там стоит за дверью.
Камер несколько и если прокликать по каждой, можно проверить все ли в порядке в офисе, не забыл ли ты выключить свет и не оставил ли свои вещи. Понятное дело, что если забываешь телефон в туалете, то тут никакой бот не поможет. Но если в фитнес-уголке, то вполне.

Что внутри бота
Мы написали специальный сервис, так как без него делать опасно — не хотелось бы, чтобы кто-то случайно наткнувшись в поиске на бота, смог бы открывать двери в нашем офисе. Сидит такой человек в Переславле-Залесском и вносит смуту в Московском мобильном продакшне.

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

О взломе мы даже не думаем. Бот запущен во внутренней сети, поэтому нет необходимости в какой-либо дополнительной защите. Внешнего способа обратиться к приложению которое выполняет команды, кроме как через бота, нет. Единственный способ чужому человеку открыть двери — найти одного из наших сотрудников на улице, отобрать телефон и открыть дверь.По факту мы все доверили Telegram.
Бот и камеры
С камерами похожая история. Есть внутренняя сеть, которая автоматически генерирует превью. Все, что требуется — обратиться на ссылку по которой всегда гарантированно есть свежая картинка — последний кадр с камеры. Он всегда хранится в «оперативке» — обновляется не постоянно, но точно есть. Как раз в «оперативку» и идет обращения по хитрой схеме авторизации.
Говоря «хитрую» я имею ввиду нестандартный запрос, который вряд ли где-то кроме камер используется. Нужно прям в домене указывать логин и пароль, прям как mailto. Дальше все просто — Java обращается к URL, сохраняет файл и загружает в Telegram. Бот не создает новый кадр, а перезаписывает существующий. Ему неинтересно кто во сколько пришел на работу, его интересует только текущее состояние. Каждое изображение весит около 200-300 Кб, о высоких нагрузках речи не идет. Но чтобы никто не смог «положить» бота, и чтобы бота не забанил Telegram за спам, мы добавили 10-секундный интервал между отправкой запросов.
Единственное мы не знаем как хранятся изображения — есть идея, что используются шардинговые решения, чтобы давно используемые файлы передвигать на отдельные сервера. Если вы знаете как это работает, расскажите в комментариях.
Последнее, что стоит отметить — ночные уведомления. Мы периодически устраиваем вечеринки в офисе, плюс у нас всегда есть люди, которые уходят из офиса позднее остальных. Поэтому мы сделали так, что если кто-то с 00:00 до 09:00 пользуется ботом, то пользователю и специально отмеченным людям приходит уведомление.

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

В итоге получается, что у нас есть база данных со следующими ролями:
— админ, который подтверждает и банит;
— юзер, который пользуется;
— алерт, который получает уведомления.
Раньше со скоростью вообще дела шли не очень — спасибо блокировке Telegram. Команды, которые должны были выполняться 2-3 миллисекунды, выполнялись секунду. А для всех звеньев, которые используют прокси (получение и отправление) пинг возрастает многократно.
Иногда это приводило к сбоям и вылетам. Люди привыкали тыкать кнопку «открыть» по 50 раз. И потом с задержкой можно было услышать симфонию дверных звонков. Приходилось менять порты и прокси, при этом мы не хардкодили, чтобы можно было спокойно поменять одну цифру вуаля.
Бонус трек: придумываем идеи, что еще можно придумать для офиса. Придумывайте и вы
  • Заказывать еду в офис. То есть автоматизировать то, что мы обычно делаем в специальных чатах вроде «FINCH Еда». Многим нашим сотрудникам, не особо нравится разговаривать с людьми, им нравится тыкать кнопки (Денис, кто создал бота из таких).
  • Бот мог бы помочь: условно люди подписывались на него, и когда дело доходило до заказа, человеку в личку прилетал вопрос «Будешь пиццу?» с ответами «Да» и «Нет». При необходимости он выяснял бы детали у человека, кто создал запрос.
  • Выводить CO2. Вовремя проветриваем помещение, не теряем сознание от углекислого газа. Сейчас это можно посмотреть в «Графане», но мы можем сделать так, что и значения и график будут прилетать человеку по нажатию кнопки.
  • Регулировать свет. Это нужно для тех, кто любит работать в темноте. Мы могли бы подключить бота к диодным лампам, и с помощью бота можно было бы регулировать их яркость. Условно, человек заранее выставляет нужно значение освещения и бот его запоминает. Потом в определенный момент, когда жить со светом уже нельзя — человек нажимает кнопку и вуаля — атмосфера создана.
    Остался простой вопрос — как это сделать? Офис большой, можно указать крыло в котором пользователь находится больше всего, но тут есть куча сценариев, которые должны быть просчитаны. Например, что делать, если я пересел в другое место?

На самом деле не существует кейсов, которые нельзя с технической точки зрения реализовать в боте. Всегда все упирается в UX, эргономику и воображение. Телеграм позволяет сделать любую инлайн-клавиатуру с кнопками любых размеров, хоть матрицу 50 на 50. Но эти кнопки — это все, что есть: никаких тапов, экранов, бургеров, чекбоксов.
При этом делать отдельных ботов — еще хуже, потому что придется искать их, а это столько кликов, что зачем вообще такой бот, если быстрее сделать все вручную (даже если ты сидишь в отделе DevOps и тебе нужно встречать курьера).
Однако мечтать никто не запрещает. Расскажите о самых безумных идеях для Telegam-бота, и авторам самых крутых мы раздадим эксклюзивные майки FINCH. Отправим в любую точку мира
Спасибо!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_lajfhaki_dlja_gikov (Лайфхаки для гиков), #_ofisy_itkompanij (Офисы IT-компаний), #_programmirovanie (Программирование), #_boty_dlja_messendzherov (боты для мессенджеров), #_telegram, #_boty_telegramma (боты телеграмма), #_lajfhaki (лайфхаки), #_ofisnaja_zhizn (офисная жизнь), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
, #_lajfhaki_dlja_gikov (
Лайфхаки для гиков
)
, #_ofisy_itkompanij (
Офисы IT-компаний
)
, #_programmirovanie (
Программирование
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 22-Ноя 13:42
Часовой пояс: UTC + 5