📜 Техническое задание (ТЗ)Проект: Telegram-бот для общения с клиентами через AIОписание проектаСоздать Telegram-бота, который сначала проводит опрос клиентов в ManyChat, а затем автоматически переключает их на диалог с AI-моделью. Вся переписка с AI логируется в базу данных (SQLite) для последующего анализа и дообучения модели.
2. Стек технологий и инфраструктураTelegram Bot APIПрием и отправка сообщений клиентам
ДокументацияБесплатно
ManyChatОпрос клиентов перед началом переписки с AI
ManyChatБесплатно (в базовом тарифе)
AI-МодельГенерация ответов на запросы клиентов
OpenChat/Hugging Face
Бесплатно
API-серверОбработка вебхуков, передача сообщений между AI и Telegram
FastAPI/Flask
Бесплатно
Хостинг (VPS)Запуск бота и AI-модели
Hetzner/DigitalOcean
$5–$10/мес
База данных (SQLite)Хранение переписки клиентов
SQLite/PostgreSQL
Бесплатно
DockerКонтейнеризация и простота развертывания
DockerБесплатно
3. Функциональность проекта3.1. Telegram-бот✅ Получает ответы клиентов через
ManyChat✅ Принимает вебхук от ManyChat при завершении опроса
✅ Переключает клиента на AI-переписку
✅ Передает сообщения между клиентом и AI
✅ Отправляет сгенерированные AI-ответы клиенту в Telegram
3.2. AI-Модель✅ Обрабатывает текстовые запросы клиентов
✅ Генерирует ответы на основе предобученной модели
✅ Поддерживает регулярное дообучение на новых данных
3.3. API-сервер✅ Обрабатывает вебхуки от ManyChat
✅ Управляет логикой переключения клиента на AI
✅ Взаимодействует с Telegram Bot API для отправки сообщений
3.4. Логирование✅ Сохраняет всю переписку в базе данных (SQLite)
✅ Позволяет выгружать историю чатов для последующего анализа и дообучения модели
4. Пошаговая имплементация🔹 1. Разработка Telegram-бота 📌 Создать бота в
BotFather и получить API-токен
📌 Реализовать обработку вебхуков от
ManyChat📌 Добавить возможность отправки и приема сообщений через
Telegram API📌 Минимальные тесты:
✅ Проверить, что бот получает сообщения и отправляет ответы
🔹 2. Настройка ManyChat и интеграция с сервером📌 Создать сценарий опроса в
ManyChat📌 Добавить
вебхук на финальном шаге опроса (отправляет ID клиента и его ответы)
📌 Настроить FastAPI/Flask сервер для обработки вебхуков
📌 Минимальные тесты:
✅ Проверить, что данные передаются корректно
🔹 3. Интеграция AI-модели 📌 Установить библиотеку
Hugging Face Transformers📌 Загрузить предобученную модель
OpenChat📌 Реализовать API-эндпоинт для генерации ответов
📌 Подключить модель к API-серверу
📌 Минимальные тесты:
✅ Проверить, что AI генерирует осмысленные ответы
🔹 4. Логирование и база данных📌 Настроить
SQLite и создать таблицу для хранения переписок
📌 Добавить сохранение сообщений (клиент → AI → Telegram)
📌 Создать функцию для выгрузки данных для анализа
📌 Минимальные тесты:
✅ Проверить, что все переписки корректно записываются в базу
Внешний каталог (или volume) позволяет
сохранить файлы базы данных даже при перезагрузке сервера или контейнера. Это делается за счет монтирования каталога с хоста внутрь контейнера.
1. Как работает внешний каталог (bind mount) в Docker📌
Идея:Файлы базы данных SQLite (или другие файлы)
будут сохраняться вне контейнера — в каталоге на сервере (например, /var/lib/app_data). Даже если контейнер перезапустится, данные сохранятся в этом каталоге.
2. Настройка хранения данных вне контейнера🔹 Вариант 1: Простой запуск контейнера с привязанным каталогомИспользуем команду -v (bind mount):
docker run -d \ --name my_ai_app \ -v /var/lib/app_data:/app/db \ your_app_image
🔹
Разбор команды:- /var/lib/app_data → каталог на сервере (вне контейнера), где будет храниться база данных.
- /app/db → папка внутри контейнера, куда приложение записывает данные (например, conversation_logs.db).
- Все файлы, которые создаются в /app/db в контейнере, будут физически храниться в /var/lib/app_dataна сервере.
📌
Результат: После перезагрузки контейнера или сервера файлы в /var/lib/app_data сохраняются, а новый контейнер сможет их использовать.
🔹 Вариант 2: Использование Docker VolumeЭтот способ более гибкий, так как
Docker сам управляет данными.
1️⃣
Создать volume:docker volume create my_app_data
2️⃣
Запустить контейнер с volume:docker run -d \ --name my_ai_app \ -v my_app_data:/app/db \ your_app_image
📌
Результат: Данные базы хранятся внутри volume, который можно переиспользовать между контейнерами.
3. Проверка, что данные сохраняются после перезагрузки1️⃣ Запустите контейнер и сохраните в базе тестовые данные:
docker exec -it my_ai_app sqlite3 /app/db/conversation_logs.db "INSERT INTO logs (user_id, message) VALUES ('123', 'Test Message');"
2️⃣
Перезапустите контейнер:docker restart my_ai_app
3️⃣
Проверка данных после перезапуска:docker exec -it my_ai_app sqlite3 /app/db/conversation_logs.db "SELECT * FROM logs;"
☑️
Если данные сохранились — значит всё работает правильно!4. Дополнительно: Где хранятся файлы?📌 Если вы используете
bind mount (-v /var/lib/app_data:/app/db), файлы сохраняются в /var/lib/app_data.
📌 Если вы используете
Docker volume, узнать путь можно командой:
docker volume inspect my_app_data
5. Вывод🔹
Bind Mount (-v /path:/container_path) → более явный контроль над файлами, но требует управления правами доступа.
🔹
Docker Volume (docker volume create) → удобнее, если нужно автоматическое управление хранилищем.
🔹
Оба способа позволяют сохранить данные даже при перезагрузке сервера🔹 5. Развертывание на сервере📌 Арендовать
VPS (Hetzner/DigitalOcean)📌 Установить
Docker📌 Контейнеризировать приложение
📌 Настроить автоматический перезапуск сервера
📌 Минимальные тесты:
✅ Проверить стабильность работы бота на сервере
5. Стоимость проектаКомпонентМинимальный бюджет
VPS (Hetzner, 2 vCPU, 4GB RAM)
$5–10/мес
Telegram Bot API
Бесплатно
ManyChat (бесплатный тариф)
Бесплатно
OpenChat (бесплатная AI-модель)
Бесплатно
Итого$5–10/мес💡
Можно снизить стоимость, если развернуть бота на бесплатных серверах (Google Colab, Replit, AWS Free Tier).6. Потенциальные улучшения в будущем🔹
Добавление поддержки изображений и голосовых сообщений🔹
Подключение других мессенджеров (WhatsApp, Facebook Messenger)🔹
Разработка веб-панели для администрирования бота🔹
Интеграция с CRM для хранения информации о клиентах🔹
Аналитика и автоматические рекомендации на основе данных7. Минимальные тесты☑️
Telegram-бот принимает и отправляет сообщения☑️
ManyChat передает вебхук с данными клиента☑️
AI-модель отвечает осмысленно☑️
Все переписки сохраняются в базе данных☑️
Приложение работает стабильно на сервере📌 Итог✅ Гибкая, модульная архитектура – можно модернизировать и заменять части проекта
✅ Автоматическое переключение клиента в AI-переписку после опроса в ManyChat
✅ Возможность масштабирования и добавления новых функций
🚀 Что дальше?🔹 Можно начинать с
разработки бота и API-сервера🔹
Запросить бесплатный VPS (например, AWS Free Tier) или арендовать Hetzner/DigitalOcean🔹 Начать
разработку по шагам из ТЗ