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
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
Общая концепция
|
||||
[Имя Бота] не виртуальный помощник, а 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
|
||||
Reference in New Issue
Block a user