Архитектура и порядок работы
Как взаимодействуют части reactive.chat: загрузчик, ядро и модули в браузере, сервер чата, аккаунт, серверный API, вебхуки и данные клиентов — и в каком порядке всё происходит от просмотра страницы до ответа.
Составные части
В браузере посетителей:
- loader.js — небольшая загрузочная часть размером в несколько килобайт. Она читает конфигурацию, проверяет согласие, рисует заглушку кнопки чата в её окончательном положении (без сдвига макета) и создаёт
window.ReactiveChatс очередью команд. Больше ничего не делает. - Ядро (
core.<hash>.js) — окно чата, подключение, скрытие персональных данных, правила. Загружается только при срабатывании триггера: браузер простаивает, мышь или палец над кнопкой чата, команда API, сигнал затруднений от MousePlayer. Большинство посетителей никогда не открывает чат, поэтому и ядро не загружает сразу. - Модули по запросу — туры по продукту, текст о конфиденциальности, функции магазина; каждый загружается только при необходимости.
- Изоляция — всё находится в закрытом shadow DOM; стили задаются через создаваемые таблицы стилей, без встроенных скриптов, без
eval, без cookie.
На стороне reactive.chat:
- Доставка файлов по адресу
https://cdn.reactive.chat/— загрузчик, ядро, модули. - Сервер чата по адресу
wss://ws.reactive.chat/rc_wss/— WebSocket с протоколомrc.v1; тот же адрес сhttps://используется для резервного канала HTTP, офлайн-формы, загрузок, текста о конфиденциальности и Smart Answer. - Аккаунт по адресу
https://reactive.chat/app— настройки проекта, дизайн, база знаний, панель операторов команды. - Серверный API по адресу
https://reactive.chat/v1/— REST и MCP для вашего бэкенда.
На вашей стороне (необязательно):
- Ваш бэкенд подписывает данные для идентификации вошедших пользователей, отвечает на запрос данных клиентов, получает вебхуки и вызывает серверный API.
- Ваш прокси предоставляет всё через собственный поддомен (Собственный домен).
Порядок работы при просмотре страницы
- Браузер загружает
loader.js(асинхронно, ничего не блокируя). - Загрузчик читает
data-rc-*,ReactiveChatSettingsи вызовыbootиз очереди, проверяет ключ сайта и согласие и рисует заглушку. - Срабатывает триггер; загрузчик загружает ядро из того же каталога.
- Ядро подхватывает заглушку и очередь и последовательно выполняет команды из очереди.
- Оно открывает подключение и отправляет
initс ключом сайта, идентификаторами, языком, согласием, подписанными данными идентификации при наличии и контекстом страницы. - Сервер проверяет источник, проект и идентификационные данные и отвечает
init_ok: дизайн и тексты из аккаунта, правила, функции, ограничения, имеющаяся история разговора. - Виджет готов (событие
ready). О переходах между страницами в одностраничных приложениях он сообщает сам.
Порядок обработки вопроса
- Посетитель пишет; персональные данные скрываются в браузере, а сообщению присваивается уникальный ID.
- Сервер сохраняет его (распознаёт повторы по ID), повторно скрывает данные и подтверждает получение, возвращая сообщение.
- ИИ-ассистент ищет в вашей базе знаний, а при вопросах о заказах от подтверждённого пользователя — дополнительно через конечную точку данных клиентов, затем передаёт ответ потоком. Когда он передаёт разговор команде, задаётся в аккаунте (Руководство).
- Параллельно события через очередь поступают в вебхуки и интеграции. Чат никогда их не ждёт.
Версии и доставка
- loader.js не содержит номера версии в имени и заменяется при обновлениях. Поэтому подключайте его с
cdn.reactive.chat(или через свой прокси), а не как копию. - Ядро называется
core.<hash>.js; хеш вычисляется из содержимого, и каждый загрузчик точно знает своё ядро. Поэтому загрузчик и ядро всегда совместимы, а ядро можно долго кешировать. - Конфигурация (дизайн, тексты, правила, туры) приходит с сервера при каждом подключении. После изменений в аккаунте новый код встраивания не нужен; они вступают в силу через короткое время (до одной минуты в зависимости от настройки).
- Версия протокола —
1. Добавляются новые поля; неизвестные игнорируются. ReactiveChat.versionвозвращает версию ядра после его загрузки.
Что и где настраивать
- В аккаунте: внешний вид, тексты, главный экран, правила, туры, A/B-тесты, образ ИИ (Настройка), команда, база знаний, каналы (Руководство).
- В теге скрипта: настройки для отдельной страницы (Справочник по тегу скрипта).
- В скрипте страницы: идентификация, контекст, открытие через собственные элементы (JavaScript API).
- На сервере: подписи, данные клиентов, вебхуки, API (Идентификация, Данные клиентов, Вебхуки, Серверный API).
Далее: Быстрый старт
Обновлено: