Skip to content

milkin-vl/CustomBotExample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CustomBotExample

Пример реализации собственного бота (CustomBot) для приёма уведомлений от Обновлятора-1С.

Приложение запускает HTTP-сервер и сохраняет полученные сообщения и файлы в локальную папку ReceivedData.


Требования

Проверить установку:

dotnet --version

Быстрый старт

  1. Откройте терминал в папке проекта.
  2. Запустите:
dotnet run

Сервер запустится на порту 9099. В консоли будет выведен полный путь к папке ReceivedData, куда сохраняются данные.


Настройки

Все настройки находятся в начале файла Program.cs в виде констант:

Константа Значение по умолчанию Описание
DefaultPort 9099 Порт HTTP-сервера
Token MY-SECRET-TOKEN-CHANGE-ME Токен авторизации (Bearer-токен)

Важно: перед использованием замените токен на свой собственный.


Настройка в Обновляторе-1С

В настройках CustomBot укажите:

Параметр Значение
Token Тот же токен, что указан в Program.cs
SendMessageUrl http://<адрес-сервера>:9099/sendMessage
SendFileUrl http://<адрес-сервера>:9099/sendFile

Если бот запущен на том же компьютере, что и обновлятор, используйте http://localhost:9099/....

Настройка параметров Custom-бота:

Настройка Custom-бота

Настройка уведомлений — выберите созданного бота в качестве средства для отправки и укажите получателя:

Настройка уведомлений


Эндпоинты

POST /sendMessage

Приём текстового сообщения.

  • Query-параметры:
    • chat_id (обязательный) — идентификатор получателя (чат, канал или пользователь), которому адресовано уведомление.
    • batch_id (обязательный) — уникальный идентификатор пачки (GUID). Объединяет текстовое сообщение и все прикреплённые файлы в рамках одного уведомления, позволяя определить, какие файлы относятся к какому сообщению.
  • Заголовок: Authorization: Bearer <token>
  • Тело: JSON с полями subject, body и report_data
  • Ответ при успехе: {"ok": true}
  • Ответ при ошибке: {"ok": false, "error": "Описание ошибки."} (см. Коды ответов)

POST /sendFile

Приём файла.

  • Query-параметры:
    • chat_id (обязательный) — идентификатор получателя (тот же, что и в /sendMessage).
    • batch_id (обязательный) — идентификатор пачки, связывающий этот файл с сообщением из соответствующего вызова /sendMessage.
  • Заголовок: Authorization: Bearer <token>
  • Тело: multipart/form-data, поле document с файлом
  • Ответ при успехе: {"ok": true}
  • Ответ при ошибке: {"ok": false, "error": "Описание ошибки."} (см. Коды ответов)

Структура сохранённых данных

Все данные сохраняются в папку ReceivedData рядом с исполняемым файлом.

Каждый запрос создаёт подпапку вида:

ReceivedData/
  2025-01-15_143022345_abc123_message/
    message.json    — тело сообщения (pretty-print JSON)
    params.json     — параметры запроса (chat_id, batch_id)
  2025-01-15_143025678_abc123_file/
    report.zip      — полученный файл (оригинальное имя)
    params.json     — параметры запроса (chat_id, batch_id)

Формат имени подпапки: {дата}_{время с миллисекундами}_{batch_id}_{тип}.

Пример принятого сообщения (message.json):

Пример принятого сообщения


Сборка для публикации

Для создания автономного исполняемого файла:

dotnet publish -c Release -o ./publish

Для single-file публикации (один файл):

dotnet publish -c Release -r win-x64 --self-contained -o ./publish
dotnet publish -c Release -r linux-x64 --self-contained -o ./publish
dotnet publish -c Release -r osx-x64 --self-contained -o ./publish

Коды ответов

Код Описание Пример ответа
200 Успех, данные сохранены {"ok": true}
400 Ошибка запроса (например, отсутствует обязательный параметр) {"ok": false, "error": "Описание ошибки..."}
401 Неверный токен авторизации {"ok": false, "error": "Описание ошибки..."}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages