Дополнительные возможности
Custom CSS, звук уведомлений, мини-приложение и email-мост.
Custom CSS
Поле «Собственный CSS (опционально)» в НастройкиКонструктор виджетаРасширенные (advanced.custom_css, до 50 000 символов). Виджет вставляет этот CSS в <head> страницы посетителя отдельным тегом <style id="sh-widget-custom-styles"> один раз — когда загружается на странице. Если поле пустое, тег не добавляется.
Стили не изолированы и действуют на всю страницу, поэтому начинайте селекторы с #sh-widget-panel или классов .sh-…. При сохранении бэкенд отклоняет @import, expression(…), javascript: и url() с любой схемой, кроме data:; относительные пути разрешены.
/* Убрать тень панели */
#sh-widget-panel { box-shadow: none !important; }
/* Поменять шрифт на Inter (предполагается, что он уже подключён) */
#sh-widget-panel * { font-family: "Inter", sans-serif; }
/* Свой цвет кнопок вместо цвета акцента */
.sh-btn { background: #ff5722 !important; }Звук уведомлений
Переключатель «Звук уведомления» в разделе «Расширенные». Когда он включён, виджет играет звук, если в диалог по WebSocket приходит новое сообщение оператора (или AI). Сообщения бота и системные — без звука; не чаще одного звука в 0,7 секунды. По умолчанию выключено.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| advanced.sound.enabled | boolean | false | Включить звук. |
| advanced.sound.url | string (до 500 символов) | null | Поле «Свой URL звука (опционально)» — появляется, когда звук включён. Ссылка на аудиофайл, размещённый где угодно: загрузки файла в конструкторе нет. Файл играет с громкостью 0,6. Если поле пустое, звучит встроенный синтезированный двухтоновый сигнал — звук есть и без своего файла. |
Мини-приложение
Встроенный iframe во вкладке виджета — например, личный кабинет, калькулятор или статус заказа. Вкладку включает переключатель «Мини-приложение» в НастройкиКонструктор виджетаВкладки, а страницу задают в НастройкиКонструктор виджетаМини-приложение: «URL приложения», «Заголовок» и «Высота (px)».
Вкладка появляется в нижней навигации, только когда переключатель включён и задан URL (в ответе /config это computed.miniapp_visible). Название вкладки — встроенный текст виджета («Сервис» в русском интерфейсе) с общей иконкой; поле «Заголовок» его не меняет.
miniapp.url.X-Frame-Options / frame-ancestors), иначе браузер её не покажет. Без URL посетители вкладку не видят, а в предпросмотре конструктора в ней написано «Приложение ещё не настроено». iframe открывается с sandbox="allow-scripts allow-forms allow-same-origin": всплывающие окна и переходы на уровне всей страницы заблокированы.title у iframe (его читают экранные дикторы). Название вкладки он не меняет.| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| tabs.miniapp_enabled | boolean | false | Переключатель «Мини-приложение» в разделе «Вкладки». Вкладка видна, только если ещё задан miniapp.url. |
| miniapp.url | string | null | Адрес страницы в iframe. Страница должна разрешать встраивание (X-Frame-Options / frame-ancestors), иначе браузер её не покажет. Без URL посетители вкладку не видят, а в предпросмотре конструктора в ней написано «Приложение ещё не настроено». iframe открывается с sandbox="allow-scripts allow-forms allow-same-origin": всплывающие окна и переходы на уровне всей страницы заблокированы. |
| miniapp.title | string | "App" | Только атрибут title у iframe (его читают экранные дикторы). Название вкладки он не меняет. |
| miniapp.height_px | number | 480 | Высота iframe в пикселях — одинаковая на всех устройствах. В конструкторе от 240 до 960; через API принимается от 120 до 1200. |
Email-мост
Email-мост продолжает переписку по почте, когда посетителя нет в чате. Настройки — в НастройкиКонструктор виджетаEmail-мост. Мост работает, только если он включён и выбран канал-мост — email-канал из НастройкиКаналы, через который уходят письма. Без канала мост ничего не делает.
- Запрос email. Если посетитель пишет вне рабочих часов (НастройкиРабочие часы), а email у контакта ещё нет, в ответ на первое сообщение нового диалога в чате появляется карточка с полем для email. Если расписание не задано, проект считается открытым всегда, и карточка не появляется.
- Ответы оператора на почту. Если в момент ответа посетителя нет в виджете (нет живого подключения), ответ уходит ещё и на email контакта — по шаблону «Ответ оператора» из НастройкиEmail-шаблоны.
- Письмо-подтверждение. Только если включён переключатель «Отправлять авто-подтверждение по email»: после сообщения посетителя, один раз на тикет, если у контакта есть email, — по шаблону «Подтверждение» из НастройкиEmail-шаблоны. Если шаблон там выключен, письмо не уходит.
enabled — переключатель «Отправлять авто-подтверждение по email»: письмо-подтверждение уходит, только когда он включён, и только пока включён шаблон «Подтверждение» в Email-шаблонах. Полей темы и текста в конструкторе нет: текст письма правят в Email-шаблонах (ссылка «Изменить текст письма» под переключателем). subject и body из старых конфигов используются один раз — ими заполняется шаблон, если его ещё нет.| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| email_bridge.enabled | boolean | false | Переключатель «Включить email-мост». |
| email_bridge.bridge_channel_id | string | null | Email-канал, через который отправляются письма, — выбирается из списка email-каналов проекта. Если не выбран, письма не уходят и карточка не показывается. |
| email_bridge.label | string | { ru, en } | "Email для ответа" | Поле «Подпись формы» — заголовок карточки с полем email в чате. |
| email_bridge.hint | string | { ru, en } | "Пришлём ответ на почту" | Поле «Текст подсказки» — строка под заголовком карточки. |
| email_bridge.auto_ack | { enabled, subject, body } | { false, null, null } | enabled — переключатель «Отправлять авто-подтверждение по email»: письмо-подтверждение уходит, только когда он включён, и только пока включён шаблон «Подтверждение» в Email-шаблонах. Полей темы и текста в конструкторе нет: текст письма правят в Email-шаблонах (ссылка «Изменить текст письма» под переключателем). subject и body из старых конфигов используются один раз — ими заполняется шаблон, если его ещё нет. |

