Initial commit: Message Gateway project

- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-11-12 20:25:11 +03:00
commit b90def35ed
72 changed files with 10609 additions and 0 deletions

91
docs/bots.md Normal file
View File

@@ -0,0 +1,91 @@
# Настройка ботов
## Создание бота в Telegram
1. **Создание бота через BotFather:**
- Откройте Telegram и найдите бота [@BotFather](https://t.me/BotFather)
- Отправьте команду `/newbot`
- Следуйте инструкциям BotFather:
- Введите имя бота (например, "My Monitoring Bot")
- Введите username бота (должен заканчиваться на `bot`, например, "my_monitoring_bot")
- BotFather предоставит вам **токен бота** (например, `123456789:ABCdefGHIjklMNOpqrsTUVwxyz`)
2. **Настройка бота:**
- Сохраните токен бота в переменную окружения `TELEGRAM_BOT_TOKEN`
- Добавьте бота в группу Telegram, куда нужно отправлять сообщения
- Сделайте бота администратором группы (опционально, но рекомендуется для полной функциональности)
3. **Получение Chat ID группы:**
- Добавьте бота [@userinfobot](https://t.me/userinfobot) в группу
- Отправьте любое сообщение в группе
- @userinfobot покажет Chat ID группы (например, `-1001234567890`)
- Сохраните Chat ID в конфигурацию групп (`config/groups.json`)
4. **Получение Thread ID (для тредов):**
- Создайте тред в группе Telegram
- Используйте бота [@userinfobot](https://t.me/userinfobot) или API Telegram для получения Thread ID
- Thread ID можно получить через API Telegram: `getUpdates` или `getChat`
**Пример конфигурации для Telegram:**
```json
{
"monitoring": {
"messenger": "telegram",
"chat_id": -1001234567890,
"thread_id": 0,
"config": {}
}
}
```
## Создание бота в MAX/VK
1. **Создание приложения в VK:**
- Перейдите на [VK Developers](https://dev.vk.com/)
- Создайте новое приложение:
- Нажмите "Создать приложение"
- Выберите тип приложения: "Веб-сайт" или "Standalone"
- Введите название приложения
- Подтвердите создание
2. **Получение Access Token:**
- В настройках приложения найдите раздел "Токены"
- Создайте новый токен:
- Выберите права доступа (scope):
- `messages` - для отправки сообщений
- `photos` - для отправки фотографий
- `docs` - для отправки документов
- Скопируйте полученный токен
- Сохраните токен в переменную окружения `MAX_ACCESS_TOKEN`
3. **Получение Peer ID (ID чата):**
- Peer ID можно получить через API VK: `messages.getConversations`
- Для группы: Peer ID = `2000000000 + group_id`
- Для беседы: Peer ID можно получить через `messages.getChat`
4. **Настройка приложения:**
- Установите переменные окружения:
- `MAX_ACCESS_TOKEN` - токен доступа
- `MAX_API_VERSION` - версия API (по умолчанию `5.131`)
- `MAX_ENABLED=true` - включить поддержку MAX/VK
**Пример конфигурации для MAX/VK:**
```json
{
"max_alerts": {
"messenger": "max",
"chat_id": "123456789",
"thread_id": null,
"config": {
"access_token": "your_access_token_here",
"api_version": "5.131"
}
}
}
```
**Примечания:**
- MAX/VK не поддерживает треды (thread_id всегда `null`)
- Peer ID может быть как числом, так и строкой
- Для работы с группами VK требуется, чтобы бот был добавлен в группу и имел права администратора