Данный раздел содержит подробную инструкцию по установке и настройке системы автоматической выгрузки отчётов в формате PDF или EXCEL на электронную почту или в Telegram-бот.
1. Установка
1.1. Копирование файлов
Скопируйте все файлы и папки, кроме следующих:
*Предоставляются по запросу в службе тех.поддержки
LOG
mydownloads
lastresult.json
1.2. Настройка службы
- Откройте файл
createAutoGenerateReportService.bat
в текстовом редакторе. - В параметре
binPath
укажите корректный путь к файлуAutoGenerateReport.exe
.
1.3. Создание Windows-службы
Запустите файл createAutoGenerateReportService.bat
от имени администратора. Будет создана Windows-служба с именем «Game-Keeper AutoGenerateReport».
1.4. Настройка путей к библиотекам
Откройте файл AutoGenerateReport.runtimeconfig.dev.json
и укажите правильный путь к папке LIB
.
2. Конфигурация
Все настройки выполняются в конфигурационном файле appsettings.json
.
2.1. Настройка списка отчетов
Секция TaskList
Каждый выгружаемый отчёт настраивается отдельным элементом массива в секции TaskList
.
Параметры элемента:
- ReportId — идентификатор отчета в системе ReportSystem (Интерактивные отчёты) (см. Рис. 1).
- ReportName — имя, под которым отчет будет сохраняться.
- Schedule — расписание выгрузки (используется формат CRON, подробнее: CRON) (пример см. ниже).
- ExportFormat — формат выгрузки:
«pdf»
(PDF) или«
xlsx»
(Excel). - Smtp — в секции указываем адреса электронной почты, которые ,будут получать рассылку.
- Telegram — адреса пользователей в Telegram, которые будут получать рассылку (адрес — это User ID в Telegram, получить его можно через бота @getmyid_bot).
Рис. 1 ID отчёта
Пример cron-команд для рассылки отчётов с разной периодичностью и в заданное время, оформленных по правилам cron:
1. Ежедневная рассылка в 12:00 (полдень)
0 12 * * * команда
- Запускается каждый день в 12:00.
0
— минута (00)12
— час (12)* * *
— любой день месяца, любой месяц, любой день недели
2. Еженедельная рассылка по понедельникам в 09:30
30 9 * * 1 команда
- Запускается каждую неделю в понедельник в 09:30.
30
— минута (30)9
— час (09)* *
— любой день месяца и месяц1
— понедельник (дни недели: 0 или 7 — воскресенье, 1 — понедельник, ..., 6 — суббота)
3. Ежемесячная рассылка 1-го числа месяца в 08:00
0 8 1 * * команда
- Запускается 1-го числа каждого месяца в 08:00.
0
— минута (00)8
— час (08)1
— день месяца (первое число)* *
— любой месяц и день недели
4. Рассылка каждый будний день (понедельник-пятница) в 18:45
45 18 * * 1-5 команда
- Запускается с понедельника по пятницу в 18:45.
45
— минута (45)18
— час (18)* *
— любой день месяца и месяц1-5
— дни недели с понедельника по пятницу
2.2. Настройка способов рассылки
Секция SenderProviders
2.2.1. E-mail
В секции «SenderProviders»:«Smtp»
указываются параметры SMTP-сервера, учетные данные отправителя, а также отображаемое имя, которое будет видно получателям писем.
2.2.2. Telegram
В секции «SenderProviders»:«Telegram»
настраивается параметр «ApiToken»
— токен Telegram-бота, через которого будут отправляться отчёты. Обратите внимание: получатели должны быть подписаны на данного бота.
Важно! Для каждой отдельной конфигурации необходимо создавать уникального Telegram-бота.
2.3. Подключение к ReportSystem (интерактивные отчёты)
Секция ReportSystem
Для подключения к системе интерактивных отчётов ReportSystem необходимо указать следующие параметры:
BaseUrl — URL сервера ReportSystem (как адресная строка в браузере).
Login — имя пользователя, от имени которого будет выполняться подключение. Указанный пользователь должен иметь права на вход в ReportSystem, а также на создание и просмотр отчётов.
- Password — пароль пользователя, соответствующий указанному логину.
2.4. Создание списка отчётов
Секция TaskList
.
3. Описание работы службы
3.1. Принцип работы
- Служба AutoGenerateReport отслеживает расписание в секции
TaskList
. - В заданное время автоматически формируется отчёт через ReportSystem по указанному ReportId и формату (pdf или excel).
- Сформированные файлы сохраняются в папке
mydownloads
в двух вариантах:ReportId + дата_и_время + .ExportFormat
ReportName + дата_и_время + .ExportFormat
- Файл с названием
ReportName + дата_и_время + .ExportFormat
отправляется на электронную почту и/или в Telegram адресатам из настроек.
3.2. Гибкость настроек
Вы можете добавить в TaskList
любое количество отчетов, каждый с индивидуальным расписанием и списками получателей.
4. Работа Telegram-бота (версия 1.0.0.2)
- При первом запуске Telegram-бота пользователь получает сообщение:
"Привет, {UserName}! Ваш User ID: {UserId}. Вы подписались на рассылку отчетов."
- Данные (UserId и UserName) сохраняются в файле
telegramUsers.json
и используются для последующих рассылок отчетов в Telegram.
5. Пример конфигурации (appsettings.json)
{ "AllowedHosts": "*", "SenderProviders": { "Smtp": { "SmtpHost": "smtp.yandex.ru", "SmtpPort": 465, "UseSsl": true, "Login": "Логин, от которого происходит рассылка", "Password": "Пароль", "From": { "Address": "Адрес, с которого происходит рассылка", "Name": "Отображаемое имя, от которого приходит письмо" } }, "Telegram": { "ApiToken": "6278601718:AAG5vYEtpQR6cOUCNUay8kpvD3xI0cPDbQo" } }, "ReportSystem": { "BaseUrl": "http://cloud.game-keeper.com:5200", "Login": "Robot", "Password": "1" } , "TaskList": [ { "ReportId": "ceb7713a-7a76-6940-243d-269a584e6844", "ReportName": "Выручка за текущий год", "Schedule": "*/1 * * * *", "ExportFormat": "pdf", "Smtp": { "To": [ { "Name": "Себе", "Address": "any@yandex.ru", "Disabled": false } ], "Cc": [ ], "Subject": "Выручка за текущий год", "Body": "<h1>Выручка за текущий год</h1> Письмо сформировано автоматически <br/> С уважением, <br/> Ваш автогенератор отчетов", "BodyIsHtml": true, "Disabled": false }, "Telegram": { "To": [ { "Name": "Имя получателя", "Address": "123456789", "Disabled": false } ], "Text": "Выручка за текущий год", "Disabled": false }, "Disabled": false } ] }
6. Дополнительные рекомендации
- Для корректной работы убедитесь, что у пользователя, под которым происходит подключение к ReportSystem, достаточно прав для формирования нужных отчетов.
- Перед запуском службы проверьте все пути и параметры в конфигурационном файле.
- Настоятельно рекомендуется не изменять структуру и имена системных папок и файлов.
Версия документа: 1.0.0.2