Files
MessageGateway/docs/groups.md
Sergey Antropov b90def35ed Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-11-12 20:25:11 +03:00

4.2 KiB
Raw Blame History

Конфигурация групп

Формат конфигурации

Конфигурация групп хранится в файле config/groups.json.

Пример конфигурации:

{
  "monitoring": {
    "messenger": "telegram",
    "chat_id": -1001234567890,
    "thread_id": 0,
    "config": {}
  },
  "alerts_max": {
    "messenger": "max",
    "chat_id": "123456789",
    "thread_id": null,
    "config": {
      "access_token": "optional_override_max_token",
      "api_version": "5.131"
    }
  }
}

Поля конфигурации:

  • messenger - тип мессенджера (telegram, max)
  • chat_id - ID чата (может быть числом для Telegram или строкой для MAX/VK)
  • thread_id - ID треда в группе (только для Telegram, 0 для основной группы, null для MAX/VK)
  • config - дополнительная конфигурация для мессенджера (например, access_token для MAX/VK)

Управление группами через API

Управление группами доступно через REST API с защитой API ключом.

Получение списка поддерживаемых мессенджеров

GET /api/v1/groups/messengers

Пример ответа:

{
  "status": "ok",
  "messengers": [
    {
      "type": "telegram",
      "name": "Telegram",
      "supports_threads": true,
      "enabled": true
    },
    {
      "type": "max",
      "name": "MAX/VK",
      "supports_threads": false,
      "enabled": false
    }
  ]
}

Получение списка групп

# Без API ключа (только названия)
GET /api/v1/groups

# С API ключом (полная информация)
GET /api/v1/groups
Headers: X-API-Key: your_api_key_here

Пример ответа (без API ключа):

{
  "status": "ok",
  "groups": [
    {"name": "monitoring", "chat_id": null},
    {"name": "alerts", "chat_id": null}
  ],
  "count": 2
}

Пример ответа (с API ключом):

{
  "status": "ok",
  "groups": [
    {
      "name": "monitoring",
      "messenger": "telegram",
      "chat_id": -1001234567890,
      "thread_id": 0
    },
    {
      "name": "alerts_max",
      "messenger": "max",
      "chat_id": "123456789",
      "thread_id": null
    }
  ],
  "count": 2
}

Создание группы

POST /api/v1/groups
Headers: 
  Content-Type: application/json
  X-API-Key: your_api_key_here

{
  "group_name": "monitoring",
  "messenger": "telegram",
  "chat_id": -1001234567890,
  "thread_id": 0
}

Пример запроса для MAX/VK:

POST /api/v1/groups
Headers: 
  Content-Type: application/json
  X-API-Key: your_api_key_here

{
  "group_name": "max_alerts",
  "messenger": "max",
  "chat_id": "123456789",
  "thread_id": 0,
  "config": {
    "access_token": "your_max_access_token"
  }
}

Пример ответа:

{
  "status": "ok",
  "message": "Группа 'monitoring' создана с мессенджером 'telegram' и ID -1001234567890"
}

Обновление группы

PUT /api/v1/groups/{group_name}
Headers: 
  Content-Type: application/json
  X-API-Key: your_api_key_here

{
  "messenger": "telegram",
  "chat_id": -1001234567891,
  "thread_id": 0
}

Пример ответа:

{
  "status": "ok",
  "message": "Группа 'monitoring' обновлена"
}

Удаление группы

DELETE /api/v1/groups/{group_name}
Headers: X-API-Key: your_api_key_here

Пример ответа:

{
  "status": "ok",
  "message": "Группа 'monitoring' удалена"
}

API ключ для управления группами:

  • Настраивается в переменной окружения API_KEY
  • Без API ключа можно только просматривать названия групп
  • С API ключом доступны все операции (создание, обновление, удаление)
  • API ключ передается в заголовке: X-API-Key: your_api_key_here