← Cloudflare Zaraz / zaraz / consent-management
Consent API
Контекст
Consent API позволяет программно управлять всеми аспектами системы управления согласием: модальным окном, статусом согласия и получением информации о настроенных целях.
С помощью Consent API вы можете интегрировать настройки Zaraz Consent с внешней Consent Management Platform, настроить собственное модальное окно согласия или ограничить управление согласием пользователями из определённых регионов.
События
Consent API Ready
Полезно знать, когда Consent API полностью загружен на странице, чтобы код, взаимодействующий с его методами и свойствами, не вызывался преждевременно.
document.addEventListener("zarazConsentAPIReady", () => {
// do things with the Consent API
});Consent Choices Updated
Это событие срабатывает каждый раз, когда пользователь изменяет свои настройки согласия. Его можно использовать для реагирования на изменения согласия, например при обновлении инструмента с учётом новых настроек.
document.addEventListener("zarazConsentChoicesUpdated", () => {
// read the new consent preferences using `zaraz.consent.getAll();` and do things with it
});Свойства
Ниже перечислены свойства zaraz.consent объект.
-
modalboolean- Получайте или задавайте текущий статус видимости модального окна согласия.
-
purposesобъект доступен только для чтения- Объект, содержащий все настроенные цели с их ID, названием, описанием и порядком.
-
APIReadyboolean, только для чтения- Указывает, доступен ли Consent API на странице в данный момент.
Методы
Get
zaraz.consent.get(purposeId);get(purposeId):boolean | undefined
Получайте текущий статус согласия для цели по её purpose ID.
true: Согласие было предоставлено.false: Согласие не было предоставлено.undefined: Цель не существует.
Параметры
-
purposeIdстрока- Идентификатор, представляющий цель.
Set
zaraz.consent.set(consentPreferences);set(consentPreferences):undefined
Задайте статус согласия для отдельных целей по идентификатору цели.
Параметры
-
consentPreferencesобъект-
{ purposeId: boolean }объект, описывающий цели, которые нужно установить, и статус согласия для каждой из них.
-
Get All
zaraz.consent.getAll();getAll():{ purposeId: boolean }
Возвращает объект со статусом согласия по всем целям.
Set All
zaraz.consent.setAll(consentStatus);setAll(consentStatus):undefined
Задайте статус согласия сразу для всех целей.
Параметры
-
consentStatusboolean- Указывает, было ли дано согласие.
Get All Checkboxes
zaraz.consent.getAllCheckboxes();getAllCheckboxes():{ purposeId: boolean }
Возвращает объект со статусом чекбоксов всех целей.
Set Checkboxes
zaraz.consent.setCheckboxes(checkboxesStatus);setCheckboxes(checkboxesStatus):undefined
Задайте статус согласия для отдельных целей по идентификатору цели.
Параметры
-
checkboxesStatusобъект-
{ purposeId: boolean }объект, описывающий чекбоксы, которые нужно установить, и их статус отметки.
-
Set All Checkboxes
zaraz.consent.setAllCheckboxes(checkboxStatus);setAllCheckboxes(checkboxStatus):undefined
Задайте checkboxStatus статус для всех целей в модальном окне согласия сразу.
Параметры
-
checkboxStatusboolean- Указывает, следует ли отмечать цели как выбранные.
Send queued events
zaraz.consent.sendQueuedEvents();sendQueuedEvents():undefined
Если некоторые события на основе Pageview не были отправлены из-за отсутствия согласия, их можно отправить этим методом после получения согласия.
Примеры
Ограничение проверок согласия по местоположению
Вы можете сочетать разные функции Zaraz, чтобы фактически отключить Consent Management для отдельных посетителей. Например, если нужно применять его только к посетителям из ЕС, отключите автоматический показ окна согласия и добавьте инструмент Custom HTML со следующим скриптом:
<script>
function getCookie(name) {
const value = `; ${document.cookie}`
return value?.split(`; ${name}=`)[1]?.split(";")[0]
}
function handleZarazConsentAPIReady() {
const consent_cookie = getCookie("cf_consent")
const isEUCountry = "{{system.device.location.isEUCountry}}" === "1"
if (!consent_cookie) {
if (isEUCountry) {
zaraz.consent.modal = true
} else {
zaraz.consent.setAll(true)
zaraz.consent.sendQueuedEvents()
}
}
}
if (zaraz.consent?.APIReady) {
handleZarazConsentAPIReady()
} else {
document.addEventListener("zarazConsentAPIReady", handleZarazConsentAPIReady)
}
</script>Примечание: если вы изменили имя cookie для Consent Manager, используйте это имя вместо "cf_consent" в приведённом выше фрагменте кода.
Если разрешить этому инструменту Custom HTML запускаться без требования согласия, модальное окно будет показываться всем посетителям из ЕС, тогда как для остальных посетителей согласие будет предоставляться автоматически. {{ system.device.location.isEUCountry }} свойство будет 1 если посетитель из страны ЕС, и 0 в противном случае. Вы можете аналогичным образом использовать любое другое свойство или переменную для настройки поведения Consent Management, например {{ system.device.location.country }} чтобы ограничить проверки согласия по коду страны.