Поддержка в Telegram и ВКонтакте на базе Google Dialogflow.
- Telegram: kislyakov_support_bot
- ВКонтакте: Поддержка ВКонтакте
Бот отвечает на типовые вопросы пользователей в Telegram и ВКонтакте:
- отвечает на приветствия;
- рассказывает, как устроиться на работу;
- понимает разные формулировки вопроса благодаря Dialogflow.
Если Dialogflow не понял сообщение во ВКонтакте — бот молчит, чтобы не мешать операторам техподдержки.
Dialogflow — облачный сервис Google для распознавания намерений в тексте. Бот передаёт сообщение в Dialogflow, тот сопоставляет его с интентом по тренировочным фразам из phrases.json и возвращает готовый ответ. Интенты загружаются через API скриптом create_intent.py — без ручного ввода в консоли.
Бот отвечает на типовые вопросы пользователей в Telegram и ВКонтакте, понимая намерения с помощью Dialogflow. Вопросы-интенты загружаются из phrases.json через API, поэтому обучение не требует ручного ввода в консоли Dialogflow. Если бот не понимает пользователя во ВКонтакте — он молчит, чтобы не мешать операторам техподдержки.
Бот работает как systemd-сервис на Linux-сервере. Telegram- и VK-боты запускаются как отдельные сервисы, оба используют общий клиент Dialogflow.
| Инструмент | Зачем |
|---|---|
| aiogram | Telegram Bot API |
| vk_api | Long Poll API ВКонтакте |
| google-cloud-dialogflow | Распознавание намерений и ответы |
| python-dotenv | Загрузка переменных окружения из .env |
| systemd | Запуск и автоперезапуск сервисов (Restart=always) |
-
Скопировать
.env.exampleв.envи заполнить токены:TELEGRAM_BOT_TOKEN=токен_от_@BotFather VK_GROUP_TOKEN=токен_группы_ВК DIALOGFLOW_PROJECT_ID=ваш_project_id GOOGLE_APPLICATION_CREDENTIALS=application_default_credentials.json.envдобавлен в.gitignoreи не попадёт в репозиторий. -
Установить зависимости:
python -m venv .venv .venv\Scripts\Activate.ps1 # Windows # source .venv/bin/activate # Linux pip install -r requirements.txt
-
Загрузить интенты в Dialogflow:
python create_intent.py
Путь к файлу с интентами можно задать аргументом (по умолчанию
phrases.json):python create_intent.py --phrases-file my_phrases.json
python telegram_bot.pypython vk_bot.py-
Скопировать проект на сервер:
cd /opt && git clone <url-репозитория> support-bot
-
Создать venv и поставить зависимости:
cd /opt/support-bot python3 -m venv .venv .venv/bin/pip install -r requirements.txt -
Создать
.envна сервере (см. выше). УкажитеGOOGLE_APPLICATION_CREDENTIALSабсолютным путём к файлу ключей. -
Установить systemd-юниты:
sudo cp deploy/support-bot-*.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now support-bot-telegram support-bot-vk
Ключевые моменты:
Restart=always— systemd поднимет бота, если он упалRestartSec=10— пауза 10 секунд перед перезапускомWorkingDirectory— нужно указать реальный путь к проектуExecStart— путь к Python из виртуального окружения (bin/python, не простоpython)
# Статус сервисов
systemctl status support-bot-telegram support-bot-vk
# Остановить / перезапустить
sudo systemctl restart support-bot-telegram
sudo systemctl restart support-bot-vk
# Логи
journalctl -u support-bot-vk -f| Файл | Назначение |
|---|---|
telegram_bot.py |
Telegram бот (aiogram + Dialogflow) |
vk_bot.py |
VK бот (vk_api longpoll + Dialogflow) |
dialogflow_client.py |
Общий клиент Dialogflow |
create_intent.py |
Скрипт загрузки интентов в Dialogflow (путь через --phrases-file) |
phrases.json |
Обучающие фразы и ответы для интентов |
deploy/support-bot-telegram.service |
systemd-юнит Telegram бота |
deploy/support-bot-vk.service |
systemd-юнит VK бота |
.env.example |
Шаблон переменных окружения |
requirements.txt |
Зависимости |
