Аналитика чат-ботов на Python

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В 2020 году я написал статью Аналитика для Telegram-ботов с достаточно простым решением, с 2 метриками и неоптимальным хранением данных. После появления рекламы в Telegram, аналитика стала ещё более необходима, так как теперь можно рекламировать ботов напрямую пользователям. Плюсы моего нового решения в сравнение с другими на рынке: оно бесплатно, легко внедряется, 20 метрик для аналитики, можно создавать свои метрики, данные хранятся только у вас, подходит для любого количества сообщений в месяц, хранит историю за всё время подключения, может хранить данные по любому количеству ботов в одном месте. Также это решение можно внедрить не только для чат-ботов Telegram, а и для любых других чат-ботов(Slack, Discord, Vk и так далее).

Библиотеку назвал LoraBot. Аналитика подключается в вашего бота как сторонняя библиотека, а все данные хранятся в PostgreSQL. Базу вы можете развернуть на своем сервере с помощью docker-compose файла, который лежит в репозитории. Если вы имеете свою базу данных или хотите развернуть её в облаке как SaaS, вам необходимо самому создать пользователя, запустить файл create_tables.sql и прописать доступы в .env файл. Также в репозитории вы можете найти Telegram, Slack, Discord, Vk чат-ботов с уже внедренной аналитикой и способом получать аналитику от LoraBot.

Как внедрить аналитику в своего чат-бота?

  1. Вам необходимо скачать LoraBot как zip или используя git:

    git clone https://github.com/aleksspevak/lorabot.git
  2. Запустите базу данных для LoraBot с помощью следующей команды:
    Если у вас не установлен docker-compose, вы можете прочитать как устанавливать тут: https://docs.docker.com/compose/install/

    docker-compose up -d
  3. Установите необходимые для LoraBot библиотеки:

    pip3 install -r requirements.txt
  4. Установите пароль для доступа к аналитике в файле .env:

    ANALYTICS_PASSWORD=lorabot
  5. Инициализируйте LoraBot в вашем боте:

    from lorabot import LoraBot
    lora_bot = LoraBot("your bot's name")
  6. Установите функции сбора данных LoraBot, чтобы начать получать информацию для аналитики:

    #для отслеживания новых пользователей
    lora_bot.user(USER_ID)
    #для отслеживания команд, сообщений из меню и обычных сообщений
    lora_bot.message(TEXT, TEXT_TYPE, USER_ID)
    #для отслеживания событий
    lora_bot.event(EVENT, EVENT_TYPE, USER_ID)
    #для отслеживания отзывов о боте
    lora_bot.review(REVIEW, USER_ID)
    #для отслеживания оценок бота
    lora_bot.assessment(RATING_IN_INT_FORMAT, USER_ID)
  7. Чтобы получить аналитику, сделайте какое-нибудь условное ветвление, например, в примере telegram_bot.py поставлено условие получения сообщения с ключевым словом, после этого проверяется пароль и после этого владелец бота получает доступ к аналитике:

Аналитические метрики

Пример визуализации данных, которые возвращает LoraBot
Пример визуализации данных, которые возвращает LoraBot

По ссылке вы можете найти все метрики, которые анализируются в LoraBot. Обратите внимание, что некоторые метрики имеют параметры для установки периода аналитики, объема возвращаемых данных или для установки типа сообщений/событий.Также некоторые функции возвращают только текстовую информацию, но есть функции, которые возвращают и визуализацию данных, и текстовую информацию. Вот несколько примеров того, как возвращать информацию из аналитики в Telegram-боте:

#Возвращает общую информацию о пользователях бота(только текст)
info = lora_bot.analyze_total(START_PERIOD, END_PERIOD)
bot.send_message(message.chat.id, info)
#Возвращает информацию о ежедневных активных пользователях(график + текст)
photo, info = lora_bot.analyze_dau(START_PERIOD, END_PERIOD)
bot.send_message(message.chat.id, info)
bot.send_photo(message.chat.id, photo)

Всего в LoraBot 20 метрик и их можно разделить на следующие группы:

  • Общие метрики

  • Пользовательские метрики

  • Метрики для анализа сообщений

  • Метрики для анализа событий

  • Метрики для анализа отзывов и оценок от пользователей бота

  • Остальные метрики

Также есть отдельная функция, в которую вы можете передать свой SQL-запрос прямо из бота. Она будет полезна для создания кастомных метрик.

Схема базы данных, где хранится информация по пользователям, сообщениям, событиям и отзывам:

Заключение

Думаю на данной статье я закрою для себя эту тему, на данный момент решение оттестировано у меня в течение месяца и результат меня удовлетворил. Надеюсь данное решение поможет и вам.

P.S. Аналитика это конечно хорошо, но если вам необходимо, чтобы ваш бот работал без ручного запуска, оберните его в Dockerfile, как советуется в этой статье Свой Telegram бот для отслеживания uptime своих серверов на python и docker, и запускайте его в том же docker-compose файле, где запускается и база данных. Хостить бота на сервер станет гораздо проще.

Источник: https://habr.com/ru/post/653535/


Интересные статьи

Интересные статьи

Сейчас нужно написать краткое введение о том, что важно проводить аналитику для задачи на разработку: оценить влияние изменений, проработать все возможные сценарии и т.д....
Python — это один из самых распространённых языков программирования. Хотя стандартные возможности Python достаточно скромны, существует огромное количество пакетов, которые позволяют реша...
Здравствуйте, сегодня хотел бы рассказать про мой опыт анализа акций сбербанка. Порой они показывают немного разную динамику — мне стало интересно проанализировать движение их котировок. В дан...
В обновлении «Сидней» Битрикс выпустил новый продукт в составе Битрикс24: магазины. Теперь в любом портале можно создать не только лендинг или многостраничный сайт, но даже интернет-магазин. С корзино...
Однажды, в понедельник, мне пришла в голову мысль — "а покопаюсь ка я в новом ядре" (новым относительно, но об этом позже). Мысль не появилась на ровном месте, а предпосылками для нее стали: ...