Канал поддержки в MAX: AI-первая линия и бесшовная передача оператору
- MAX
- поддержка
- AI
- RAG
- Chatwoot
- LightRAG
- 152fz
- чат-бот
Мы построили клиентскую поддержку в мессенджере MAX по принципу «открытых линий»: AI-ассистент на RAG отвечает первым из выделенной базы знаний (с ссылками «Подробнее» на источники и жёстким запретом обещать цены и сроки), а при неуверенности, просьбе клиента или нажатии кнопки «Соединить с оператором» диалог бесшовно уходит живому оператору в операторский инбокс Chatwoot. Получается замкнутая петля клиент ↔ AI ↔ оператор: ответ оператора возвращается клиенту прямо в MAX, и переписка продолжается в обе стороны с сохранением контекста и истории. Канал работает в двух режимах — изолированный 1
с сохранением контекста входа и рассылки (публичный канал + адресный bot-broadcast по opt-in), а на случай недоступности основного канала есть резервный мост через Telegram. 152-ФЗ соблюдён за счёт self-host в РФ-периметре и изоляции клиентской базы знаний. Ниже — инженерные решения и компромиссы.Проблема: типовые вопросы съедают время, а контекст теряется
Клиентская поддержка через мессенджер обычно упирается в две крайности. Либо это живой оператор на каждый вопрос — дорого, и большинство обращений типовые («как получить документ», «какие форматы поддерживаются»). Либо это примитивный бот по кнопкам, который бесит клиента и не отвечает на свободный вопрос.
Плюс отдельная боль: клиент приходит из конкретной точки — со страницы услуги, из кейса, из статьи. Обычный бот этот контекст теряет, и клиент вынужден заново объяснять, о чём речь.
Нам была нужна схема, где AI снимает типовые вопросы, контекст входа не теряется, а сложные случаи попадают живому человеку без разрыва диалога — то есть аналог «открытых линий», но на отечественном мессенджере и со своей AI-первой линией.
Режим 1: изолированный диалог с AI-первой линией и эскалацией
Сквозной путь — от клика на сайте до ответа оператора, и для клиента это один непрерывный диалог, без видимых «переключений систем».
Точка входа с сохранением контекста
Кнопка «в MAX» на сайте ведёт не напрямую в мессенджер, а через серверный редирект, который сохраняет контекст страницы (что читал посетитель, какая аудитория, какой тип призыва) и фиксирует сам факт перехода как событие конверсии. Дальше открывается deep-link бота с привязкой к этому переходу — так бот с первого сообщения «знает», откуда пришёл клиент.
Это тот же подход, что мы используем для кнопки «Обсудить»: подписанный серверным ключом контекст-токен страницы плюс идентификатор перехода. Контекст сайта и контекст диалога в MAX сшиваются в одну воронку.
AI-первая линия на RAG с guardrails
На входящее сообщение клиента бот делает RAG-запрос к выделенной базе знаний поддержки (отдельный, изолированный инстанс LightRAG). Принципиально важны два ограничения:
- Ответ — только из контекста базы знаний, а не из общих знаний языковой модели. Если в базе нет ответа — модель не импровизирует.
- Не обещать цены и сроки. Это жёсткое правило в промпте: коммерческие обязательства даёт только человек.
К ответу AI прикладывает ссылки «Подробнее» на страницы сайта, из которых он этот ответ собрал, — клиент видит источники и может прочитать первоисточник целиком. Это и проверяемость ответа, и мягкий возврат на сайт.
База знаний поддержки изолирована от внутренних данных компании — клиентский ассистент физически не может процитировать то, что не предназначено для клиентов. Это не настройка фильтра, а архитектурная граница: отдельный инстанс с отдельным набором документов.
Бесшовная эскалация и замкнутая петля «клиент ↔ AI ↔ оператор»
Эскалация срабатывает в трёх случаях: AI не нашёл ответ в базе, клиент явно просит человека или нажимает кнопку «Соединить с оператором». Диалог уходит в Chatwoot CE (self-host) — полноценный операторский инбокс — через API-канал. Оператор видит всю историю и контекст входа, отвечает из единого интерфейса, и его ответ автоматически возвращается клиенту в MAX.
Ключевое здесь — петля замыкается: клиент пишет следующий вопрос в том же чате MAX, сообщение снова доходит до оператора, оператор отвечает — и так сколько угодно итераций. Это не «передал и забыл», а полноценный двусторонний диалог с сохранением контекста и истории. Для клиента всё происходит в одном окне MAX: сначала отвечает AI, потом подключается человек, и переключения он не замечает.
Здесь мы приняли важное решение: не строить свою админку операторов. Chatwoot из коробки даёт назначения, шаблоны ответов, часы работы, оценку удовлетворённости (CSAT). Писать это самим — недели работы и постоянная поддержка. Готовый инструмент закрывает задачу лучше, а интеграция сводится к одному адаптеру «MAX ↔ Chatwoot».
Дополнительно есть резервный канал через Telegram: оператор может вести те же клиентские диалоги MAX прямо из Telegram, а клиенту по-прежнему отвечает MAX. Это альтернативный операторский фронт для того же диалога — подробнее в статье «Telegram-мост для оператора».
Режим 2: рассылки с opt-in
Второй режим — про сообщения «многим сразу»: анонсы, новости, акции. Здесь два формата, и оба построены вокруг согласия.
- Публичный канал MAX — один-ко-многим, для открытых анонсов.
- Адресная рассылка через бота — только подписчикам, давшим согласие (opt-in). Команда
/stopмгновенно отписывает, согласие учитывается в базе.
Этот контур мы строили под принцип минимизации данных 152-ФЗ: адресное сообщение уходит, только если есть явное согласие, и отписка работает в один шаг.
Единая воронка: сравнение каналов
Поскольку точка входа в MAX и веб-форма используют один и тот же механизм фиксации перехода, мы можем сравнивать каналы между собой: какой контент чаще приводит обращение через форму, а какой — через мессенджер; где конверсия в реальный лид выше. Лид-кэп в боте (запрос телефона) превращает диалог в измеримое обращение, привязанное к исходной странице.
Это даёт ответ на вопрос «что вообще работает» не на уровне ощущений, а по данным — и без зарубежных трекеров.
152-ФЗ и приватность
Контур приватности заложен в саму архитектуру, а не прикручен сверху:
- MAX — серверы в РФ. Клиентский диалог не уходит за рубеж.
- Self-host в нашем периметре. Операторский инбокс и база знаний развёрнуты на своей инфраструктуре, а не в зарубежном облаке.
- Изоляция клиентской базы знаний. Ассистент поддержки отвечает только из предназначенных клиентам материалов.
- Рассылки только по opt-in, отписка по
/stop, учёт согласия — принцип минимизации данных.
Что мы из этого вынесли
- AI-первая линия имеет ценность только с guardrails. Без правила «отвечай лишь из базы и не обещай цен/сроков» бот быстро начнёт фантазировать — и подорвёт доверие сильнее, чем его отсутствие. Эскалация при незнании — фича, а не слабость.
- Замкнутая петля важнее одноразовой эскалации. «Передал оператору и забыл» — это не диалог. Ценность даёт именно двусторонняя петля: ответ оператора возвращается в MAX, клиент пишет дальше, оператор отвечает снова — с полной историей и контекстом, в одном окне для клиента.
- Источники в ответе AI повышают доверие. Ссылки «Подробнее» делают ответ проверяемым и мягко возвращают клиента на сайт — это лучше «голого» ответа без ссылок.
- Готовый операторский инбокс лучше своей админки. Chatwoot закрыл CSAT, шаблоны и часы работы из коробки. Мы потратили силы на адаптер «MAX ↔ инбокс», а не на велосипед.
- Изоляция базы знаний — архитектурное, а не настроечное решение. Отдельный инстанс надёжнее любого фильтра: клиентский ассистент не имеет доступа к внутренним данным в принципе.
- Один контекст-токен на все каналы. Сшивка сайта и мессенджера в одну воронку дала сравнение каналов почти бесплатно — потому что точка входа единая.
Ссылки
- MAX — отечественный мессенджер — серверы в РФ, bot API
- Chatwoot — open-source операторский инбокс — CSAT, шаблоны, часы работы
- LightRAG — лёгкий RAG-движок — основа изолированной базы знаний
Если вам нужен клиентский канал поддержки с AI-первой линией и живым оператором — напишите нам, обсудим, как это устроить под ваш стек и требования 152-ФЗ.