Аналитика · Переписки
Переписки с ботом
Все диалоги с @nikita_krasnov_anbot — кто дошёл до заявки, кто отвалился, кто молчит.
Загружаю…
Выбери диалог слева
Архитектура чат-бота
Какие агенты работают на каждом этапе пути клиента
Развернуть
Внутри бота @nikita_krasnov_anbot работает несколько агентов — у каждого своя роль и триггер. Кликни на любой блок, чтобы посмотреть, что он делает.
⏱
Поддерживающий
Если клиент завис на вопросе квиза и не отвечает 5 минут — мягко напомнит про текущий вопрос. Зона: только внутри квиза до этапа «телефон».
📋
Квалификатор
6 вопросов о клиенте
📞
Сбор телефона
Просит номер
⚡
Дожимающий
Догоняет молчуна
45 сек / 3 мин
45 сек / 3 мин
📅
Возвращающий
Через 24 ч / 48 ч
персонально
персонально
🙋♀️
Менеджер
Ксения звонит лиду
💬
Отвечающий
Работает параллельно на любом этапе — реагирует, если клиент написал текст не по сценарию. Понимает контекст, ведёт диалог, возвращает к цели этапа.
Работает в проде
В разработке / тест
В планах
База данных бота
Какие таблицы есть и что они хранят
Развернуть
Все данные бота лежат в одной MySQL-базе на сервере 45.84.227.34. Это справочник, чтобы было понятно «где что искать».
👤 Клиенты и сессии
| Таблица | Что хранит | Главные поля |
|---|---|---|
| users | Один пользователь = одна строка. Хранит профиль клиента. |
telegram_id — ID в Telegramfirst_name, username — имя и @phone — номер (когда оставил)consent_at — когда дал согласиеblocked_at — когда заблокировал бот (если)amocrm_contact_id, amocrm_lead_id — связка с amoCRM
|
| sessions | Каждый запуск /start = новая сессия. Один клиент может иметь много сессий. |
telegram_id — ктоstarted_at — когда нажал /startcurrent_step — где сейчас (consent / city / ... / phone / completed)status — active / qualified / closed / abandonedvideo_id — с какого видео пришёлphone_given_at — когда оставил номер
|
| qualifications | Ответы клиента на 6 вопросов квиза. Одна запись = одна сессия. |
session_idcity — городpurpose — цель покупкиbudget — бюджетpayment — форма оплатыrooms — комнатностьbonus — какой подарок выбрал
|
💬 Переписка и события
| Таблица | Что хранит | Главные поля |
|---|---|---|
| messages | Каждое сообщение в чате — и от клиента, и от бота. |
session_id — к какой сессииrole — user или assistantsource — откуда пришло (quiz / answerer / returner / closer / freeform)content — текст сообщенияllm_model, tokens_in/out, cost_usd — для аналитики стоимости LLM
|
| notifications | Лог отправок системных уведомлений (админу в Telegram, в amoCRM, дожимающего, возвращающего). |
session_idchannel — telegram / amocrm / closer_nudge_1/2 / returner_1/2status — sent / failedpayload — текст уведомления
|
| returner_jobs | Очередь задач Возвращающего — кому, когда и какой по счёту nudge отправить. |
session_id, telegram_idnudge_number — 1 или 2scheduled_at — когда отправитьstatus — pending / sent / cancelled / failedknowledge_level — cold / warm / hot (на момент отправки)message_text — что отправили
|
📺 Каталоги
| Таблица | Что хранит | Главные поля |
|---|---|---|
| videos | Каталог YouTube-видео — для UTM-меток (короткий код в ссылке бота → конкретное видео). |
short_code — короткий код в ссылке /start?xxxtitle — название видеоyoutube_id — ID на YouTubechannel — какой канал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. Подключаешься к серверу:
2. Открываешь нужный файл:
3. Меняешь текст, сохраняешь.
4. Кэш промптов очищается при рестарте бота:
Для безопасных правок — сначала тестируй на test-боте (
ssh root@45.84.227.342. Открываешь нужный файл:
nano /opt/krasnov-bot/prompts/returner.md3. Меняешь текст, сохраняешь.
4. Кэш промптов очищается при рестарте бота:
systemctl restart krasnov-bot. Без рестарта новый промпт подхватится при следующем срабатывании после ~1 минуты (если воркер крутится).Для безопасных правок — сначала тестируй на test-боте (
/opt/krasnov-bot-test/prompts/), потом копируй в прод.