📜 Техническое задание (ТЗ)
Проект: 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
🔹 Начать разработку по шагам из ТЗ

Made on
Tilda