- 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
115 lines
6.4 KiB
Markdown
115 lines
6.4 KiB
Markdown
# 📡 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 для підключення доступний у кожному агентському кабінеті.
|
||
|