Jump to content

Telegram оповещения из Windows/Linux систем

From Центр документации - ТМИУС КП



Telegram является эффективным инструментом для оповещения в системах диспетчеризации и телемеханики. Он позволяет оперативно информировать о критических событиях через ботов и каналы, обеспечивая быстрое реагирование. Важно учитывать безопасность и конфиденциальность данных при использовании мессенджера в профессиональных целях.


Оповещение может осуществляться в группу и непосредственно пользователю.

Первым шагом вы должны создать нового бота в Telegram. Для этого выполните следующие действия:

  1. Откройте чат с https://t.me/botfather, официальным ботом для создания и управления другими ботами.
  2. Используйте команду /newbot и следуйте инструкциям для создания бота. Вам будет предложено ввести имя и имя пользователя для вашего бота.
  3. После успешного создания BotFather предоставит вам токен доступа к вашему боту. Этот токен выглядит как длинная строка и необходим для взаимодействия с API Telegram.

Теперь, когда у вас есть токен вашего бота, переходим к следующему шагу — получению chat_id.

Способ 1

Чтобы узнать свой chat_id:

  1. Отправьте любое сообщение вашему боту после его создания (например, просто текст "Привет").
  2. Для получения chat_id можно использовать Telegram Bot API. Для этого выполните HTTP-запрос к следующему URL-адресу, заменив YOUR_BOT_TOKEN на токен вашего бота: https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates. Этот запрос вернет JSON-ответ с информацией о последних обновлениях, включая сообщения, которые были отправлены вашему боту. В этом ответе вы увидите объект с параметром chat, где будет находиться chat_id.

Для группового чата вы можете пригласить бота в группу и следовать тем же шагам. После того как бот получит сообщение, вы сможете увидеть chat_id группы в ответе при выполнении запроса к API.

Способ 2

Как узнать chat_id группы:

  1. Пригласить бота @myidbot в созданную группу и ввести команду /getgroupid

Как узнать chat_id конкретного человека:

  1. Написать боту @myidbot в личные сообщения и ввести команду /getid

Работа с группами

Чтобы бот мог писать в группы, нужно через BotFather установить Group Privacy mode в Off

Для этого нужно написать BotFather → Bot Settings → Group Privacy → Turn Off

Установка

Linux

  1. Файл telegram_bot.pack поместить в /opt/storage/files/tm_cpps/luauser
  2. Загрузить файл конфигурации
  3. Прописать bot_token своего бота в конфигурации
  4. Прописать chat_id1, chat_id2... и добавить необходимые в список
  5. Указать параметр startmessage=1, если требуется отправка сообщения о старте контроллера
  6. Указать параметр prefix, значение которого будет добавляться к каждому сообщению оповещения
  7. Добавить необходимые входные сигналы для оповещения

Windows

  1. Файл telegram_bot.pack поместить в папку \luauser\, которая находится в каталоге TM_SERVER
  2. Установить wget для windows. Команда wget должна быть доступна из консоли Windows, для этого следует прописать %PATH% либо разместить wget в папке System32. Скачать можно, например, здесь
  3. Загрузить файл конфигурации
  4. Прописать bot_token своего бота в конфигурации
  5. Прописать chat_id1, chat_id2... и добавить необходимые в список
  6. Указать параметр startmessage=1, если требуется отправка сообщения о старте контроллера
  7. Указать параметр prefix, значение которого будет добавляться к каждому сообщению оповещения
  8. Добавить необходимые входные сигналы для оповещения

Логика работы

Сообщение при старте

При старте контроллера проверяется значение startmessage, если 1, то отправляется сообщение

prefix
Старт контроллера - [время контроллера]

Общий срез телеметрии

Если написать боту любое сообщение, то бот ответит во все chat_id сообщение согласно своему списку телеметрии.

Подстанция 1 - 192.168.0.70
14-03-2025 16:19:50
In1              - 14654
Сигнал в базе 2  - 0?
Сигнал в базе 3  - 0?
Сигнал 4         - 0?
Сигнал в базе 5  - 0?
Сигнал в базе 6  - 0?
Сигнал в базе 7  - 0?
Сигнал в базе 8  - 0?
Сигнал в базе 9  - 0?
Сигнал в базе 10 - 0?
Сигнал в базе 11 - 0?
Сигнал в базе 12 - 0?
Сигнал в базе 13 - 0?
Сигнал в базе 14 - 0?
Сигнал в базе 15 - 0?
Сигнал в базе 16 - 0?
Сигнал в базе 17 - 0?
Сигнал в базе 18 - 0?
Сигнал в базе 19 - 1
Сигнал в базе 20 - 1

Описание берется из базы. Если описания сигнала нет, то берется id из списка в параметрах Telegram оповещения.

Учитывается сигнал недостоверности, который в сообщениях указывается знаком ?

Спорадика

Спорадика приходит самостоятельно

Все тэги формата tit_ спорадикой игнорируются

Стенд RL25 - 192.168.0.250
14-03-2025 16:18:30
Сигнал в базе 2  - 1
Сигнал в базе 20 - 1
ABC              - 1

Файлы

Ссылки для скачивания
Описание Файл
Пример конфигурационного файла conf_iRZR2_telegram.xml
Скрипт Telegram оповещения telegram_bot.pack