Введение в виджет
Виджет на сайт

Что такое виджет SupportHub

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

Виджет — это один внешний JavaScript-файл, который вы вставляете на свой сайт. После загрузки он сам добавляет на страницу кнопку и панель с вкладками и подключается к нашему API. Никаких iframe и никакого бэкенда с вашей стороны не нужно.

Из чего состоит виджет

Кнопка и панель

Кнопка в правом нижнем углу — по умолчанию с иконкой чата и надписью. Панель 400×640 на компьютере и на весь экран на телефоне (до 640 px); там, пока панель открыта, плавающей кнопки нет, а закрывают панель крестиком в шапке. Настраиваются цвет, текст и иконка кнопки, логотип и его форма.

Вкладки

Главная · Чат · Помощь · Новости · Сервис. «Помощь» и «Новости» видны, только если включены в конструкторе и для них есть контент — опубликованные публичные статьи и оглашения для клиентов. «Сервис» — ваша страница из раздела «Мини-приложение»: видна, когда вкладка включена и задан её адрес.

WebSocket

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

ID посетителя

ID посетителя (vs_*) хранится в пяти местах: cookie, localStorage, sessionStorage, IndexedDB и старый общий ключ localStorage. Если браузер очистил часть из них, посетитель всё равно вернётся в свою переписку.

Как настраивается

Все параметры живут в одном конфиге cfg, который редактируется в НастройкиКонструктор виджета (/settings/widget-builder). На широком экране слева — список разделов, в центре — настройки, справа — живое превью; на узком превью открывается кнопкой «Превью».

Разделы: «Брендинг», «Приветствие», «Вкладки», «Формы и темы», «Чат», «Часы работы», «Системные сообщения», «Email-мост», «Расширенные» (свой CSS, звук уведомления, cookie-домен), «Закреплённый баннер», «Кнопки ответа», «Мини-приложение», «Приветствия / отсутствие», «Набор иконок», «Набор эмодзи», «Приватность».

Разделы со значком молотка помечены как «в разработке»: настроек в них пока нет. Некоторые поля в рабочих разделах тоже пока ни на что не влияют; это отмечено на страницах этих разделов.

Изменения сами сохраняются в черновик. Чтобы их увидели посетители, нажмите «Опубликовать» в верхней панели; «Отменить» возвращает черновик к опубликованной версии.

Где и как доступен

Поддерживаемые браузеры

Бандл собран esbuild под target: es2018, так что нужен современный браузер; IE11 не поддерживается.

Загрузка и кеш

Бандл (/widget-bundle) грузится асинхронно и не блокирует отрисовку страницы; ответ сжимается gzip. Опубликованный конфиг сервер обычно вставляет прямо в начало бандла, так что отдельного запроса за /config нет; если это не удалось, виджет запросит конфиг сам.

Бандл вместе с конфигом браузер кеширует на 5 минут (Cache-Control: public, max-age=300, stale-while-revalidate=86400). Поэтому опубликованные изменения и обновления виджета доходят до посетителя не сразу: обычно в течение нескольких минут, иногда — со следующей загрузки страницы после этого.

Cross-domain

Виджет работает на любом домене: ID проекта передаётся в параметре ?ws= адреса скрипта, а CORS на бэкенде разрешает любой источник (*). Чтобы принимать сообщения только со своих сайтов, перечислите домены в Конструктор виджетаПриватностьРазрешённые домены и опубликуйте. После этого отправка сообщений, ответов, файлов и данных посетителя с других доменов получает отказ 403. Пустой список — разрешены любые домены.

Cross-subdomain

Если сайт живёт на нескольких поддоменах (example.com + app.example.com) и вы хотите, чтобы посетитель сохранял одну переписку, задайте домен cookie с точкой в начале (.example.com) в Конструктор виджетаРасширенныеCookie-домен (опционально) или атрибутом data-cookie-domain=".example.com" прямо в теге — атрибут важнее конфига. Без этого cookie привязан к одному хосту, и на разных поддоменах посетитель получает разные ID. Слишком широкий домен (.com, .co.uk) браузер не примет. Подробнее — в справочнике для разработчиков.

Была ли страница полезной?