telegram
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| telegram [2025/04/16 13:13] – walhi | telegram [2025/10/23 09:05] (current) – walhi | ||
|---|---|---|---|
| Line 74: | Line 74: | ||
| Данный код будет загружать все доступные сообщения. Между вызовами требуется хранить последнее значение '' | Данный код будет загружать все доступные сообщения. Между вызовами требуется хранить последнее значение '' | ||
| + | |||
| + | |||
| + | ===== Библиотека для работы ===== | ||
| + | |||
| + | Данные примеры кода стоит оформить в виде библиотеки в Сбор данных -> Вычислитель на Java-подобном языке -> Библиотека. Так будет гораздо удобнее использовать код повторно. | ||
| + | |||
| + | ===== Отправка оповещений группе пользователей ===== | ||
| + | |||
| + | Обычно телеграм бот нужен для оповещений об аварийных ситуациях. И оповещать приходится группу сотрудников. | ||
| + | |||
| + | Где брать список абонентов, | ||
| + | |||
| + | Где хранить ID пользователя Telegram? Логично, | ||
| + | |||
| + | |||
| + | В коде ниже есть 4 переменных. | ||
| + | |Имя|Тип|Описание| | ||
| + | |Transport|Строка|Имя транспорта в " | ||
| + | |Group|Строка|Имя группы пользователей для оповещения| | ||
| + | |APIKey|Строка|Ключ, | ||
| + | |Message|Строка|Сообщение | | ||
| + | <code java> | ||
| + | TelegramLib = SYS.DAQ.JavaLikeCalc.lib_Telegram; | ||
| + | |||
| + | users = SYS.Security.nodeList(" | ||
| + | |||
| + | for (var j = 0; j < users.length; | ||
| + | user = SYS.Security.nodeAt(users[j]); | ||
| + | | ||
| + | // Пропуск пользователей, | ||
| + | if (user.groups().indexOf(Group) == -1) continue; | ||
| + | | ||
| + | // Обработка сохраненных транспортов для уведомлений | ||
| + | transports = user.cfg(" | ||
| + | for(offset = 0; (transport = transports.parse(0, | ||
| + | tmp = transport.split(":" | ||
| + | TransportType = tmp[0]; | ||
| + | TransportValue = tmp[1]; | ||
| + | | ||
| + | if (TransportType == " | ||
| + | TelegramLib.SendMessage(Transport, | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Отправка журнала ошибок ===== | ||
| + | |||
| + | Выше есть код для массовой отправки сообщений, | ||
| + | |||
| + | При помощи функции '' | ||
| + | |||
| + | |||
| + | В коде ниже есть 7 переменных. | ||
| + | |Имя|Тип|Описание| | ||
| + | |TelegramTransport|Строка|Имя транспорта в " | ||
| + | |TelegramAPIKey|Строка|Ключ, | ||
| + | |TelegramGroup|Строка|Имя группы пользователей для оповещения через Telegram| | ||
| + | |MessagesLevel|Строка|Минимальный уровень сообщений из журнала | | ||
| + | |MessagesCat|Строка|Категория сообщений из журнала | | ||
| + | |TimeBegin|Целый|Время начала| | ||
| + | |utmLast|Целый|Микросекунды последнего сообщения| | ||
| + | |||
| + | <code java> | ||
| + | using Special.FLibSYS; | ||
| + | TelegramLib = SYS.DAQ.JavaLikeCalc.lib_Telegram; | ||
| + | |||
| + | if (f_start){ | ||
| + | TimeBegin = SYS.time(); | ||
| + | } | ||
| + | |||
| + | // Запрос сообщений по шаблону | ||
| + | TimeFinish = SYS.time(); | ||
| + | messages = SYS.Archive.messGet(TimeBegin, | ||
| + | |||
| + | // Обновляем время для следующей итерации | ||
| + | TimeBegin = TimeFinish; | ||
| + | utmLast = -1; | ||
| + | for (var i = 0; i < messages.length; | ||
| + | message = messages[i]; | ||
| + | tm = message.tm; | ||
| + | if ((TimeBegin == tm) && (utmLast > message.utm)) continue; | ||
| + | utmLast = message.utm; | ||
| + | TimeStr = tmFStr(tm," | ||
| + | messageText = TimeStr + ": " + message.mess; | ||
| + | | ||
| + | TelegramLib.SendAll(TelegramTransport, | ||
| + | } | ||
| + | </ | ||
telegram.1744809204.txt.gz · Last modified: 2025/04/16 13:13 by walhi
