Обработка персональных данных требует надлежащего правового основания; согласие - лишь одно из возможных оснований, а не универсальное требование для любой обработки. Если вы опираетесь на согласие, оно должно быть свободно данным, конкретным, информированным, однозначным и отзываемым. См. руководство EDPB по законной обработке данных. Применимые правила использования файлов cookie и хранилища устройства оценивайте отдельно вместе с вашим консультантом по конфиденциальности.
Приведенные ниже элементы управления выполняют разные технические функции. Ни флажок согласия с политикой, ни отложенная загрузка не гарантируют соответствия требованиям сами по себе. Ограничение внутри виджета не препятствует выполнению скрипта виджета, сетевым запросам или использованию хранилища браузера до начала диалога.
Подход 1 - Согласие на обработку данных внутри виджета. Требуйте от посетителей принять вашу Политику конфиденциальности непосредственно внутри виджета чата, прежде чем они смогут начать диалог или отправить персональные данные.
Подход 2 - Загрузка после согласия. Полностью блокируйте загрузку скрипта чатбота до тех пор, пока посетитель не предоставит согласие на маркетинговые файлы или файлы cookie через вашу платформу управления согласием (Consent Management Platform, CMP).
Подход 1: Согласие на обработку данных внутри виджета
В ChatLab есть встроенные настройки согласия, позволяющие требовать от посетителей принятия Политики конфиденциальности перед взаимодействием с чатботом. Сам виджет управляет процессом получения согласия - внешние инструменты не требуются.
Доступ к настройкам
Откройте вашего чатбота в панели управления, перейдите на вкладку Settings (Настройки), затем нажмите Consent & Privacy (Согласие и конфиденциальность) в левой боковой панели.
Переключатели согласия
В карточке Request user consent (Запрашивать согласие пользователя) есть четыре переключателя.
- Require Privacy Policy consent before starting a new conversation (Требовать согласие с Политикой конфиденциальности перед началом нового диалога) - если параметр включен, посетители должны принять политику перед отправкой первого сообщения. Это самый широкий вариант: он автоматически охватывает все формы (сбор лидов, поддержку оператором и live chat), поэтому остальные три переключателя становятся неактивными.
- Require Privacy Policy consent for human support (Требовать согласие с Политикой конфиденциальности для поддержки оператором) - добавляет флажок согласия в форму связи с оператором.
- Require Privacy Policy consent for lead collection (Требовать согласие с Политикой конфиденциальности для сбора лидов) - добавляет флажок согласия в форму сбора лидов.
- Require Privacy Policy consent for live chat session (Требовать согласие с Политикой конфиденциальности для сессии live chat) - добавляет флажок согласия в форму Live Chat.
Если согласие требуется только для определенных взаимодействий (например, только при сборе персональных данных через лиды), включите отдельные переключатели вместо варианта "new conversation".
Настройка сообщений о согласии
Под переключателями в карточке Consent & Privacy можно настроить то, что видят посетители.
- Consent intro message (Вводное сообщение о согласии) - текст, отображаемый над флажком согласия. Например: "Пожалуйста, подтвердите, что вы прочитали и принимаете нашу Политику конфиденциальности, чтобы продолжить."
- Message to inform users about Privacy Policy consent requirement (Сообщение для информирования пользователей о требовании согласия с Политикой конфиденциальности) - текст метки флажка. Используйте markdown, чтобы добавить ссылку на вашу политику конфиденциальности:
I have read and accept the [Privacy Policy](https://www.example.com/privacy-policy).
После настройки дождитесь сохранения статуса. Протестируйте работу в новой сессии посетителя, включая каждую используемую форму. Отключение опции нового диалога не восстанавливает автоматически отдельные переключатели форм, которые были сброшены.
Подход 2: Загрузка после согласия (интеграция с CMP)
Если согласно вашей политике в отношении файлов cookie чатбот классифицируется как маркетинговый инструмент, необходимо предотвратить загрузку скрипта ChatLab до тех пор, пока посетитель не даст согласие. Для этого требуется интеграция с платформой управления согласием (CMP).
Стандартный код для вставки ChatLab
Стандартный код для вставки ChatLab выглядит следующим образом:
<script>
window.aichatbotApiKey = "YOUR_API_KEY_HERE";
window.aichatbotProviderId = "YOUR_PROVIDER_ID_HERE";
</script>
<script src="https://script.chatlab.com/aichatbot.js" id="YOUR_API_KEY_HERE" defer></script>
Этот код загружается мгновенно при открытии страницы, независимо от настроек согласия посетителя.
Вы можете найти свой API Key и Provider ID на вкладке Deploy (Развертывание) вашего чатбота.
Используйте следующий шаблон в качестве примера реализации, затем проверьте его работу с вашей реальной CMP и вашим сайтом. Примеры не являются сертификацией и не заменяют тестирование.
Подготовьте один условный загрузчик
Удалите обычную, безусловную установку ChatLab с вашего сайта, из плагинов и диспетчера тегов, чтобы остался только один путь загрузки. Скопируйте ваш публичный ключ для вставки и provider ID из раздела Deploy, а не секретный API-ключ ck_ или mk_. Если в вашем развертывании используется брендированный хост скрипта, сохраните URL из раздела Deploy.
Объявите эту вспомогательную функцию до регистрации слушателей событий согласия. Она не загружает ChatLab до тех пор, пока не будет вызвана со значением true.
<script>
window.applyChatLabConsent = function (allowed) {
if (!allowed) {
if (window.chatLabLoadedAfterConsent) window.location.reload();
return;
}
if (window.chatLabLoadedAfterConsent) return;
window.chatLabLoadedAfterConsent = true;
window.aichatbotApiKey = "YOUR_API_KEY_HERE";
window.aichatbotProviderId = "YOUR_PROVIDER_ID_HERE";
var script = document.createElement("script");
script.src = "https://script.chatlab.com/aichatbot.js";
script.id = window.aichatbotApiKey;
script.defer = true;
document.head.appendChild(script);
};
</script>
При отзыве согласия этот пример перезагружает страницу после того, как CMP сохранит отказ. При следующей загрузке страницы скрипт должен оставаться заблокированным. Перезагрузка может привести к потере несохраненных данных, введенных на странице, поэтому учтите это в логике отзыва согласия на вашем сайте. Простое удаление элемента script не останавливает уже выполненный код, активные соединения и не убирает созданный виджет. Перезагрузка также не удаляет ранее собранные данные или сохраненные записи о согласии.
Cookiebot
Выберите категорию, соответствующую зафиксированным вами целям; параметр marketing здесь приведен в качестве примера, а не как обязательная классификация от ChatLab. Cookiebot предоставляет единый объект consent. Его события готовности, принятия и отклонения позволяют повторно проверять эту категорию. См. документацию Cookiebot для разработчиков.
Установите этот слушатель до того, как CMP сможет отправить свое начальное событие:
<script>
function checkChatLabCookiebotConsent() {
window.applyChatLabConsent(
!!(window.Cookiebot && window.Cookiebot.consent &&
window.Cookiebot.consent.marketing)
);
}
window.addEventListener("CookiebotOnConsentReady", checkChatLabCookiebotConsent);
window.addEventListener("CookiebotOnAccept", checkChatLabCookiebotConsent);
window.addEventListener("CookiebotOnDecline", checkChatLabCookiebotConsent);
checkChatLabCookiebotConsent();
</script>
Usercentrics
Зарегистрируйте ChatLab как сервис с определенной вами целью/категорией. Используйте вариант реализации для установленной у вас версии Web CMP. Если доступны пользовательские события window, настройте событие с именем ucEvent в разделе Implementation > Data Layer & Events, затем зарегистрируйте слушатель до инициализации CMP. Название сервиса в примере должно в точности совпадать с вашей конфигурацией.
<script>
window.addEventListener("ucEvent", function (event) {
if (event.detail && event.detail.event === "consent_status") {
window.applyChatLabConsent(event.detail.ChatLab === true);
}
});
</script>
Это соответствует руководству Usercentrics по пользовательским событиям. Убедитесь, что ваша конфигурация отправляет как исходно сохраненный выбор, так и последующие обновления. Если это не так, используйте документированный API начального состояния для вашей версии; не рассчитывайте, что один только слушатель обработает повторные визиты пользователей.
Google Tag Manager
- Интегрируйте вашу CMP с GTM и задайте необходимые значения по умолчанию с отказом от согласия до запуска остальных тегов.
- Создайте тег Custom HTML (Пользовательский HTML), содержащий условный загрузчик и вызов
applyChatLabConsent(true). - Откройте Consent Settings (Настройки согласия) тега и настройте Additional Consent Checks (Дополнительные проверки согласия) для типов согласия, выбранных для этого сервиса.
- В качестве триггера используйте реальное событие уровня данных о готовности/обновлении согласия, предоставляемое вашей CMP. Также учтите повторных посетителей, чье согласие уже было получено ранее.
- Настройте отзыв через сохранение выбора в CMP и перезагрузку страницы, как описано выше.
- Проверьте работу в режиме предварительного просмотра GTM перед публикацией.
Тег Custom HTML не начинает учитывать согласие автоматически только из-за наличия баннера на сайте. Не копируйте вымышленные имена событий вроде CookieConsentDeclaration; событие и переменные согласия должны реально существовать в вашем контейнере. См. настройки согласия для тегов в Google.
Проверка перед публикацией
В новой сессии браузера проверьте следующие сценарии с помощью панели Network (Сеть):
- До совершения выбора и после отказа: загрузчик ChatLab, виджет или запросы к API не должны появляться.
- После согласия: виджет загружается один раз и позволяет начать диалог.
- Повторный визит с сохраненным согласием: виджет загружается без дополнительных кликов.
- После отзыва согласия: страница перезагружается, статус отказа сохраняется, и ChatLab остается незагруженным.
- При включенном согласии внутри виджета: требуемый флажок политики отображается перед настроенным взаимодействием.
Также проверьте вставки через iframe, другие плагины и дублирующиеся теги: блокировка одного скрипта не блокирует повторную установку. Информацию об элементах управления сроками хранения данных см. в статье Удаление данных.