Files
site_aegisone/max_bot/ТЗ.md
T
angel 72b6879f4b v1.7.0: refactor max_bot to flat structure, add VCF+UserModel+NLP history context, portal pages and proxy fixes
- Refactored max_bot from nested packages to flat module structure
- Q2: Extended BotUser model (patronymic, email, org, address, vcf_raw, contact_hash, phone_verified, email_verified, last_interaction, total_conversations, total_tickets)
- Q2: VCF parser (FN, N, TEL, EMAIL, ORG, ADR), upsert on re-contact, NLP history context (_get_user_history_context -> YandexGPT)
- Q1: Broadcast preview modal with 10s confirmation timer
- Q3: CSS var(--white)->var(--bg-card), var(--text)->var(--text-primary)
- Q4: bot_settings showNotification(), editable max_bot_id
- Q5: Webhook secret passthrough via X-Max-Bot-Api-Secret
- Masking sensitive keys, dialog_cleared handler, migrate via _add_column_if_not_exists()
- Rate limit (asyncio.sleep 0.5 per 10), dead code removed, conv.intent context in contact.py
- Portal pages: bot_consent, bot_kb (edit), bot_settings, bot_test, bot_tickets, portal_settings
- Tests: 21/21 passing, added test_yandex_gpt.py, test_email_sender.py
- Deploy: deploy_full.sh, schema.sql, seed_knowledge_base.sql
2026-05-29 02:30:30 +03:00

112 lines
12 KiB
Markdown

Общая концепция
[Имя Бота] не виртуальный помощник, а AI-ассистент, созданный для имитации живого человеческого общения с клиентами. Её главная задача — быть первым контактным лицом компании, обеспечивая клиентам мгновенную, компетентную и эмпатичную поддержку 24/7 строго соблюдаея требования ФЗ-152. Она не использует жёсткие шаблоны ответов, а вместо этого [Имя Бота] анализирует контекст диалога с помощью технологий NLP (Natural Language Processing), что позволяет ей вести естественный, гибкий и осмысленный разговор, адаптируясь под стиль и потребности каждого клиента. Так же задача [Имя Бота] отвечать на общие вопросы используя Базу знаний. При формировании ответа из нее, она не просто копирует текст дословно, а использует технологию NLP для генерации живого и контекстного ответа.
Технические требования к интеграции:
Источник контактов: Для ответа на отказ в согласии (этап 3) и для отправки уведомлений используются данные из файла config.php:
Телефоны: раздел 2. ТЕЛЕФОНЫ.
Почта: переменная SITE_MAIL.
Эскалация на инженера: При необходимости создаётся заявка и отправляется письмо.
Отправитель: Почтовый ящик, указанный в переменной SITE_MAIL_FROM из config.php.
Получатель: Почта, указанная в настройках бота (Email поддержки).
Тема: Тема, указанная в настройках бота.
Содержание: Полный текст заявки. Клиенту отправляется подтверждение о передаче обращения специалисту.
Подробный сценарий работы
1. Приветствие и анализ запроса
Стартовое сообщение:
«Здравствуйте! Я [Имя Бота], помощник AegisOne Engineering. Чем я могу быть вам полезна?»
Анализ ввода пользователя (NLP):
Бот распознаёт намерение: общий вопрос, желание оставить заявку, нестандартный запрос.
Если вопрос общий (о компании, услугах, контактах) — ответ формируется на основе базы знаний и анализа сайта aegisone.ru.
Если пользователь хочет оставить заявку — переход к этапу получения согласия.
Если запрос неформатный или неочевидный — бот уточняет суть обращения, фиксирует его и предлагает вернуться к обсуждению после получения согласия.
2. Согласие на обработку персональных данных (ФЗ-152)
Запрос согласия:
«Для обработки Вашего запроса нам нужны ваши контактные данные для обратной связи. Даёте согласие на обработку персональных данных?[✅ Даю согласие] [📄 Подробнее] [❌ Не даю согласие]»
Кнопка «Подробнее» ведёт на страницу политики обработки данных.
Реакция на действия пользователя:
Согласие: переход к сбору контактов.
Отказ: Бот сообщает, что без согласия обработка невозможна, и предлагает альтернативные способы связи (телефон, почта).
Иной ввод: Бот объясняет важность согласия и возвращает к этапу запроса согласия.
3. При отказе в согласии
Сообщение:
«Без вашего согласия мы не можем обработать обращение. Вы можете позвонить нам: [Телефоны из config.php, раздел "2. ТЕЛЕФОНЫ"] или написать на почту [Переменная SITE_MAIL из config.php].»
Дальнейшие действия:
Если пользователь пишет любой текст — бот объясняет, что связаться можно только по телефону или почте, и снова предлагает дать согласие.
Если пользователь выражает готовность дать согласие — возврат к этапу 2.
4. Сбор контактных данных
Варианты:
Кнопка [📱 Поделиться контактом] (автоматически передаёт номер телефона).
Ручной ввод телефона или e-mail.
Обработка данных:
Полученные контакты отправляются в статистику.
Вся переписка фиксируется для анализа и пополнения базы знаний.
5. Сбор сути обращения
Бот напоминает, что было зафиксировано на этапе анализа запроса (если был нестандартный вопрос), и просит уточнить детали или призвать к действию для понимания сути запроса.
6. Финальная обработка заявки
После сбора всех данных Бот подтверждает информацию:
«Зафиксировала: [суть обращения]. Ваша заявка отправлена инженеру. В ближайшее время он обязательно свяжется с вами».
Роль бота с учётом NLP и интеграции с CRM
Распознавание намерений (NLP)
Бот анализирует текст пользователя, определяя:
Информационный запрос (о компании, услугах).
Намерение оставить заявку (заказ, обратный звонок).
Нестандартный или сложный запрос (требует уточнения).
Интеграция с CRM (Сервисная часть портала)
Все заявки и контакты автоматически передаются в сервисную часть портала (страница заявок). В заявке фиксируется:
Дата и время обращения.
Контактные данные клиента.
Текст обращения и история переписки.
Статус заявки (новая).
Ответственный: инженер.
Эскалация на инженера
Если NLP не может однозначно определить намерение или запрос требует участия специалиста:
Бот создаёт заявку в системе со статусом «новая».
Система автоматически отправляет письмо с почтового ящика SITE_MAIL_FROM (из config.php) на Email поддержки с темой из настроек бота. В письме дублируется полный текст заявки.
Бот сообщает пользователю:
«Я передала ваш запрос специалисту. Он уже получил уведомление и обязательно свяжется с вами в ближайшее время».
Диалог завершается.
---
Настройка сервисной части (Настройки — Чат-бот Max)
Для корректной работы бота необходимо выполнить следующие настройки:
Настройки — Чат-бот Max — Общие
Имя ассистента: [указать Имя Бота].
Роль ассистента: [указать роль Бота].
MAX-бот ID: [указать ID Бота].
Email поддержки: [указать почту для получения заявок].
Тема письма: [указать тему для уведомлений об эскалации].
Настройки — Чат-бот Max — База знаний
Заполнить максимально возможными вопросами (придумать 40шт) ориентируясь на публичную часть сайта (aegisone.ru).
Если есть вопрос, но нет ответа на публичной части сайта — создать карточку вопроса с ключевыми словами, категорией, но не активной карточкой. Сам ответ будет добавлен позже.
При формировании ответа бот не копирует текст из базы знаний дословно, а использует технологию NLP для генерации живого и контекстного ответа.
Настройки — Чат-бот Max — Тестовый прогон
Настроить функционал для полного тестирования всех веток сценария перед открытием доступа клиентам.
Настройки — Общие
Ключ YandexGPT: [указать ключ API]. Так же будет использоваться в другом функционале сервисной части.
Ключ Yandex Folder ID: [указать ключ ID]. Так же будет использоваться в другом функционале сервисной части.
Если поле «Ключ YandexGPT» пусто, то бот работает в ограниченном режиме: он не отвечает на вопросы из базы знаний через NLP, а только предоставляет контактные данные для связи:
«Вы можете позвонить нам: [Телефоны из config.php] или написать на почту [Переменная SITE_MAIL из config.php].» Контактные данные с активными ссылками.
Статусы заявок
В системе заявок предусмотреть статусы:
Новая (создаётся ботом).
В работе (меняет инженер).
Закрыта (меняет инженер после решения вопроса).
API YandexGPT: AQVN32jyeHHEZcikwLbdedZkp9XmRwTE_gJEX8RU
Yandex Folder ID: b1gl51d91s6tchaghp0v
MAX-бот ID: f9LHodD0cOKkk03DYXj906MdIeRs3HdDo0BC5H2fLMVCMz3PA_Vx4aJqt2l2qPLM5zd5EQ1Zh6APxzpw2UYE