Аналитика · Переписки

Переписки с ботом

Все диалоги с @nikita_krasnov_anbot — кто дошёл до заявки, кто отвалился, кто молчит.

Загружаю…
Выбери диалог слева
Архитектура чат-бота
Какие агенты работают на каждом этапе пути клиента
Развернуть

Внутри бота @nikita_krasnov_anbot работает несколько агентов — у каждого своя роль и триггер. Кликни на любой блок, чтобы посмотреть, что он делает.

Поддерживающий
Если клиент завис на вопросе квиза и не отвечает 5 минут — мягко напомнит про текущий вопрос. Зона: только внутри квиза до этапа «телефон».
📋
Квалификатор
6 вопросов о клиенте
📞
Сбор телефона
Просит номер
Дожимающий
Догоняет молчуна
45 сек / 3 мин
📅
Возвращающий
Через 24 ч / 48 ч
персонально
🙋‍♀️
Менеджер
Ксения звонит лиду
💬 Отвечающий
Работает параллельно на любом этапе — реагирует, если клиент написал текст не по сценарию. Понимает контекст, ведёт диалог, возвращает к цели этапа.
Работает в проде В разработке / тест В планах
🗄
База данных бота
Какие таблицы есть и что они хранят
Развернуть

Все данные бота лежат в одной MySQL-базе на сервере 45.84.227.34. Это справочник, чтобы было понятно «где что искать».

👤 Клиенты и сессии
ТаблицаЧто хранитГлавные поля
users Один пользователь = одна строка. Хранит профиль клиента. telegram_id — ID в Telegram
first_name, username — имя и @
phone — номер (когда оставил)
consent_at — когда дал согласие
blocked_at — когда заблокировал бот (если)
amocrm_contact_id, amocrm_lead_id — связка с amoCRM
sessions Каждый запуск /start = новая сессия. Один клиент может иметь много сессий. telegram_id — кто
started_at — когда нажал /start
current_step — где сейчас (consent / city / ... / phone / completed)
status — active / qualified / closed / abandoned
video_id — с какого видео пришёл
phone_given_at — когда оставил номер
qualifications Ответы клиента на 6 вопросов квиза. Одна запись = одна сессия. session_id
city — город
purpose — цель покупки
budget — бюджет
payment — форма оплаты
rooms — комнатность
bonus — какой подарок выбрал
💬 Переписка и события
ТаблицаЧто хранитГлавные поля
messages Каждое сообщение в чате — и от клиента, и от бота. session_id — к какой сессии
role — user или assistant
source — откуда пришло (quiz / answerer / returner / closer / freeform)
content — текст сообщения
llm_model, tokens_in/out, cost_usd — для аналитики стоимости LLM
notifications Лог отправок системных уведомлений (админу в Telegram, в amoCRM, дожимающего, возвращающего). session_id
channel — telegram / amocrm / closer_nudge_1/2 / returner_1/2
status — sent / failed
payload — текст уведомления
returner_jobs Очередь задач Возвращающего — кому, когда и какой по счёту nudge отправить. session_id, telegram_id
nudge_number — 1 или 2
scheduled_at — когда отправить
status — pending / sent / cancelled / failed
knowledge_level — cold / warm / hot (на момент отправки)
message_text — что отправили
📺 Каталоги
ТаблицаЧто хранитГлавные поля
videos Каталог YouTube-видео — для UTM-меток (короткий код в ссылке бота → конкретное видео). short_code — короткий код в ссылке /start?xxx
title — название видео
youtube_id — ID на YouTube
channel — какой канал
click_count — сколько раз заходили
lead_magnets Каталог лид-магнитов (пока не используется активно — задел на будущее).
📝
Промпты агентов
Где лежат и кто их использует
Развернуть

Все промпты лежат на сервере 45.84.227.34 в каталоге /opt/krasnov-bot/prompts/ — это обычные текстовые файлы, можно править как документы (рестарт бота не нужен — изменения подхватываются при следующем вызове).

ФайлКто используетЧто делает
extract_qualification.md Квалификатор
(LLM slow path)
Когда клиент пишет ответ свободным текстом вместо нажатия кнопки квиза — этот промпт говорит модели: «извлеки из текста ближайший вариант из списка кнопок, иначе скажи что не понял». Модель — claude-haiku-4-5 (дешёвая, JSON-режим).
returner.md Возвращающий Генерация сообщения для клиента, который не оставил телефон. Внутри блоки: базовый промпт, COLD/WARM/HOT (уровень знания о клиенте), Заход 1 / Заход 2 / STALE (для давних сессий). Модель — claude-sonnet-4-6.
answerer.md Отвечающий Когда клиент задаёт свой вопрос вне сценария. Внутри блоки: базовый промпт, правила безопасности (что нельзя говорить), STAGE_consent/quiz/phone/completed (где сейчас клиент). Модель — claude-sonnet-4-6.
system_main.md legacy (старый) Был для старого freeform-ответчика до того, как мы сделали Отвечающего. Сейчас не используется — оставлен как архив. Можно удалить когда убедимся, что нигде не зовётся.
(пока нет) Поддерживающий Появится когда сделаем Поддерживающего — будет supporter.md. Цель: мягко напомнить про текущий вопрос квиза если клиент завис на 5 минут без ответа.
Как править промпты
1. Подключаешься к серверу: ssh root@45.84.227.34
2. Открываешь нужный файл: nano /opt/krasnov-bot/prompts/returner.md
3. Меняешь текст, сохраняешь.
4. Кэш промптов очищается при рестарте бота: systemctl restart krasnov-bot. Без рестарта новый промпт подхватится при следующем срабатывании после ~1 минуты (если воркер крутится).

Для безопасных правок — сначала тестируй на test-боте (/opt/krasnov-bot-test/prompts/), потом копируй в прод.