User Tools

Site Tools


telegram

This is an old revision of the document!


Работа с Telegram API внутри OpenSCADA.

Для чего это надо? Я бы использовал только для уведомлений. Некоторые, возможно, захотят и управление реализовывать через команды боту. Минимально для работы нужно реализовать два метода: отправка сообщения и прием.

Всю базовую информацию по созданию ботов в Telegram можно прочитать в тысяче статей по всему интернету, но если парой слов, то для создания бота вам нужно написать @BotFather и получить ключ API.

Подготовка к работе

Требуется создать транспорт для общения с серверами Telegram. Для этого в дереве проекта переходим в раздел Транспорты > SSL и создаем выходной транспорт. Имя можно выбрать любое, но в библиотеке, приложенной к статье, используется имя по умолчанию Telegram. Требуется именно SSL, а не просто сокет.

В транспорте нельзя указывать протокол HTTPS, но известно, что для обмена через HTTPS используется порт 443. Адрес у транспорта указываем следующий:

api.telegram.org:443

Отправка сообщения

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

В коде ниже есть 4 переменных.

ИмяТипОписание
TransportСтрокаИмя транспорта в “Транспорты > SSL”
APIKeyСтрокаКлюч, полученный от @BotFather
ChatIDЦелочисленныйУникальный идентификатор переписки
MessageСтрокаТекст сообщения
tr = SYS.Transport.SSL.nodeAt("out_" + Transport);
 
req = SYS.XMLNode("POST");
req.setAttr("URI", "/bot" + APIKey + "/sendMessage");
req.childAdd("cnt").setAttr("name", "chat_id").setText(ChatID.toString());
req.childAdd("cnt").setAttr("name", "text").setText(Message);
req.childAdd("cnt").setAttr("name", "disable_notification").setText("true");
tr.messIO(req,"HTTP");
telegram.1744805133.txt.gz · Last modified: 2025/04/16 12:05 by walhi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki