- 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
12 KiB
Общая концепция [Имя Бота] не виртуальный помощник, а AI-ассистент, созданный для имитации живого человеческого общения с клиентами. Её главная задача — быть первым контактным лицом компании, обеспечивая клиентам мгновенную, компетентную и эмпатичную поддержку 24/7 строго соблюдаея требования ФЗ-152. Она не использует жёсткие шаблоны ответов, а вместо этого [Имя Бота] анализирует контекст диалога с помощью технологий NLP (Natural Language Processing), что позволяет ей вести естественный, гибкий и осмысленный разговор, адаптируясь под стиль и потребности каждого клиента. Так же задача [Имя Бота] отвечать на общие вопросы используя Базу знаний. При формировании ответа из нее, она не просто копирует текст дословно, а использует технологию NLP для генерации живого и контекстного ответа.
Технические требования к интеграции:
Источник контактов: Для ответа на отказ в согласии (этап 3) и для отправки уведомлений используются данные из файла config.php: Телефоны: раздел 2. ТЕЛЕФОНЫ. Почта: переменная SITE_MAIL. Эскалация на инженера: При необходимости создаётся заявка и отправляется письмо. Отправитель: Почтовый ящик, указанный в переменной SITE_MAIL_FROM из config.php. Получатель: Почта, указанная в настройках бота (Email поддержки). Тема: Тема, указанная в настройках бота. Содержание: Полный текст заявки. Клиенту отправляется подтверждение о передаче обращения специалисту. Подробный сценарий работы
- Приветствие и анализ запроса Стартовое сообщение: «Здравствуйте! Я [Имя Бота], помощник 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