Отправка текстового файла при помощи чат-бота в Telegram (JavaScript)
Если при реализации проекта аналитику требуется механизм отправки уведомлений о результатах выполнения какого-либо процесса с вложением полученных данных, то его можно реализовать при помощи чат-бота Telegram.
В примере показан механизм отправки в Telegram уведомления с текстовым файлом. В сценарии выполняется импорт примера данных, формирование итогового набора, его экспорт в текстовый файл и дальнейшая отправка одного или нескольких текстовых файлов в Telegram.
В данном примере использованы статистические данные по регионам за несколько лет. Регионы обозначены при помощи кода ГАИ.
Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.
Начальная подготовка
В Telegram необходимо найти BotFather и получить описание доступных команд.
Выбрать команду /newbot и задать название нового бота и уникальное имя (username), которое обязательно должно заканчиваться на «_bot».
Cохранить токен, указанный в сообщении. В данном случае это
5********5:A*********************************M
. Он потребуется на следующих этапах.Важно: Необходимо сохранять приватность токена. Его публикация дает любому человеку доступ к данным бота, отправке и прочтению сообщений.
Cоздать группу, добавить в неё бота и тех пользователей, которые должны получать оповещения.
Выдать боту роль администратора группы.
Отправить любое сообщение в эту группу, например, «Hello bot», и набрать в браузере строку следующего вида:
https://api.telegram.org/botТОКЕН/getUpdates
.В данном примере это строка:
https://api.telegram.org/bot5********5:A**********************************M/getUpdates
.В результате будет получен ответ:
{"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. Задание значений переменных
Полученные токен и идентификатор группы задаются в качестве значений переменных в порту Переменные пользователя. Там же задаются Коды регионов, данные по которым требуется отправить в виде текстового файла. Значение переменной Коды регионов задается строкой, через запятую, в виде кодов регионов по классификации ГАИ.
Имя | Метка | Значение |
---|---|---|
token |
Tокен | 5********5:A*********************************M |
chat_id |
Идентификатор чата | -6*******6 |
region_code |
Коды регионов | 2,53,66 |
2. Импорт данных
В подмодели Импорт данных по регионам осуществляется импорт данных из двух Excel-файлов: Все регионы — справочник, который содержит наименования регионов и код ГАИ и Данные по годам — статистическая выборка данных по годам для ряда регионов.
К данным статистической выборки по годам присоединяются поля из справочника регионов. В мастере настройки узла Слияние заданы следующие параметры:
- Тип операции - Левое соединение
- Ключевое поле - Код ГАИ
3. Подготовка данных
В подмодели Подготовка данных происходит преобразование данных переменной Коды регионов
из строки в табличный вид. Операция осуществляется при помощи узла Разделитель строк (переменные) из библиотеки Loginom Silver Kit и узла Параметры полей.
На входном порту узла Разделитель строк (переменные) установлено соответствие полей Коды регионов и Входная строка, а также задана запятая в качестве разделитея.
При помощи узла Параметры полей исключается ненужное далее поле – ID части строки.
При помощи узла Слияние выполняется Левое соединение двух результирующих таблиц по ключевому полю Коды регионов (Код ГАИ).
Таким образом, формируется таблица с данными по интересующим нас регионам.
4. Экспорт данных и отправка файлов в Telegram
Отправка в Telegram нескольких файлов с данными по регионам возможна только после настройки механизма отправки файла по одному региону.
В узле Выбор одного региона происходит отбор по одному из регионов, отчет по которому необходимо отправить в виде текстового файла.
Отфильтрованные данные подаются на вход подмодели Отправка по одному региону.
В узле Таблица в переменные происходит отбор названия региона и его кода. Эти данные используются далее в узле Калькулятор (переменные) для формирования переменных: file_name
, path
, а также message_text
.
- Переменная
file_name
формируется при помощи строковой функции Concat из текущей даты (на момент запуска сценария), кода региона, наименования региона и расширения.txt
. Если регион по заданному коду не был найден, то вместо наименования региона происходит подстановка строки "Регион не найден". - Переменная
path
формируется аналогичным образом:Concat("Reports\",file_name)
, где "Reports\" - файловая директория, куда необходимо сохранить отчет. Таким образом, готовые отчеты помещаются в папку Reports. При необходимости можно изменить путь, по которому будет произведен экспорт. - Переменная
message_text
формируется следующим образом:Concat("Отчет: ", Naimenovanie_subyekta, " ", region_code)
.
Переменные подаются на узел Экспорт данных и определяют имя и путь сохранения файла. Также они необходимы для работы узла Отправка файла, в котором реализован скрипт отправки файла в Telegram на языке JavaScript.
Чтобы отправка файла выполнялась только после завершения экспорта в текстовый файл, между узлами Экспорт данных и Отправка файла настроена Последовательность выполнения при помощи Портов порядка выполнения.
В случае успешного завершения сценария в чате появится сообщение от бота и текстовый файл с данными.
Примечание: Запрос к чат-боту будет отправляться с того компьютера, на котором выполняется сценарий, т.е. либо с рабочей станции, где установлен Loginom Desktop, либо с Loginom Server. Необходимо, чтобы на этой машине были открыты соответствующие порты и отсутствовали какие-либо другие ограничения на отправку REST-запросов. Также на работу чат-бота накладываются ограничения, например, не более одного сообщения в секунду и не более 20 сообщений в минуту в одну и ту же группу. Подробнее об ограничениях можно почитать в Bots FAQ.
Для отправки нескольких файлов использован компонент Цикл, настроенный на выполнение подмодели Отправка по одному региону.
Параметры настройки Цикла:
- Вид цикла - Групповая обработка
- Вид групповой обработки - Разбиение по уникальным значениям полей (выбрано поле Коды регионов)
5. Отправка итогового отчета
Принцип работы аналогичен подмодели Отправка по одному региону. Данная подмодель выгружает один итоговый файл с данными по всем регионам, выбранным для анализа.
При помощи данного механизма происходит отправка сформированного файла, однако можно отправить в Telegram любой текстовый файл, указав путь его расположения в переменной.
Уведомления в Loginom при помощи чат-бота Telegram
Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно
Минимальные требования к системе:
- Операционная система: Windows 10 и выше
- CPU x64: 2 core 1
- Оперативная память: 4 GB
- Жесткий диск: 10 GB
1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).