enВойти в Senler

Параметры инициализации виджета

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

С чего начать

Выберите размещение: поверх страницы (popup) или внутри вашего блока (embedded). Оформление и функции берутся из сохранённых настроек канала. Если для конкретного сайта нужны отличия, передайте только их в theme и features при вызове init.

Режим размещения

  • popup открывается поверх страницы по плавающей кнопке;
  • embedded занимает переданный container и не показывает плавающую кнопку.

Для embedded передайте существующий CSS-селектор или DOM Element. Если контейнер не найден, инициализация завершится ошибкой. Методы open(), close() и toggle() работают в обоих режимах.

button_only: true создаёт только внешний вид плавающей кнопки без iframe чата. Кнопка не реагирует на нажатие, open(), close() и toggle() ничего не открывают, а isOpen() возвращает false. Этот режим подходит для отдельного предпросмотра кнопки и несовместим с embedded. Поскольку iframe не создаётся и удалённые настройки канала не загружаются, вид кнопки задавайте через theme.button в коде.

Для полностью собственного интерфейса чата задайте headless: true при инициализации. SDK остаётся доступен, готовый чат и плавающая кнопка не показываются; невидимый iframe обслуживает авторизацию и запросы. open() и toggle() не показывают такой экземпляр. Параметр несовместим с embedded и button_only и не меняется через configure. Получение истории и подписки доступны также в обычном виджете без headless.

Приоритет настроек

Для theme и features действует один порядок: значения по умолчанию → настройки канала → явно переданные поля init. Например, theme: { height: 700 } закрепляет высоту popup-окна в 700 px, а ширина, цвета, тексты и функции берутся из настроек канала.

Вложенные объекты объединяются по полям: переопределение русского заголовка сохраняет английский, а цвет фона кнопки не стирает цвет её иконки. Пропущенное поле или undefined не заменяет значение из настроек канала. Явные false, допустимый 0 и пустой массив сохраняются; массивы заменяются целиком для указанного языка. Пустые локализованные тексты не используются как переопределение. Для welcome_icon_url пустая строка имеет отдельный смысл: вернуть стандартную иконку.

SenlerWidget.init({
  channel_id: "xxx",
  theme: { height: 700 },
  features: { voice_messages: false },
});

Готовый код из кабинета не включает полный снимок theme и features. Сохранённые изменения настроек канала применяются при следующей инициализации виджета, кроме полей, явно закреплённых в коде сайта. Предпросмотр в кабинете показывает и несохранённые изменения, но не меняет конфигурацию работающего сайта. Язык и способ размещения задаются отдельно в коде подключения.

В работающем виджете допустимые параметры можно временно заменить через configure. Если настроен выбор по условиям сайта, поля, возвращённые resolveRuntime, применяются поверх этих базовых настроек до следующего расчёта.

Настройте нужные возможности

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

Если загрузка задержалась

Индикатор появляется, если загрузка занимает больше 4 секунд. После 10 секунд скрипт-загрузчик показывает сообщение «Загрузка задерживается. Продолжаем попытки.» и кнопку «Скопировать для поддержки». Это информационное состояние: повторные попытки продолжаются автоматически.

Отчёт содержит версии загрузчика и протокола, номер попытки, длительность и этап сбоя, состояние сети и проверку ресурсов. Параметры URL, содержимое запросов, ID канала и пользователя и токены не копируются.

Внешний отчёт относится к запуску iframe. Если ошибка появилась уже внутри открывшегося чата, используйте действие в соответствующем сообщении интерфейса.

Что настраивать дальше

После успешной инициализации передайте агенту текущий экран и нужную бизнес-сущность через контекст страницы. Если данные относятся только к одному вопросу, используйте контекст сообщения. К разметке кнопок и полей переходите после того, как обычное сообщение и контекст работают отдельно.