> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/knowledge-base/uvedomleniya-i-integracii/integrations/online-chat/custom-online-chat.md).

# Пользовательский код онлайн-чата

Подключение собственного HTML- или JavaScript-кода виджета по языкам сайта

Тип «Пользовательский код» позволяет подключить виджет сервиса, которого нет в стандартном списке. В панель вставляется готовый HTML-код подключения либо чистый JavaScript, а выполняется он только на клиентском сайте.

## Где находится

Откройте:

**«Настройки» — «Общие настройки» — «Дополнительно» — «Онлайн чат» — вкладка «Онлайн чат»**

Для входа в раздел требуется право «Разрешить управление онлайн чатом для заявок в админпанели» из блока «Заявки». Для выбора типа, изменения, включения и публикации кода дополнительно требуется право **«Пользовательский код онлайн-чата» из блока «Заявки»**. Оба права находятся в карточке группы по пути **«Пользователи» — «Список групп пользователей»**.

{% hint style="danger" %}
Право «Пользовательский код онлайн-чата» разрешает публиковать HTML и JavaScript на клиентском сайте. Такой код получает доступ к содержимому открытой страницы. Выдавайте право только техническому администратору и используйте код из доверенного кабинета сервиса.
{% endhint %}

## Что можно загрузить

| Поле или действие             | Как использовать                                                     |
| ----------------------------- | -------------------------------------------------------------------- |
| «Формат вставки» — HTML       | Для полного кода виджета с тегами `<script>`, HTML и стилями         |
| «Формат вставки» — JavaScript | Для чистого JavaScript без тегов `<script>`                          |
| «Код виджета»                 | Вставить исходный текст из кабинета сервиса                          |
| «Загрузить из файла»          | Прочитать файл HTML, HTM, JS или TXT в кодировке UTF-8               |
| Языковые вкладки              | Сохранить отдельный код для каждой активной локали клиентского сайта |

Размер кода одного языка не должен превышать 256 КБ. Файл используется только как способ заполнить редактор: перед публикацией всё равно проверьте показанный текст и нажмите общую кнопку «Сохранить».

При загрузке HTML- или HTM-файла панель выбирает HTML, при загрузке JS — JavaScript. Для вставки из буфера и TXT формат определяется по началу текста. Всегда перепроверьте поле «Формат вставки»: автоматическое определение помогает заполнить форму, но не подтверждает корректность кода провайдера.

## Подключение виджета

{% stepper %}
{% step %}

### Получите код в сервисе чата

Создайте сайт или проект в кабинете провайдера и скопируйте официальный код подключения. Не используйте фрагмент из случайной статьи или чужого сайта.
{% endstep %}

{% step %}

### Выберите тип

Включите «Включить онлайн чат» и в поле «Тип онлайн чата» выберите «Пользовательский код».
{% endstep %}

{% step %}

### Заполните основной язык

Откройте вкладку основного языка сайта, выберите HTML или JavaScript и вставьте код либо нажмите «Загрузить из файла».
{% endstep %}

{% step %}

### Проверьте обработку вставки

Если панель показывает «Удалено форматирование сообщения», она убрала внешнее Markdown-ограждение или исправила явное искажение HTML-вставки, которое могло появиться при копировании из сообщения. Сравните результат с официальным исходником. Кнопка «Отменить обработку» возвращает первоначальный текст.
{% endstep %}

{% step %}

### Заполните остальные языки

Если провайдер выдал разные проекты или настройки для локалей, вставьте их в соответствующие вкладки. Пустая вкладка использует код основного языка сайта.
{% endstep %}

{% step %}

### Сохраните и проверьте сайт

Нажмите «Сохранить», затем полностью обновите клиентский сайт. Проверьте виджет на компьютере и телефоне, а также на каждой локали с отдельным кодом.
{% endstep %}
{% endstepper %}

## Основной язык и предыдущая версия

Код выбирается по языку клиентского сайта. Если текущая языковая вкладка пустая, используется заполненный вариант основного языка. Отключение языка не удаляет его сохранённый код; после повторного включения вкладка снова станет доступна.

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

## Что происходит на клиентском сайте

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

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

## Безопасная проверка

1. Сверьте домены всех внешних скриптов в коде.
2. Убедитесь, что код относится к вашему проекту и не содержит чужого идентификатора.
3. Проверьте политику конфиденциальности сервиса и согласие на внешние cookies, если они нужны.
4. Откройте сайт в приватном окне и проверьте основной язык.
5. Переключите каждую активную локаль и убедитесь, что выбран ожидаемый проект.
6. Создайте тестовую заявку и проверьте, что виджет не перекрывает форму, реквизиты и кнопки.
7. Откройте сайт на телефоне и проверьте прокрутку, клавиатуру и закрытие окна чата.
8. Убедитесь, что в панели код не исполняется и сотрудник без отдельного права не может его изменить.

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

## Параллельное редактирование

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

## Если виджет не появился

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