enВойти в Senler

Оформление из кода

Передайте нужные поля theme при инициализации. Явные значения переопределяют соответствующие настройки канала; остальные поля наследуются из них. Приоритет настроек.

Оформление

theme поддерживает:

КлючЧто видит посетитель
chat_titleЗаголовок чата.
default_dialog_titleНазвание нового диалога.
theme_modeСветлая, тёмная или системная тема: light, dark, auto.
positionПоложение popup-окна: bottom-right, bottom-left, top-right, top-left.
width, heightРазмер окна: ширина 200–800, высота 300–1000 пикселей.
border_radiusСкругление от 0 до 50 пикселей.
shadow_enabledТень окна.
welcome_messageТекст-подсказка в поле ввода.
empty_state_messageПриветственный текст в пустом новом диалоге.
welcome_buttonsБыстрые вопросы до начала переписки.
welcome_icon_urlАдрес картинки над приветствием: абсолютный HTTP(S) URL до 2048 символов. Пустая строка возвращает стандартную иконку.
welcome_icon_shapeФорма картинки: circle (круг, по умолчанию) или square (квадрат без скругления).
buttonПоложение и цвета плавающей кнопки.
colorsЦвета окна отдельно для light и dark: в каждой теме необязательные background (фон) и accent (акцент) в формате #RRGGBB. Отсутствующие значения наследуются из настроек канала; без переопределений используется стандартное оформление.

Локализованные тексты принимают объект { ru?: string, en?: string }. В каждом массиве welcome_buttons может быть до 8 непустых уникальных строк длиной до 120 символов. Нажатие сразу отправляет текст кнопки.

SenlerWidget.init({
  channel_id: "xxx",
  theme: {
    empty_state_message: {
      ru: "Здравствуйте! Чем помочь?",
      en: "Hello! How can I help?",
    },
    welcome_buttons: {
      ru: ["Узнать цену", "Связаться с оператором"],
      en: ["Check the price", "Contact an operator"],
    },
  },
});

theme.button.position принимает те же четыре позиции и hidden. Чтобы скрыть плавающую кнопку, задайте theme.button.position: "hidden"; значение theme.position: "hidden" недопустимо. Цвета theme.button.light.background, theme.button.light.icon, theme.button.dark.background и theme.button.dark.icon задаются в формате #RRGGBB.

welcome_buttons нельзя изменить через updateRuntime. Сохраните их в кабинете или задайте переопределение в init, затем заново инициализируйте виджет.

Картинка над приветствием

Свой логотип или иллюстрацию можно загрузить в настройках канала. Чтобы задать картинку из кода сайта, передайте адрес изображения в theme.welcome_icon_url:

SenlerWidget.init({
  channel_id: "xxx",
  theme: {
    welcome_icon_url: "https://example.com/support.png",
    welcome_icon_shape: "circle",
  },
});

Картинка используется в режиме centered_text до выбора диалога и в пустом диалоге, а не вместо аватара в сообщениях или иконки плавающей кнопки. Изображение заполняет квадратную область с обрезкой по краям; для circle эта область становится круглой. Если файл не загрузился, виджет показывает стандартную иконку. Для HTTPS-сайта используйте HTTPS-адрес изображения.

Чтобы вернуть стандартную иконку, задайте welcome_icon_url: "". Простое удаление параметра из init оставляет значение из настроек канала. Оба параметра иконки задаются при инициализации и не входят в updateRuntime: для их замены заново инициализируйте виджет с нужным theme.

Выбор приветственного сообщения описан в «Динамических сообщениях». Тему и скругление работающего экземпляра можно изменить через updateRuntime; это не меняет настройки канала.