При разработке проектов часто возникает потребность в механизме уведомлений, т.е. оповещений о том или ином событии. В статье расскажем об одном из способов простой реализации механизма уведомлений в платформе Loginom при помощи чат-бота Telegram.
При реализации проектов часто возникает потребность в реализации механизма уведомлений, т.е. оповещения о том или ином событии. Типичный кейс выглядит следующим образом. Есть сценарий загрузки данных в хранилище из множества источников. При этом нет уверенности, что все данные будут загружены корректно. Это может происходить по множеству причин, например, из-за временно не работающего веб-сервиса или не сделанной вовремя выгрузки файлов.
Обычно проблемой является не столько отсутствие данных в хранилище, сколько незнание пользователей о возникшей ситуации. Если аналитик будет заранее оповещен о том, что при загрузке возникли проблемы, он сможет учитывать это в процессе принятия решений или отложить анализ до момента сбора всех данных. Если же пользователь в неведении относительно корректности загрузки, то он может принимать неверные решения на основе неполных данных, не зная о наличии проблемы.
Потребность в уведомлениях возникает часто, вот некоторые примеры:
В подобных случаях правильно спроектированная система принятий решений должна оповещать пользователей о наличии проблемы. Лучше всего, чтобы это происходило без участия человека. Один из вариантов оповещения — автоматическая отправка заинтересованным лицам сообщения по электронной почте. Но в последние годы появился более удобный вариант — оповещение через мессенджеры.
Об одном из способов простой реализации механизма уведомлений в платформе Loginom при помощи чат-бота Telegram будет рассказано далее.
Для реализации этой механики необходимо выполнить следующие действия:
Всё это можно реализовать без единой строчки кода. Для настройки потребуется только смартфон с Telegram и платформа Loginom. Причем всё, что будет описано далее можно реализовать даже в бесплатной редакции платформы.
Пройдем по шагам этот путь и покажем, как можно за пару минут настроить удобный механизм уведомлений.
В Telegram находим BotFather и получаем описание доступных команд.
Выбираем команду /newbot и задаем название нового бота и уникальное имя (username), которое обязательно должно заканчиваться на «_bot».
Необходимо сохранить токен, указанный в сообщении. В данном случае это «1944318437:AAErr0K4JSQ03ePdVdOpuikkTVjxsDyBzVA». Он нам в будущем потребуется.
Внимание! Не публикуйте нигде токен, он дает доступ к данным бота. Любой, у кого есть токен, сможет читать и отправлять сообщения от имени бота.
Далее необходимо создать группу, добавить в неё бот и тех пользователей, которые должны получать оповещения.
Последний шаг — сделать бота администратором группы.
Далее необходимо отправить любое сообщение в эту группу, например, «Hello bot» и набрать в строке браузера строку следующего вида:
https://api.telegram.org/bot<ТОКЕН>/getUpdates
.
В нашем случае это строка
https://api.telegram.org/bot1944318437:AAErr0K4JSQ03ePdVdOpuikkTVjxsDyBzVA/getUpdates
.
В результате будет получен ответ следующего вида:
{"ok":true,"result":[{"update_id":662854589, "my_chat_member":{"chat":{"id":-420930972,"title": ... ... ... "can_manage_voice_chats":true,"is_anonymous":false}}}]}
.
В ответе интересует код -420930972
— это идентификатор группы, куда будут отправляться оповещения. Его необходимо сохранить для последующего использования в сценариях.
На этом подготовительная работа заканчивается. Далее необходимо настроить сценарий в Loginom.
Нужно создать пакет в Loginom, перейти в подключения и создать подключение REST-сервис «Telegram REST-сервис».
В поле URL сервиса ввести строку вида:
https://api.telegram.org/bot<ТОКЕН>/sendMessage
что в нашем случае
https://api.telegram.org/bot1944318437:AAErr0K4JSQ03ePdVdOpuikkTVjxsDyBzVA/sendMessage
выбрать метод POST и content-Type запроса «application/json».
Перейдем в сценарий и перенесем на workflow узел Калькулятор (переменные). И создадим в нем 2 выражения:
Имя | Метка | Тип | Значение |
---|---|---|---|
chat_id | ID чата | Строковый | "-420930972" |
message | Сообщение | Строковый | "{""chat_id"": """ + chat_id + """, ""text"": ""Внимание событие""'}" |
В переменной message сформируется сообщение, которая будет отправляться в чат. В данном случае это «Внимание событие».
Т.к. обработчик REST-запрос принимает данные только в виде таблицы, надо использовать обработчик переменные в таблицу и выбрать вариант «в столбцы» — это способ преобразования по умолчанию.
Следующий шаг — перетащить обработчик REST-запрос и подать на вход ранее настроенное подключение к REST сервису и узел "Переменные в таблицу". Активизировать подключение "Telegram REST-сервис", запустить мастер настройки обработчика REST-запрос и связать поле "Сообщение" и полем "request/".
Полученный сценарий выглядит очень просто.
Всё! Если выполнить этот сценарий, то в чате появится сообщение от бота.
В качестве примера можно рассмотреть типичный кейс использования подобного бота — оповещение о том, что загрузка данных прошла успешно.
Для этого рассмотрим простой сценарий:
Сценарий выглядит следующим образом.
В данном сценарии надо обратить внимание на пунктирную связь между узлом «Excel файл» и «REST-запрос». По умолчанию все сценарии в Loginom выполняются параллельно и поэтому, если явно не указывать последовательность выполнения, то отправка сообщения в чат будет осуществлена вне зависимости от того, завершится ли выгрузка в Excel или нет.
В Loginom есть возможность задать порядок выполнения сценария, связав узел «Excel файл» и «REST-запрос». В результате запрос будет отправлен только в случае, если корректно завершится выгрузка в файл.
Важно принимать во внимание следующее:
Для облегчения работы с чат-ботом создан производный компонент — Telegram-bot. Принимающий на вход 3 переменные: token, chat_id и message_text. Для его применения достаточно всего лишь получить token, chat_id, как было продемонстрировано выше и написать сам тест сообщения.
Для применения надо подключить пакет к разработанному сценарию и воспользоваться готовым компонентом интеграции. Главное, не забыть получить token, chat_id и указать их значения во входных переменных.
Другие материалы по теме: