Перейти к основному содержимому

🌐 Виджет

Встраиваемый чат для вашего сайта. В селекте «Платформа» канал так и называется — «Виджет».

Виджет — это чат в реальном времени. Посетитель пишет прямо со страницы, обращение попадает в «Поддержка» → «Чаты», оператор отвечает из Fixorix. Других способов связи (обратный звонок, email-форма) виджет не предлагает.

Создание​

Виджет создаётся в разделе «Каналы» (левое меню, группа «Проект») кнопкой «Создать» — она видна участникам с ролью Редактор и выше. В окне «Создание канала» в поле «Платформа» выберите «Виджет» — дальше мастер из трёх шагов.

Шаг 1 — «Создание канала». Заполните поля и нажмите «Далее».

ПолеОбязательноЧто вводить
НазваниедаИмя канала в списке. Подсказка: «Например: Чат поддержки».
ОписаниенетЗаметка для себя. Подсказка: «Например: виджет на лендинге».
Укажите домен сайтадаДомен, на котором будет работать чат. Подсказка: «Например: example.ru или localhost».

Шаг 2 — «Внешний вид виджета». Настройте цвета, позицию и поведение чата (те же параметры, что на вкладках «Вид» и «Чат» — см. таблицу ниже). На широком экране рядом показывается живое превью. Кнопка «Назад» возвращает к первому шагу, кнопка «Создать» создаёт канал.

Шаг 3 — «Виджет готов». Здесь выдаются код установки, HMAC-секрет и блок «Тех. информация» (Widget ID, Host). Кнопка «К списку каналов» закрывает мастер.

Подробное пошаговое руководство с примером кода — Установка виджета.

HMAC-секрет показывается один раз

HMAC-секрет (строка из 64 шестнадцатеричных символов) выдаётся на шаге «Виджет готов» и больше нигде не отображается. Сохраните его сразу — он нужен для опознания пользователей (см. ниже). Если секрет потерян, выпустите новый кнопкой «Сбросить секрет».

Домен виджета​

Домен нужен, чтобы виджет разрешили загружать на вашем сайте.

  • Список разрешённых доменов общий для проекта: домен, добавленный при создании или редактировании любого виджета, начинает работать для всех виджетов этого проекта.
  • Домен сравнивается точно: www.example.ru, example.ru и shop.example.ru — разные домены. Если сайт открывается по нескольким адресам, добавьте каждый: создайте для него виджет или укажите его в поле «Привязанный домен» любого виджета проекта — прежние записи из списка при этом не удаляются. Если нужного адреса в списке нет, кнопка чата на странице появится, но чат не откроется.
  • Схему https://, путь, порт и регистр убирать не обязательно: сохраняется только имя хоста (https://Shop.ru:8443/contacts → shop.ru). Кириллический домен сохраняется в punycode (магазин.рф → xn--80aairftm.xn--p1ai) — так адрес страницы присылает браузер. Если такой домен уже есть в списке проекта, используется существующая запись. Сайт на нестандартном порту всё равно не заработает — см. ограничение про HTTPS и порт 443 ниже.
  • Страница чата встраивается только по HTTPS и только на стандартном порту 443. По http://localhost или по https://localhost:3000 браузер заблокирует фрейм, даже если домен localhost разрешён.
  • Удалить домен из списка разрешённых нельзя. Однажды добавленный домен продолжает работать для всех виджетов проекта, даже если его сменили в настройках виджета или удалили сам виджет. Чтобы чат пропал со старого сайта, уберите сниппет с его страниц.

Карточка виджета​

Клик по строке канала открывает справа панель «Детали виджета»:

ПолеЧто показывает
ID виджетаИдентификатор виджета (он же Widget ID из сниппета).
НазваниеИмя канала (если не задано — «Без названия»).
ОписаниеЗаметка, если она была заполнена.
ДоменДомен, привязанный к виджету.
ПлатформаПилюля «Виджет».
СтатусПилюля «Работает» или «Остановлен».
Скрипт для вставки на сайтГотовый код установки с переключателем режимов и кнопкой «Скопировать».
HMAC-секретСекция с кнопкой «Сбросить секрет».

Код установки​

Сниппет лежит в карточке виджета (строка «Скрипт для вставки на сайт») и на вкладке «Детали» (строка «Код установки»). Над кодом — переключатель из двух режимов. Под кодом — подсказка, ссылка «Документация по подключению» (ведёт на эту страницу) и кнопка «Скопировать».

РежимЧто даётЧто нужно на вашей стороне
«Без авторизации»Обычный анонимный чат: посетитель пишет, не представляясьВставить одну строку кода на страницы сайта
«С авторизацией»Чат открывается от имени вошедшего на сайт пользователя: одна история переписки на всех его устройствах, у оператора — один постоянный клиент, подписанный переданным emailСчитать подпись посетителя на сервере (HMAC-секрет) и передать её виджету

