Встраивание виджета
Кратко
После создания и настройки виджета его нужно встроить в сайт, приложение или портал. Код зависит от выбранного сценария: форма внутри страницы, плавающий виджет на всех страницах или своя кнопка, которая открывает модальное окно поддержки. Виджет работает на доменах из белого списка, не требует авторизации от посетителей и создаёт заявки анонимно (с указанием контактных данных в форме).
Кто имеет доступ
| Роль | Копирование кода | Управление виджетом |
|---|---|---|
| Администратор | да | да |
| Руководитель | да | да |
| Оператор | нет | нет |
| Сотрудник клиента | нет | нет |
Для установки кода на сайт нужен доступ к HTML-коду сайта (веб-разработчик или администратор сайта).
Где найти
Настройки -- Интеграции -- Виджет -- выберите готовый виджет или нажмите "Создать виджет". Код показывается в мастере после создания/сохранения.
Как работает
Код встраивания
Код виджета состоит из загрузчика widget/loader.js и инициализации с ключом виджета. Это не REST API-ключ: API и MCP подключаются отдельно в соответствующих интеграциях.
<script>
(function(w,d,s,o,f,js,fjs){w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];js.async=1;js.src=f;
fjs.parentNode.insertBefore(js,fjs);})(window,document,'script','tpw','https://support.tehprof.kz/widget/loader.js');
tpw('init',{key:'WIDGET_KEY'});
</script>
Код необходимо вставить перед закрывающим тегом </body> на каждой странице, где должен отображаться виджет.
Процесс установки
- Откройте карточку "Виджет" в настройках интеграций
- Нажмите "Создать виджет" или отредактируйте готовый виджет
- Выберите способ встройки в мастере
- Нажмите "Копировать код" -- код скопируется в буфер обмена
- Откройте HTML-код вашего сайта или приложения
- Вставьте код в место, соответствующее выбранному сценарию
- Сохраните и опубликуйте изменения
- Откройте страницу -- виджет должен появиться
Пример установки
<!DOCTYPE html>
<html>
<head>
<title>Мой сайт</title>
</head>
<body>
<!-- Содержимое страницы -->
<h1>Добро пожаловать</h1>
<p>Контент сайта...</p>
<!-- Виджет поддержки (вставить перед </body>) -->
<script>
(function(w,d,s,o,f,js,fjs){w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];js.async=1;js.src=f;
fjs.parentNode.insertBefore(js,fjs);})(window,document,'script','tpw','https://support.tehprof.kz/widget/loader.js');
tpw('init',{key:'wgt_abc123def456'});
</script>
</body>
</html>
Для формы внутри страницы
Если выбран сценарий "Форма внутри страницы", добавьте HTML-контейнер в то место страницы, где должна отображаться форма:
<div id="tehprof-support-form"></div>
<script>
(function(w,d,s,o,f,js,fjs){w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];js.async=1;js.src=f;
fjs.parentNode.insertBefore(js,fjs);})(window,document,'script','tpw','https://support.tehprof.kz/widget/loader.js');
tpw('init',{key:'wgt_abc123def456',target:'#tehprof-support-form'});
</script>
Для своей кнопки
Если выбран сценарий "Своя кнопка", оставьте кнопку в вашем дизайне и повесьте открытие окна поддержки:
<button type="button" id="tehprof-support-btn">Написать в поддержку</button>
<script>
(function(w,d,s,o,f,js,fjs){w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];js.async=1;js.src=f;
fjs.parentNode.insertBefore(js,fjs);})(window,document,'script','tpw','https://support.tehprof.kz/widget/loader.js');
tpw('init',{key:'wgt_abc123def456',mode:'manual'});
document.getElementById('tehprof-support-btn').addEventListener('click',function(){tpw('open')});
</script>
Анонимное создание заявок
Виджет не требует авторизации от посетителя сайта. Клиент заполняет контактные данные (имя, email, телефон) в форме виджета. Заявка создаётся с этими данными без привязки к учётной записи Bitrix24.
CORS и безопасность
Сервер проверяет источник запроса по списку доменов виджета:
- Домены настраиваются при создании или редактировании виджета
- Запрос с неразрешённого домена получает отказ
403; это прикладная проверка сервера, а не доверие к одному CORS-заголовку - Запись
example.kzразрешает сам домен и его поддомены; префикс*.вводить не нужно - Для локальной разработки добавьте localhost в список доменов
Rate limiting
Для защиты от злоупотреблений действует почасовой лимит по IP-адресу и типу запроса:
- Не более 60 загрузок конфигурации в час с одного IP-адреса
- Не более 10 отправок формы в час с одного IP-адреса
- При превышении лимита форма показывает сообщение о временной недоступности
После входа из анонимного виджета загрузчик получает только одноразовый код обмена и открывает клиентский кабинет без помещения действующего токена в URL родительской страницы. Число непрочитанных ответов отображается бейджем на кнопке виджета.
Настройка
Установка на конструкторах сайтов
WordPress:
- Откройте Внешний вид -- Редактор темы -- footer.php
- Вставьте код перед
</body>
- Или используйте плагин "Insert Headers and Footers" для более простой установки
Tilda:
- Настройки сайта -- Ещё -- HTML код для вставки внутрь HEAD или перед </BODY>
- Вставьте код в поле "Перед </BODY>"
- Опубликуйте сайт
Bitrix (1C-Bitrix):
- Откройте шаблон сайта
- Вставьте код в footer.php перед
</body>
- Сбросьте кэш
Установка через Google Tag Manager
- Создайте новый тег типа "Пользовательский HTML"
- Вставьте код виджета
- Триггер: "Все страницы"
- Опубликуйте контейнер
Проверка установки
После установки откройте сайт и убедитесь:
- Виджет отображается (кнопка FAB, кнопка на странице или встроенная форма)
- При нажатии открывается форма с настроенными полями
- Форма успешно отправляется (тестовая заявка появляется в платформе)
- Сообщение после отправки соответствует настройкам
Решение проблем
Виджет не отображается:
- Проверьте, что домен сайта добавлен в whitelist виджета
- Откройте консоль браузера (F12) и проверьте наличие ошибок
- Убедитесь, что скрипт загружается (вкладка Network в DevTools)
- Проверьте, что виджет активен в настройках платформы
Ошибка CORS в консоли:
- Домен сайта не добавлен в whitelist виджета
- Добавьте точный домен (включая www, если используется)
Виджет загружается медленно:
- Скрипт загружается асинхронно и не блокирует рендеринг страницы
- Первая загрузка может быть медленнее (кэширование)
Частые вопросы
Нужно ли обновлять код на сайте при изменении настроек виджета?
Нет, настройки (цвет, поля, текст) загружаются динамически с сервера. Код на сайте остаётся тем же.
Влияет ли виджет на скорость загрузки сайта?
Минимально. Скрипт загружается асинхронно и не блокирует отображение страницы. Размер скрипта -- менее 50 КБ.
Можно ли стилизовать виджет под дизайн сайта?
Цвет кнопки и текст подписи настраиваются в платформе. Дополнительная кастомизация CSS доступна через переопределение стилей.
Виджет работает на мобильных устройствах?
Да, виджет адаптивен и корректно отображается на мобильных устройствах. Форма занимает полный экран на маленьких экранах.
Можно ли показывать виджет только авторизованным пользователям?
Платформа не управляет отображением на стороне сайта. Загружайте скрипт как обычно, но вызывайте tpw('init', {key:'...'}) только после собственной проверки авторизации пользователя.
Связанные статьи
- Создание виджета -- первичное создание
- Настройка виджета -- параметры виджета
- Создание заявки (клиент) -- процесс подачи заявки
- Входящие вебхуки -- альтернативный способ создания заявок с внешних систем