/verb_game

Primary LanguagePython

Бот для Telegram и VK на основе Dialogflow

Программа по реализации бота для условного онлайн-издательства, помогающего продвигать авторские блоги и публиковать книги.

Бот умеет отвечать на все типичные вопросы, а те что-то посложнее – перенаправляет на операторов.

По предварительной оценке, это на 70% сократит время ожидания ответа и на 90% повысит довольство жизнью сотрудников службы поддержки.

Пример результата для Telegram:

demo_tg_bot

Пример результата для ВКонтакте:

demo_vk_bot]

Примеры работающих ботов: Бот Telegram, Бот Vk

Что такое Dialogflow

Dialogflow — это платформа от Google для понимания естественного языка, которую можно использовать для создания омниканальных чат-ботов.

Если описать работу платформы несколькими фразами, то это выглядит примерно так. Dialogflow пытается распознать намерения пользователя на основе обучающих фраз, которые ему дают на этапе проектирования. Основываясь на этих обучающих фразах, Dialogflow понимает, какой ответ дать на тот или иной вопрос пользователя.


Из чего состоит программа:

  • В модуле bot_tg.py реализовано взаимодествие пользователя через интерфейс telegram

  • В модуле bot_vk.py реализовано взаимодествие пользователя через сообщество Вконтакте

  • В модуле logger.py реализован класс собственного обработчика логов

  • В пакете google_methods реализованы методы взаимодействия с сервисом Dialogflow:

    detect_intent.py - получение ответного сообщения от сервиса Dialogflow на сообщение пользователя

    create_intents.py - загрузка обучающих фраз из json-файла с ответами и создание intents на их основе

Необходимые переменные окружения и файлы:

Для работы программы необходимо создать файл .env в корне проекта, содержащий переменные окружения:

TOKEN_VK=<Ключ доступа для группы с ботом Vk>
TOKEN_TG=<Токен от основного бота Tg>
TOKEN_TG_LOG=<Токен от бота Tg для отправки сообщений от логгера>
CHAT_ID_LOG=<Id чата Tg для получения сообщений от логгера>
ADMINS_VK=<Id администраторов Vk для общения с пользователями (через запятую без пробелов)>
GOOGLE_APPLICATION_CREDENTIALS=<Путь до файла в формате json с ключами доступа к проекту в сервисе Google Cloud>
PROJECT_ID=<Id проекта в Google Cloud>

В Google Cloud в разделе IAM&Admin>Service accounts для проекта необходимо получить файл в формате json с ключами доступа и разместить его по пути, указанному в GOOGLE_APPLICATION_CREDENTIALS.
Файл должен иметь следующий вид:

{
  "type": "service_account",
  "project_id": "your app XXXXXX",
  "private_key_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "client_email": "xxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxx.iam.gserviceaccount.com",
  "client_id": "xxxxxxxxxxxxxxxxxxxxxxxxx",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxxxxxxxxx.iam.gserviceaccount.com"
}

Файлы .profile и Procfile необходимы для деплоя на сервие Heroku


Пример установки

Загрузите репозиторий проекта:

git clone https://github.com/Sergryap/verb_game.git

Создайте и активируйте виртуальное окружение в корневой папке проекта:

cd verb_game/
python3 -m venv venv
source venv/bin/activate

Установите необходимые зависимости:

pip install -r requirements.txt

Screenshot from 2022-10-24 18-58-41

Создайте в корне проекта файл .env и запишите в него необходимые ключи:

nano .env

Разместите файл json с ключами доступа в корне проекта:

Screenshot from 2022-10-24 19-06-28

Чтобы запустить тренировку бота выполните команду:

python3 google_methods/create_intents.py

Этой командой создадутся Intents в сервие DialogFlow на основании данных файла /google_methods/questions.json

Запустите бота для tg и vk:

python3 bot_tg.py | python3 bot_vk.py

Screenshot from 2022-10-24 19-55-21

После запуска ботов вам придут сообщения от логгера в Tg:

Screenshot from 2022-10-24 19-08-07