Переключение режима меняет только текст сниппета: настройки виджета от этого не зависят.

  • В режиме «Без авторизации» код — это одна строка script с адресом загрузчика и идентификатором виджета.
  • В режиме «С авторизацией» код состоит из тега загрузчика без параметров и небольшого скрипта с настройками: widgetId, userId, userHash и необязательный email. Значения userId и userHash подставляет ваш сайт — в сниппете на их месте стоят заглушки, которые нужно заменить.

Кнопка «Скопировать» копирует код целиком в том режиме, который выбран сейчас.

Начните с простого

Если авторизации на сайте нет или она не важна для поддержки, берите режим «Без авторизации» — чат заработает сразу. Перейти на режим с авторизацией можно в любой момент, заново создавать виджет не нужно.

Пошаговое руководство с готовым примером — Установка виджета.

Настройки виджета​

Настройки правятся в панели «Редактирование виджета» — иконка карандаша в строке канала. Четыре вкладки: «Основные», «Вид», «Чат», «Детали». На вкладках «Вид» и «Чат» рядом показывается живое превью. Изменения сохраняются кнопкой «Сохранить», после чего появляется уведомление «Виджет обновлён».

Вкладка «Основные»​

НастройкаЧто делает
НазваниеИмя канала в списке. Обязательное поле.
ОписаниеСвободная заметка.
Привязанный доменДомен, на котором работает виджет. При некорректном вводе появляется «Введите корректный домен».
Смена домена

При смене домена показывается предупреждение: «Внимание: изменение домена приведет к тому, что виджет перестанет загружаться на вашем текущем сайте, убедитесь, что вы перенесли код на новый ресурс.»

На деле прежний домен остаётся в списке разрешённых доменов проекта, и удалить его оттуда нельзя, поэтому на старом сайте виджет продолжит открываться, пока там стоит сниппет. Чтобы чат там пропал, уберите сниппет со страниц старого сайта.

Вкладка «Вид»​

НастройкаЧто делает
Основной цветЦвет кнопки-лаунчера и шапки чата.
Оттенок текстаДополнительный цвет оформления чата: второй цвет градиента кнопки чата и основа для оттенков текста.
Позиция виджета«Слева» или «Справа» — угол экрана, в котором появляется кнопка чата.
Показывать аватар оператораПереключатель. Подсказка: «Лицо оператора в чате повышает доверие. Выключите для строгого корпоративного стиля.»

Вкладка «Чат»​

НастройкаЧто делает
Задержка автооткрытия, секЧерез сколько секунд чат откроется сам. Значение -1 (и любое значение меньше единицы) отключает автооткрытие; задержка больше 60 секунд обрезается до 60.
Приветственное сообщениеПервое сообщение, которое увидит посетитель. До 256 символов.
Пока не работает

Настройки «Показывать аватар оператора» и «Приветственное сообщение» сохраняются и видны в предпросмотре, но на сайт клиента не передаются — посетитель видит аватар и приветствие, заданные по умолчанию.

Настроек рабочего времени пока нет

На вкладке «Чат» указано: «Скоро здесь появятся настройки таймеров и графика работы». Настроек рабочего времени и текста вне рабочего времени в продукте сейчас нет.

Вкладка «Детали»​

ПолеЧто показывает
Widget IDИдентификатор виджета — он же подставляется в сниппет.
HostДомен, привязанный к виджету.
Код установкиСниппет с переключателем режимов «Без авторизации» / «С авторизацией» и кнопкой «Скопировать».
HMAC-секретСекция с кнопкой «Сбросить секрет».

Остановка виджета​

В строке канала есть кнопка «Выключить виджет» / «Включить виджет», а текущее состояние показывается пилюлей в колонке «Статус»: «Работает» или «Остановлен». После действия появляется уведомление «Виджет выключен» или «Виджет включён»; если переключить не удалось — «Не удалось изменить состояние виджета. Попробуйте ещё раз.».

Что происходит при выключении:

  • виджет перестаёт открываться на сайте: кнопка чата остаётся на странице в ваших цветах, но по нажатию панель не открывается, поэтому переписка недоступна и новые обращения не создаются; автооткрытие тоже не срабатывает;
  • снимать сниппет со страниц не нужно — код остаётся на месте и ничего не ломает;
  • обратное включение мгновенно, повторно вставлять код не требуется;
  • в разделе «Каналы» выключенный виджет остаётся в списке со статусом «Остановлен» и доступен для редактирования.

Остановка удобна, когда сайт на техобслуживании или отдел поддержки временно не работает.

Уже открытые диалоги не удаляются

Выключение виджета не трогает историю: обращения, созданные раньше, остаются в разделе «Чаты». После включения посетитель продолжит ту же переписку.

Что умеет чат в виджете​

Сообщения

  • Текст оформляется Markdown: жирный, курсив, зачёркивание, инлайн-код и блоки кода, маркированные и нумерованные списки, цитаты, горизонтальные линии, ссылки (открываются в новой вкладке). Заголовки, таблицы, картинки и сырой HTML не поддерживаются — разметка отбрасывается, текст остаётся. Одиночные переносы строк сохраняются.
  • Enter — отправить, Shift+Enter — перенос строки. В пустом поле виден плейсхолдер «Сообщение...».
  • Кнопка со смайликом открывает эмодзи-пикер с категориями: «Часто используемые», «Смайлики и люди», «Животные и природа», «Еда и напитки», «Путешествия и места», «Активности», «Объекты», «Символы», «Флаги».
  • Если связь пропала, сообщение всё равно появляется в ленте и уходит, когда соединение восстановится (переподключение идёт каждые 5 секунд). Очередь неотправленных сообщений хранится только на открытой странице: если связь не восстановилась в течение минуты или страницу перезагрузили, сообщение не отправится, хотя в ленте может остаться, — в таком случае напишите его ещё раз.

Вложения

  • Кнопка «Прикрепить файл» в поле ввода добавляет по одному файлу за раз, но к одному сообщению можно приложить несколько — каждый появится отдельным чипом с именем и крестиком «Убрать вложение». Сообщение можно отправить и без текста.
  • Тип файла не ограничен, размер — до 10 МБ. Пока файл загружается, в поле видно «Загрузка файла…», а отправка недоступна; при ошибке загрузки появляется «Не удалось загрузить файл».
  • В ленте картинки (png, jpg, gif, webp, bmp, avif) показываются превью; клик открывает полноэкранный просмотр с кнопкой «Закрыть» и закрытием по Esc. Остальные файлы, включая SVG, показываются чипом-ссылкой для скачивания.

Лента

  • Ответ-цитата: если оператор ответил на конкретное сообщение, над ответом видна плашка с автором и текстом оригинала; клик по ней прокручивает ленту к исходному сообщению и подсвечивает его. Сам посетитель ответить с цитатой не может.
  • Разделители дней: «Сегодня», «Вчера» или дата.
  • Умный автоскролл: лента сама уезжает вниз, если посетитель уже внизу или сам написал; если он читает выше и приходит ответ — появляется кнопка «Новые сообщения ↓».
  • История догружается порциями при прокрутке вверх — позиция чтения при этом не сбивается.
  • Пока устанавливается соединение, показывается «Подключение…», а если оно затянулось — «Не удаётся подключиться, пробуем ещё…».

Подписи в чате

  • Все входящие сообщения — ответы оператора, бота и сценария — посетитель видит с подписью «Агент поддержки» и стандартной иконкой; настоящее имя оператора не показывается.
  • Свои сообщения анонимный посетитель видит с подписью «Вы», опознанный — с именем из параметров firstName и lastName (если сайт их не передал — «Anonymous User»).
  • Под полем ввода всегда стоит надпись «Fixorix Team».

Параметры firstName и lastName необязательны: их можно передать в адресе сниппета (&firstName=…&lastName=…) или в window.fixorixWidget.init({ ... }). Подписью они не проверяются. Оператор видит анонимного посетителя под этим именем (по умолчанию «Anonymous User»), а опознанного — по переданному email.

Кнопки под сообщением

Сообщение от сценария может содержать ряды кнопок (инлайн-клавиатуры):

  • кнопка-ссылка и кнопка Web App помечены 🔗 и открывают адрес в новой вкладке;
  • кнопки запроса контакта (📞) и геолокации (📍) в виджете работают как обычные: номер телефона и координаты не запрашиваются и не передаются;
  • обычная кнопка отправляет свой текст ответом от лица посетителя. После нажатия такой кнопки все кнопки сообщения становятся неактивными, а переход по ссылке их не блокирует.

Опознанный пользователь​

Если посетитель уже авторизован на вашем сайте, его можно опознать — тогда история переписки будет одна и та же на всех его устройствах, а у оператора это будет один и тот же клиент, подписанный переданным email (без email — «Аноним»). Карточка контакта при этом автоматически не создаётся — привяжите клиента к контакту вручную или через OTP-код.

Как это устроено:

  1. При создании виджета выдаётся HMAC-секрет — строка из 64 шестнадцатеричных символов. Он хранится только на вашем сервере и в браузер не попадает.
  2. Ваш сервер считает подпись: userHash = HMAC-SHA256(ключ, userId). Ключ — строка HMAC-секрета как есть, в виде текста (UTF-8): ничего к ней не добавляйте и не декодируйте из hex. Подписывается ровно тот userId, который передаётся виджету. Результат — шестнадцатеричная строка в нижнем регистре.
  3. userId и userHash (и при желании email) передаются виджету — параметрами в адресе сниппета либо через window.fixorixWidget.init({ ... }).
  4. Fixorix сверяет подпись и открывает чат от имени этого пользователя.

Если подпись не сошлась или переданный email не является корректным адресом, чат всё равно откроется — но анонимно, как для обычного посетителя.

Примеры кода подписи — в руководстве Установка виджета.

Сброс секрета​

Кнопка «Сбросить секрет» есть в карточке виджета и на вкладке «Детали». Перед сбросом запрашивается подтверждение: «Текущий HMAC-секрет перестанет работать сразу после сброса. Продолжить?». Новый секрет показывается один раз — «Секрет сброшен. Сохраните новый — он показывается только один раз.».

Старый секрет отзывается не мгновенно

Новый секрет действует сразу, но и прежний какое-то время продолжает приниматься. Отзыв идёт автоматически раз в час и касается секретов, с выпуска которых прошло больше 7 суток: если прежнему секрету больше недели, он перестанет работать в течение часа после сброса, а если он выпущен недавно — будет действовать, пока с его выпуска не пройдут 7 суток. Не полагайтесь на сброс как на мгновенную блокировку: обновите секрет в интеграции сразу.

HMAC-секретами виджета можно управлять и через REST API — по API-ключу проекта:

МетодЧто делаетПраво ключа
GET /v1/widget/{widgetId}/hmac-secretsСписок секретов виджетаWIDGETS_READ
POST /v1/widget/{widgetId}/hmac-secrets/rotateВыпуск нового секретаWIDGETS_WRITE
DELETE /v1/widget/{widgetId}/hmac-secrets/{secretId}Отзыв секретаWIDGETS_DELETE

Продолжение диалога​

  • Анонимный посетитель. Идентификатор диалога сохраняется в браузере отдельно для каждого виджета, поэтому после перезагрузки страницы переписка продолжается. При очистке данных сайта или переходе в другой браузер начнётся новый диалог. Анонимный диалог привязан к адресу сайта: на shop.example.ru и example.ru это будут разные диалоги.
  • Опознанный пользователь. Диалог один и тот же на любом устройстве и в любом браузере, где посетитель авторизован.

Анонимный и опознанный диалоги — разные чаты. Когда посетитель входит на вашем сайте, открывается его личный диалог, а анонимная переписка в него не переносится: у оператора она остаётся отдельным обращением.

Кто может управлять виджетом​

ДействиеМинимальная роль
Создать виджетРедактор
Включать и выключать виджет, менять название, описание и оформление, указывать домен — новый или уже добавленный в проектРедактор — у остальных участников сохранение завершится ошибкой «Не удалось сохранить изменения. Попробуйте ещё раз.»
Сбрасывать HMAC-секрет, удалять виджетАдминистратор

Кнопки виджета в строке канала видны всем участникам, но без нужной роли действие завершится ошибкой. Подробнее о ролях — Каналы.

Ограничения​

  • Шапка чата зашита жёстко — «FXRX / Чат поддержки»; заменить её на свой логотип и название компании нельзя.
  • Интерфейс виджета только на русском языке: подписи, даты и время выводятся по-русски, выбрать другой язык нельзя.
  • Виджет предлагает только чат: обратного звонка, email-формы и формы «представьтесь перед чатом» в нём нет.
  • Настроек рабочего времени и текста вне рабочего времени нет.
  • Посетитель не может отредактировать или удалить своё сообщение.
  • «Печатает…», реакции и отметки «доставлено» и «прочитано» в виджете не поддерживаются — как и в остальных каналах.
  • Размеры и шрифты чата не настраиваются: панель имеет фиксированный размер и на узком экране раскрывается почти на всю ширину.
  • Стили виджета нельзя переопределить со стороны сайта — он изолирован от вашего CSS, чтобы оформление страницы его не ломало.

Удаление​

Иконка корзины в строке канала открывает подтверждение «Удалить виджет?» с предупреждением: «Это действие необратимо. Будут также удалены все HMAC-секреты виджета — интеграции, использующие их, перестанут идентифицировать пользователей.» После удаления канал исчезает из списка, а вставленный на сайт сниппет перестаёт открывать чат: кнопка может остаться на странице, но по нажатию ничего не произойдёт, поэтому уберите сниппет с сайта. Домен виджета остаётся в списке разрешённых доменов проекта.

→ Каналы · Установка виджета · Поддержка