feat: Add presence heartbeat for Matrix online status
- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
This commit is contained in:
114
NODE2-TELEGRAM-BOTS-ANALYSIS.md
Normal file
114
NODE2-TELEGRAM-BOTS-ANALYSIS.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# 📡 Node #2 — Telegram бот-аналітика (23.11.2025)
|
||||
|
||||
**Мета:** перевірити всі Telegram боти, прив’язані до агентів НОДА2, зафіксувати стан сервісів (STT, TTS, Parser, Web Search, Vision) та результати по кожному агенту.
|
||||
|
||||
---
|
||||
|
||||
## 1. Зведена таблиця ботів
|
||||
|
||||
| # | Агент / Бот | Username | Token prefix | Нода / Модель | Статус до фіксу | Статус після фіксу | Коментар |
|
||||
|---|-------------|----------|--------------|---------------|-----------------|--------------------|----------|
|
||||
| 1 | DAARWIZZ | @DAARWIZZBot | 83234123 | Node1/Node2 · qwen3:8b | не відповідає | ✅ активний | Автоініціалізація + polling |
|
||||
| 2 | Helion | @HelionEnergyBot | 81120625 | Node1/Node2 · qwen3:8b | не відповідає | ✅ активний | system_prompt + STT/TTS |
|
||||
| 3 | GREENFOOD | @greenfoodliveBot | 74951653 | Node1 · qwen3:8b | не підключений | ✅ активний | Додано у bots.yaml |
|
||||
| 4 | CLAN | @clan_bot | 85168721 | Node2 · DeepSeek | токен відсутній | ⏳ чекає токен | Потрібно отримати новий BotFather токен |
|
||||
| 5 | Soul | @soul_bot | 80415964 | Node2 · qwen3:8b | токен не внесено | ⏳ чекає токен | Ready після отримання |
|
||||
| 6 | DRUID | @druid_bot | 81456184 | Node2 · qwen3:8b | токен не внесено | ⏳ чекає токен | Той самий gateway |
|
||||
| 7 | EONARCH | @eonarch_bot | 79623915 | Node2 · DeepSeek | токен не внесено | ⏳ чекає токен | DeepSeek модель |
|
||||
| 8 | Яромир | @yaromir_bot | 81281806 | Node2 · qwen3:8b / DeepSeek | токен не внесено | ⏳ чекає токен | Використовує CrewAI |
|
||||
| 9 | NUTRA | — | PLACEHOLDER | Node2 · qwen3:8b | токен відсутній | 🔴 потрібен бот | Потрібно зареєструвати |
|
||||
| 10 | Dario | Discord | — | Node2 · qwen3:8b | Discord only | 🔄 прогрес | Поза Telegram |
|
||||
|
||||
> ✅ – бот зареєстрований у `telegram-gateway`, polling активний.
|
||||
> ⏳ – gateway готовий, потрібно тільки токен.
|
||||
> 🔴 – немає ні токена, ні бота.
|
||||
|
||||
---
|
||||
|
||||
## 2. Сервіси, що задіяні
|
||||
|
||||
| Сервіс | URL (Node1) | Опис | Статус |
|
||||
|--------|-------------|------|--------|
|
||||
| Local Telegram Bot API | `http://144.76.224.179:8081` | офіційний Telegram API (long polling) | ✅ |
|
||||
| telegram-gateway | `http://144.76.224.179:8000` | FastAPI, multi-bot, NATS | ✅ |
|
||||
| NATS | `nats://144.76.224.179:4222` | черга `agent.telegram.update` | ✅ |
|
||||
| DAGI Router | `http://144.76.224.179:9102` | маршрутизація до LLM | ✅ |
|
||||
| STT Service | `http://dagi-stt:9000/stt` | розпізнавання voice/audio | ✅ (через docker network) |
|
||||
| TTS Service | `http://dagi-tts:9100/tts` | відповіді голосом | ✅ |
|
||||
| Parser Service | `http://dagi-parser:9400` | PDF / DOC | ✅ |
|
||||
| Vision / Swapper | `http://144.76.224.179:8890` | qwen3-vl:8b (vision) | ✅ |
|
||||
| Web Search bridge | Router `mode=web_search` | використовується при запитах | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 3. Що саме виправлено
|
||||
|
||||
1. **Автоініціалізація ботів**
|
||||
- Додано завантаження `bots.yaml` при старті (`app/main.py`).
|
||||
- Gateway перезапускає polling для кожного активного бота.
|
||||
|
||||
2. **Повний Telegram listener**
|
||||
- `telegram_listener.py` отримав підтримку:
|
||||
- текстових, голосових, аудіо, video-note повідомлень;
|
||||
- фото з передачою `file_url`;
|
||||
- PDF документів (parser);
|
||||
- автоматичний STT (до 60 секунд, `handle_voice_message`);
|
||||
- metadata → Router для Vision/Parser.
|
||||
|
||||
3. **STT / TTS / Parser маршрут**
|
||||
- Події з `metadata` обробляє `router_handler`:
|
||||
- `_handle_photo` → vision спеціаліст;
|
||||
- `_handle_document` → parser + контекст;
|
||||
- `_text_to_speech` → відповіді голосом.
|
||||
|
||||
4. **Нові API в telegram-gateway**
|
||||
- `GET /bots/status/{agent_id}` – для UI;
|
||||
- `DELETE /bots/{agent_id}` – відʼєднати бота;
|
||||
- CORS дозволяє звертатися з `http://localhost:8899`;
|
||||
- подія `bot.unregistered` у NATS.
|
||||
|
||||
5. **UI модуль "Підключення до Telegram бота"**
|
||||
- У кабінеті кожного агента (`/agent/:agentId`) новий блок:
|
||||
- показує статус (registered/polling);
|
||||
- підключення через токен від @BotFather;
|
||||
- відʼєднання одним кліком;
|
||||
- авто-оновлення раз на 20 секунд.
|
||||
|
||||
---
|
||||
|
||||
## 4. Як перевірити
|
||||
|
||||
1. **Деплой gateway**
|
||||
```bash
|
||||
cd telegram-infrastructure
|
||||
docker compose up -d --build telegram-gateway
|
||||
```
|
||||
2. **Перевірити health**
|
||||
```bash
|
||||
curl -s http://localhost:8000/healthz
|
||||
```
|
||||
3. **Список ботів**
|
||||
```bash
|
||||
curl -s http://localhost:8000/bots/list | jq
|
||||
```
|
||||
4. **Статус конкретного агента**
|
||||
```bash
|
||||
curl -s http://localhost:8000/bots/status/helion | jq
|
||||
```
|
||||
5. **UI**
|
||||
- Відкрити `http://localhost:8899/agent/helion`
|
||||
- Використати модуль **"Підключення до Telegram бота"**
|
||||
|
||||
---
|
||||
|
||||
## 5. Наступні кроки
|
||||
|
||||
1. **Отримати токени** для CLAN, Soul, DRUID, EONARCH, Яромир, NUTRA.
|
||||
2. **Додати secrets до `telegram-gateway/bots.yaml`** та перезапустити сервіс.
|
||||
3. **Розширити router-config** (LLM профілі) для нових агентів, щоби вони отримували власний `system_prompt`.
|
||||
4. **Підготувати шаблони промптів** у `docs/prompts/telegram/`.
|
||||
|
||||
---
|
||||
|
||||
✅ **Результат:** боти НОДА2 можуть отримувати текст, голос, фото, PDF, виконувати веб-пошук та відповідати голосом. UI для підключення доступний у кожному агентському кабінеті.
|
||||
|
||||
Reference in New Issue
Block a user