Messenger Service
Тип: @service
Версия: 3.0.0
Статус: ready
Назначение
Универсальный сервис для работы с мессенджерами.
Обеспечивает общение ПРОЕКТОР 256 с клиентами и внутренней командой.
Возможности
| Функция |
Описание |
| Telegram |
Боты через python-telegram-bot |
| WhatsApp |
Cloud API (официальный) |
| Multi-Connection |
Несколько ботов/номеров одновременно |
| STT |
Распознавание голоса (Whisper local/API) |
| TTS |
Синтез речи (Edge TTS бесплатно) |
| LLM |
Интеграция с OpenRouter |
| Files |
Импорт файлов в S3 |
| Web UI |
Панель управления |
| Webhook |
Сервер для WhatsApp |
| Systemd |
Автозапуск как сервис |
| Roles |
Система ролей (CLIENT, AM, PM, EXECUTOR, OPERATOR) |
| DialogEngine |
Сценарии диалогов по ролям |
| ModeManager |
Переключение режимов работы |
Быстрый старт
# 1. Установить зависимости
pip install -r requirements.txt
# 2. Настроить .env
cp .env.example .env
nano .env # Добавить токены
# 3. Запустить
python run.py --all
Структура
@messenger.service/
├── CLAUDE.md
├── run.py ← Быстрый запуск
├── install.sh ← Установка systemd
├── requirements.txt
├── .env.example
├── connections.example.yaml
│
├── src/
│ ├── adapters/
│ │ ├── base.py ← BaseAdapter, Message
│ │ ├── telegram.py ← TelegramAdapter
│ │ └── whatsapp.py ← WhatsAppAdapter
│ │
│ ├── voice/
│ │ ├── stt.py ← WhisperSTT (local/api)
│ │ └── tts.py ← EdgeTTS, OpenAITTS
│ │
│ ├── files/
│ │ └── importer.py ← FileImporter → S3
│ │
│ ├── roles.py ← Role, AgentMode, UserManager
│ ├── dialog_engine.py ← DialogEngine (сценарии)
│ ├── mode_manager.py ← ModeManager (режимы)
│ ├── admin_commands.py ← OperatorCommands (админка)
│ ├── router.py ← MessageRouter, SessionManager
│ ├── multi.py ← MultiConnectionManager
│ ├── llm_service.py ← LLM интеграция
│ ├── bot_service.py ← BotService (главный)
│ └── webhook_server.py ← WhatsApp webhooks
│
├── web/
│ ├── app.py ← Web UI
│ └── templates/
│ └── index.html
│
└── systemd/
├── messenger.service
├── messenger-web.service
└── messenger-webhook.service
Запуск
Простой запуск
# Только бот
python run.py
# Бот + Web UI
python run.py --web
# Всё (бот + web + webhook)
python run.py --all
# С голосовыми ответами
python run.py --voice
Из конфига
python run.py --config connections.yaml
Как systemd сервис
# Установка
sudo ./install.sh
# Управление
sudo systemctl start messenger
sudo systemctl enable messenger
# Логи
sudo journalctl -u messenger -f
Конфигурация
.env
# Telegram
TELEGRAM_BOT_TOKEN_MAIN=123456:ABC-DEF...
TELEGRAM_BOT_TOKEN_SALES=789012:GHI-JKL...
# WhatsApp Cloud API
WHATSAPP_TOKEN=EAAxxxxxx...
WHATSAPP_PHONE_ID=123456789
WHATSAPP_VERIFY_TOKEN=my_verify_token
# LLM
OPENROUTER_API_KEY=sk-or-v1-xxx
# S3
S3_BASE_PATH=/mnt/beget-s3
connections.yaml
connections:
- name: main_bot
type: telegram
token: ${TELEGRAM_BOT_TOKEN_MAIN}
description: Основной бот
project_id: pirotehnika
tags: [main, sales]
- name: support
type: telegram
token: ${TELEGRAM_BOT_TOKEN_SUPPORT}
description: Бот поддержки
- name: whatsapp_main
type: whatsapp
token: ${WHATSAPP_TOKEN}
phone_id: ${WHATSAPP_PHONE_ID}
API
Python API
from src.bot_service import BotService
# Создаём сервис
bot = BotService(voice_responses=True)
# Добавляем подключения
bot.add_telegram("main", token="...")
bot.add_whatsapp("wa", token="...", phone_id="...")
# Запускаем
await bot.start()
# Отправляем сообщение
await bot.send_message("main", chat_id, "Привет!")
# Статистика
print(bot.get_stats())
Web API
| Endpoint |
Метод |
Описание |
/ |
GET |
Dashboard |
/api/status |
GET |
Статус подключений |
/api/logs |
GET |
Логи сообщений |
/api/stats |
GET |
Статистика |
/api/send |
POST |
Отправить сообщение |
/api/connection/{name}/start |
POST |
Запустить подключение |
/api/connection/{name}/stop |
POST |
Остановить |
Система ролей
| Роль |
Описание |
Агент |
| CLIENT |
Внешний клиент |
ПРОЕКТОР 256 |
| AM |
Аккаунт-менеджер |
ПРОЕКТОР 256 |
| PM |
Проект-менеджер |
ПРОЕКТОР |
| EXECUTOR |
Исполнитель |
ПРОЕКТОР |
| OPERATOR |
Оператор (полный доступ) |
ТЕРМИНАЛ |
Режимы работы
| Режим |
Для кого |
Описание |
| INTAKE |
CLIENT |
Первичный сбор информации |
| STATUS |
CLIENT, AM |
Статус проекта |
| CLARIFY |
CLIENT |
Уточнение деталей |
| REVIEW |
CLIENT |
Согласование результата |
| MANAGE |
PM |
Управление проектом |
| TASK |
PM, EXECUTOR |
Работа с задачами |
| REPORT |
PM |
Отчётность |
| ASSIST |
AM |
Помощь клиенту |
| COMMUNICATE |
AM |
Общение |
Команды
Для всех
/mode — меню режимов
/mode <name> — переключить режим
/status — статус проекта
Для оператора
/op — меню оператора
/admin help — админ-команды
/admin users — список пользователей
/admin role <id> <role> — назначить роль
Агенты
Сервис интегрирован с агентами платформы:
| Агент |
Роутинг |
Описание |
| ПРОЕКТОР 256 |
Клиенты, AM |
Внешняя коммуникация |
| ПРОЕКТОР |
PM, Исполнители |
Внутреннее управление |
| АРХИТЕКТОР |
Вопросы методологии |
Консультации |
| ТЕРМИНАЛ |
Оператор |
Системные команды |
Порты
| Сервис |
Порт |
Описание |
| Web UI |
8899 |
Dashboard |
| Webhook |
8080 |
WhatsApp webhooks |
Зависимости
# Основные
httpx>=0.25.0
python-dotenv>=1.0.0
pyyaml>=6.0
# Telegram
python-telegram-bot>=20.0
# Voice
openai-whisper>=20230314 # STT local
edge-tts>=6.1.0 # TTS free
# Web UI
aiohttp>=3.9.0
aiohttp-jinja2>=1.5
jinja2>=3.1.0
Ссылки
| Компонент |
Путь |
| OpenRouter коннектор |
infra/@openrouter.connector/ |
| Агент ПРОЕКТОР 256 |
system/@projector256.agent/ |
| Агент ПРОЕКТОР |
system/@projector.agent/ |
| Сценарии диалогов |
architect/concept/SCENARIOS.md |
| Документация ролей |
architect/concept/ROLES.md |
Версия: 3.0.0