Уведомления в Loginom при помощи чат-бота Telegram

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

В данном демопримере описан алгоритм работы с чат-ботом Telegram: создание бота, создание группы в Telegram и назначение бота администиратором группы. Показан механизм работы уведомлений на примере сценария: импорта данных, их обработки и экспорта данных в Excel.

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Запустить демо

Установить локально

Начальная подготовка

Подготовка в Telegram
  1. В Telegram необходимо найти BotFather и получить описание доступных команд.

    Бот для создания ботов

  2. Выбрать команду /newbot и задать название нового бота и уникальное имя (username), которое обязательно должно заканчиваться на «_bot».

    Название бота — LoginomTest, уникальное имя (username) — loginom_help_bot

  3. Необходимо сохранить токен, указанный в сообщении. В данном случае это 5********5:A*********************************M. Он потребуется на следующих этапах.

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

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

  5. Необходимо выдать боту роль администратора группы.

  6. Далее необходимо отправить любое сообщение в эту группу, например, «Hello bot», и набрать в браузере строку следующего вида:

    https://api.telegram.org/botТОКЕН/getUpdates.

    В данном примере это строка:

    https://api.telegram.org/bot5********5:A**********************************M/getUpdates.

  7. В результате будет получен ответ:

    {"ok":true,"result":[{"update_id":4*******5, "message":{"message_id":*,"from":{"id":2********0,... ... ...},"chat":{"id":-6*******6,"title": ... ... ... "all_members_are_administrators":true},"date":1********1,"text":"hello bot"}}]}

    В ответе интересует код -6*******6 — это идентификатор группы, куда будут отправляться оповещения. Его необходимо сохранить для последующего использования в сценариях.

Описание алгоритма

1. Импорт данных

Загрузка данных

Таблица «Классификация клиентов».

Имя Метка
 Class Класс
 IDClient Код Клиента
 IDQuarter Квартал

2. Обработка данных

Фильтр по кварталам

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

Настройки узла Фильтр по кварталам произведены следующим образом:

  • Поле — Квартал.
  • Условие — в интервале.
  • Нижняя граница — 01.01.2016, 00:00.
  • Верхняя граница — 01.10.2016, 00:00.

3. Выгрузка результата

Экспорт полученных данных в файл

Отфильтрованные данные выгружаются в «Excel файл»:

Выгруженные данные
Рисунок 1. Выгруженные данные

По завершении экспорта Telegram-bot пришлет уведомление.

4. Оповещение с помощью Telegram-bot

Отправка REST-запроса в Telegram-bot

Для использования бота требуется получить токен и идентификатор группы, как было продемонстрировано выше, а также сформулировать текст уведомления. Подмодель Telegram-bot принимает на вход 3 переменные: token, chat_id и message_text.

Входной порт переменных в подмодели Telegram-bot:

Имя Метка Значение
 token Tокен 5********5:A*********************************M
 chat_id Идентификатор чата -6*******6
 message_text Текст в мессенджере Загрузка прошла успешно

Алгоритм работы узла-подмодели Telegram-bot:

  1. С помощью узла Калькулятор(переменные) формируются две переменные: адрес в виде URL-сервиса и текст с идентификатором чата — Текст в чат.

  2. URL-сервис подается на вход REST-сервиса, где в настройках отмечено подключение через переменную.

  3. Узел Переменные в таблицу принимает на вход Текст в чат и выбирается вариант «в столбцы».

  4. На вход обработчика REST-запрос отправляются настроенное подключение в REST-сервисе и результат обработки Переменные в таблицу.

  5. C помощью мастера настройки REST-запроса связывается поле Текст в чат с полем request/.

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

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

В случае успешного завершения сценария в чате появится сообщение от бота «Загрузка прошла успешно» или то сообщение, которое будет внесено в переменную message_text.

Сообщение от бота
Рисунок 2. Сообщение от бота

Важно принимать во внимание следующее:

  1. Запрос к чат-боту будет отправляться с того компьютера, на котором выполняется сценарий, т.е. либо с рабочей станции, где установлен Loginom Desktop, либо с Loginom Server. Необходимо, чтобы на этой машине были открыты соответствующие порты и отсутствовали какие-либо другие ограничения на отправку REST-запросов.

  2. На работу чат-бота накладываются ограничения, например, не более одного сообщения в секунду и не более 20 сообщений в минуту в одну и ту же группу. Подробнее об ограничениях можно почитать в Bots FAQ.


Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).