Возникла необходимость в получении уведомлений о событиях с Орион Про в группу Telegram, без использования модуля интеграции, преобразователя С2000-ПП и готовых ботов-пересыльщиков (ввиду платности и наличия рекламы).
На github нашел скрипт для отправки писем с электронной почты телеграм боту (https://gist.github.com/marioivangf/dce0495f0ee00b064616958e450d05bd) и решил использовать его.
1) С помощью @BotFather создаем бота в телеграм, получаем его уникальный токен.
В качестве рабочей станции для скрипта использовал виртуальный сервер на Centos 8.
2) Устанавливаем Node.js на сервер, после проверяем, что установка прошла успешно.sudo dnf install nodejs
node -V
3) Устанавливаем необходимые библиотеки: node-telegram-bot-api и mail-listener2, также устанавливаю shelljs (для чего его использовал опишу позже).npm install node-telegram-bot-api
npm install mail-listener2
npm install [-g] shelljs
4) Создаем новую директорию для хранения наших файлов, например "Alarms", в /home/userName/.
5) Создаем файл .js с произвольным именем в данной директории, копируем код, редактируем и сохраняем.const makeBot = require('node-telegram-bot-api');
const mailListener = require("mail-listener2");
const shell = require('shelljs');
shell.cd('/home/userName/Alarms'); //Переход в созданную директорию
const config = {
telegramToken: '1234567890:AAEqOJp-atljsiOPtDAasdwq34Xk-FW7uoIhI', //Токен вашего telegram бота
chatID: '-1234567890', //Идентификатор чата, куда будут приходить уведомления (личный чат, группа, канал)
email: "1234567890@mail.ru", //Электронная почта, куда приходят письма от Орион Про, в моем случае mail.ru
email_pass: "1234567890" //Пароль от электронной почты, желательно отдельный для внешних приложений
};
const bot = new makeBot(config.telegramToken, { polling: true });
bot.on('message', msg => bot.sendMessage(chatId, msg.chat.id));
var mailInbox = new mailListener({
username: config.email,
password: config.email_pass,
host: "imap.mail.ru", //Адрес сервера входящей почты (imap)
port: 993,
tls: true,
markSeen: true,
fetchUnreadOnStart: true,
});
mailInbox.start(); // start listening
mailInbox.on("server:connected", function () {
console.log("imapConnected"); //Вывод при успешном подключении к почтовому ящику
});
mailInbox.on("server:disconnected", function () {
console.log("imapDisconnected");
throw new Error('Restart app due to IMAP disconnection');
});
mailInbox.on("error", function (err){
console.log(err);
});
mailInbox.on("mail", function (mail, seqno, attributes){
bot.sendMessage(config.chatID, `
Зона: ${mail.subject} //Тема сообщения, указанная в сценарии
Событие: ${mail.text} //Сообщение
`, {
parse_mode: 'HTML'
});
//Конструкция для отправки видеофайла в зависимости от темы сообщения
switch (mail.subject) {
case 'Зона1':
shell.exec('./zone1.sh'); //Запуск скрипта sh
bot.sendVideo(config.chatID, '/home/userName/Alarms/zone1Video.mp4', {caption : "Зона 1"}); //Отправка видеофайла
break;
case 'Зона2':
shell.exec('./zone2.sh');
bot.sendVideo(config.chatID, '/home/userName/Alarms/zone2Video.mp4', {caption : "Зона 2"});
break;
case 'Зона3':
shell.exec('./zone3.sh');
bot.sendVideo(config.chatID, '/home/userName/Alarms/zone1Video.mp4', {caption : "Зона 3"});
break;
default:
break;
}
});
Shelljs в данном случае необходим для запуска bash скрипта, который, в свою очередь, начинает запись 5 секундного видео с камеры в данной зоне в файл с помощью набора библиотек FFmpeg (необходима установка). Далее, с использованием метода sendVideo, видео пересылается в тот же телеграм чат.
Пример скрипта .sh: #!/bin/bash
ffmpeg -t 00:00:05 -i rtsp://login:password@ipAddress/Streaming/channels/101 -rtsp_transport tcp-y -b 900k -vcodec copy -r 60 -y zone1Video.mp4
Скрипт должен быть исполняемым, для этого используется команда chmod +x и имя файла скрипта:chmod +x имя.sh
6) Создаем сценарии в Орион Про ("Отправка email по событию"), указываем тему письму, задаем необходимые параметры.
7) Присваиваем сценарии к событиям, обновляем БД в ОЗ.
8) Проверяем отправку писем о событиях на электронную почту.
9) Запускаем скрипт .js командой:node имя_скрипта.js
И дожидаемся сообщения об успешном подключении к электронной почте "imapConnected".
10) Иммитируем событие, ждем уведомление и сообщение в телеграмм чате.
В случае успеха, добавляем запуск скрипта .js в автозагрузку.
В конечном итоге получаем бота, который будет пересылать полученные события Орион Про с электронной почты в телеграм группу/канал, либо в личные сообщения. Также при тревогах в определенных зонах (например, помещения с АУПТ, серверные, электрощитовые) будет присылаться 5 секундное видео с данной зоны.
добавить комментарий