Редактор размещений
Настройки размещений, включая те, что создаются в интерфейсе Панели управления Webim, можно отредактировать через Редактор размещений.
Внимание!
Мы рекомендуем Вам работать с настройками размещений через Панель управления Webim. Изменение настроек через Редактор размещений может привести к непредвиденным последствиям!
Конфигурация настроек размещений хранится в формате JSON, включая в себя следующие настройки:
-
ID размещения (
id
) -
Ключ размещения (
key
) -
Название размещения, отображаемое в интерфейсе (
title
) -
Настройки чата (
chat
) -
Настройки кнопки (
button
) -
Настройки автоприглашения (
invitation
) -
Настройки стилей (
styles
) -
Прочие настройки (
misc
) -
Ресурсы (
resources
)
Доступность (наличие) тех или иных настроек может быть определена отдельными тарифными опциями. Если соответствующая настройке тарифная опция отключена, изменение настройки в редакторе не будет приводить к фактическому изменению поведения сервиса (для настроек, вынесенных в интерфейс Панели управления) или не будет отображаться в списке настроек вовсе.
Доступ к Редактору размещений
Доступ к Редактору размещений осуществляется по сервисному логину и паролю по адресу:
https://{hostname}/service/location-settings
{hostname}
здесь - имя хоста, на котором размещается Webim Server. Для облачных размещений он имеет вид {account}.webim.ru
, для hosted-размещений - chat.mycompany.caom
Настройки чата (объект chat
)
Здесь содержатся основные характеристики размещения, такие как язык и отдел для размещения.
Для полей, которые посетителю предлагается заполнить, также можно отредактировать параметры, регламентирующие заполнение поля (длина поля, маска и т.д.).
Также в этом объекте можно задать набор полей, необходимых для ввода в случае, если это офлайн-обращение, а также при запросе оператором контактов посетителя в течение диалога.
Дополнительно здесь может настраиваться множество параметров: необходимость выбора отдела, предложение оценить оператора, цвета различных элементов виджета и т.п.
В Редакторе размещений содержатся следующие настройки чата:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
"lang" |
String |
См. статью | Язык размещения (параметр Язык диалога на странице Кнопки и размещения). | Да |
"department_key" |
String |
"webim_department_key" |
Привязка чата к конкретному отделу (по нажатию на такую кнопку чат сразу попадает в отдел). | Нет |
"chatEnterFirstMessage" |
String |
"Y" "N" |
Если выбрано "Y" , то для начала чата посетитель должен отправить сообщение, а также указать контактную информацию в специальной форме, которая будет отображена при открытии виджета.Если выбрано "N" , то форма ввода контактной информации и первого сообщения не отображаются.В интерфейсе настройка хранится в виде чекбокса Посетители должны вводить свой вопрос первыми, а также контактную информацию на вкладке Окно чата |
Нет |
"chatStartAfterFirstMessage" |
String |
"Y" "N" |
Если выбрано "Y" , то чат в сессии создаётся только после того, как посетитель отправит первое сообщение.Если выбрано "N" , то чат в сессии создаётся сразу же и сразу будет виден в РМО. Внимание: это может привести к созданию пустых чатов и увеличению нагрузки на сервер и операторов. |
Нет |
"defaultLayout" |
Object |
Настройки окна чата по умолчанию. | Да | |
"visitorFields" |
Object |
Конфигурация данных, которые посетителю предлагается предоставить. | Да | |
"visitorFieldLabels" |
Object |
{ key[имя поля данных посетителя]: resource_key / null (код ресурса [перевода]), ... } |
Словарь, позволяющий переопределить ресурсы для ключей полей данных посетителя. | Нет |
"logo" |
String |
"images/logo/someaccount_sit_logo.png?9209" |
Относительный путь файла с логотипом компании от базового URL https://*.webim(dev).ru . |
Нет |
"proposeToRateBeforeClose" |
String |
"Y" "N" |
Определяет, будет ли посетителю отправлен запрос на оценку диалога после закрытия чата. Соответствует чекбоксу Предложить оценить оператора перед закрытием чата вкладки Окно чата. |
Нет |
"showSelectModeMenu" |
String |
"Y" "N" |
Включает меню слева от виджета с кнопками, позволяющими переключаться между онлайн и офлайн кнопками обращений. | Нет |
"hideMenu" |
String |
"Y" "N" |
Скрывает пользовательское меню, где находятся кнопки Изменить личные данные и т.д. | Нет |
"availableDepartmentKeys" |
Array of strings |
["sales", "test"] |
Список ключей отделов, которые могут быть выбраны при начале чата. В интерфейсе задаются в поле Доступные для выбора отделы вкладки Окно чата. | Нет |
"headerColor" |
String |
"rgba(32,139,59,1)" |
Цвет окна диалога (шапки виджета). Устаревшая настройка, по факту null .Актуальная аналогичная настройка: styles.header.background Если этой настройки не существует, её значение инициализируется headerColor . |
Нет |
"headerGradientColor" |
String |
"rgba(32,139,59,1)" |
Второй цвет окна диалога (шапки виджета). Устаревшая настройка, по факту null .Актуальная аналогичная настройка: styles.header.gradient .Если этой настройки не существует, её значение инициализируется headerGradientColor . |
Нет |
"bgColor" |
String |
"rgba(32,139,59,1)" |
Цвет фона виджета. Устаревшая настройка, по факту null .Актуальная аналогичная настройка: styles.body.background .Если этой настройки не существует, её значение инициализируется bgColor . |
Нет |
"buttonColor" |
String |
"rgba(32,139,59,1)" |
Цвет кнопки. Устаревшая настройка, по факту null .Актуальная аналогичная настройка: styles.button.background .Если этой настройки не существует, её значение инициализируется buttonColor . |
Нет |
"buttonGradientColor" |
String |
"rgba(32,139,59,1)" |
Второй цвет кнопки. Устаревшая настройка, по факту null .Актуальная аналогичная настройка: styles.button.gradient . Если этой настройки не существует, её значение инициализируется buttonGradientColor . |
Нет |
"messageDateFormat" |
String |
"DD.MM" |
Формат даты, которая отображается в чате для сообщений. Доступные ключи: "DD" - число"MM" - месяц"YY" - год |
Нет |
"chooseDepartment" |
String |
"Y" "N" |
Включение выбора отдела посетителем (поле Выбор отдела вкладки Окно чата). Работает, если включена тарифная опция departments . |
Нет |
"departmentsSort" |
String |
"name" "id" |
Поле, по значению которого будет осуществляться сортировка списка отделов (параметр Сортировка списка отделов во вкладке Окно чата). | Нет |
"hideOfflineDepartments" |
Boolean |
true false |
Позволяет скрывать от посетителя отделы в статусе Офлайн при их нахождении в виджете выбора отделов. По умолчанию false . |
Нет |
"visitor_routing_rules" |
Boolean |
true false |
Включает возможность задавать правила для перенаправления посетителя в размещение | Нет |
N.B.
В сводной таблице ниже приведены сценарии поведения сервиса при различных значениях настроек chatEnterFirstMessage
и chatStartAfterMessage
:
chatStartAfterMessage = "Y" |
chatStartAfterMessage = "N" |
|
---|---|---|
chatEnterFirstMessage = "Y" |
Посетителю выводится форма отправки первого сообщения и форма для ввода контактных данных. Чат создаётся и отображается в РМО у операторов, а также распределяется на оператора только после того, как посетитель оставит сообщение и заполнит предложенные поля. | Чат создаётся сразу, как только посетитель попадает на сайт, чат виден операторам в РМО, но они не могут отправить сообщение до того, как это сделает посетитель. Посетителю выводится форма ввода первого сообщения и контактной информации. |
chatEnterFirstMessage = "N" |
Пока посетитель находится на сайте и ничего не напишет в чат, чат не начнётся и не будет виден операторам в РМО. Только после первого сообщения чат будет начат и распределён на оператора. | Чат создаётся сразу, как только посетитель попадает на сайт, первое сообщение может отправить и оператор, и посетитель. |
Объект chat.defaultLayout
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
size |
Object |
{ "width": 380, "height": 460 } |
Описывает размеры окна чата (виджета) в пикселях.
|
Да |
position |
Object |
{ "right": 380, "bottom": 460 } |
Описывает отступы виджета чата от правого нижнего края экрана в пикселях.
|
Да |
Объект chat.visitorFields
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
def |
Object |
Выбор полей посетителя, которые он может указать в начале диалога (вкладка Данные посетителя). Полный перечень возможных полей:
|
Да | |
offlineMode |
Object |
Выбор полей посетителя, которые он может указать при офлайн-обращении. Список возможных полей аналогичен объекту "def" . В данном объекте должно быть как минимум добавлено поле "email" с параметром "presence": "mandatory" . |
Да, если посетитель может создать офлайн-обращение | |
firstQuestion |
null |
deprecated | ||
contactsRequest |
null |
deprecated |
Объект chat.visitorFields.def
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
<имя_поля>.presence |
String |
|
|
Да |
<имя_поля>.validation.type |
String |
"email" |
Тип валидации поля. Может отсутствовать. | Нет |
<имя_поля>.validation.mask |
String |
"+7 (XXX) XXX-XX-XX" |
Маска поля. Позволяет задать собственную валидацию для поля. Может отсутствовать. | Нет |
<имя_поля>.validation.maxLength |
Integer |
64 | Максимальная длина поля. Может отсутствовать. | Нет |
Настройки кнопки (объект button
)
В этом объекте содержится информация о:
-
типе кнопки;
-
визуальной составляющей (отдельно для каждого типа):
-
цвета элементов кнопки;
-
положение кнопки на странице;
-
-
каналах, привязанных к данному размещению (для HTML-кнопки):
-
перечень каналов (их идентификаторы);
-
стили выдвигающихся кнопок каналов.
-
В Редакторе размещений содержатся следующие параметры кнопки:
Параметр | Тип | Варианты/примеры значений | Описание | Обзятельный параметр |
---|---|---|---|---|
kind |
String |
Кнопка может быть одного из следующих типов:"html" - HTML-кнопка"corner" - угловая кнопка"slider" - выдвигающаяся кнопка"simple" - статичная кнопка |
Тип кнопки. Выбирается во вкладке Кнопка. Для каждого типа кнопки в данном разделе предусмотрены свои настройки. |
Да |
slider |
Object |
Настройки для выдвигающейся кнопки ("kind" = "slider" ).Для пользовательской кнопки такого типа параметры будут настраиваться в интерфейсе Панели управления во вкладке Кнопка. |
Да, если используется данный тип кнопки. | |
corner |
Object |
Настройки для угловой кнопки ("kind" = "corner" ) |
Да, если используется данный тип кнопки. | |
html |
Object |
Настройки для HTML-кнопки ("kind" = "html" ) |
Да, если используется данный тип кнопки. | |
simple |
Object |
Настройки для статичной кнопки ("kind" = "simple" ) |
Да, если используется данный тип кнопки. | |
name |
String |
"foval_purple.gif" |
Название изображения кнопки (кроме HTML-кнопки). Для HTML-кнопки значение параметра будет равно "html" |
Да |
channels |
Array of buttons |
[{<br> "id": "bd77td86a18f17b44b8194f48d7db49"<br>},<br>{<br> "id": "e1d146d7ac0a4745d0b88d88469129d8"<br>}] |
Массив кнопок (каналов), которые размещаются в HTML-кнопке. Обязательный параметр - идентификатор канала id (String ) |
Нет |
channel |
Object |
{<br>"default": {<br> "style": {}<br>},<br>"webim":<br> "name": "\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u041a\u0410\u041d\u0410\u041b\u0410",<br> "style": {<br> "image-color": "rgba(34,85,85,1)"<br> }<br>} |
Опции для каждой кнопки, соответствующей каналу. Если у кнопки какого-либо канала отсутствуют стили, то для неё применяются стили из стандартного параметра default . |
Нет |
offlineEnabled |
String |
Возможные значения:"Y" "N" |
Позволяет отображать посетителю офлайн-кнопку. Данный параметр доступен только при подключённой тарифной опции offline_message . По умолчанию Y . |
Нет |
showCallButton |
String |
Возможные значения:"Y" "N" |
Отображение кнопки звонка на заданный телефонный номер. При нажатии на кнопку посетитель будет перенаправлен в приложение вызовов по сотовой связи, куда будет скопирован номер из параметра phoneNumber . |
Нет, в случае отстутствия параметра применяется значение по умолчанию (N ). |
phoneNumber |
String |
+79001234567 |
Номер телефона, который будет передан в приложение вызовов по сотовой связи при нажатии на кнопку звонка. | Нет |
Объект button.slider
содержит в себе следующие параметры:
| Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
| --------------------- | --------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------- |
| position
| String
| Может быть указано одно из следующих значений:"bottom"
"left"
"right"
"top"
| Сторона страницы, из которой выдвигается кнопка. | Да |
| width
| Integer
| 220 | Ширина всей кнопки. | Да |
| height
| Integer
| 105 | Высота всей кнопки. | Да |
| alwaysVisibleWidth
| Integer
| 30 | Ширина участка кнопки, который виден всегда (без наведения на неё курсора). | Да |
| alwaysVisibleHeight
| Integer
| 55 | Высота участка кнопки, который виден всегда (без наведения на неё курсора). | Да |
| left
| String
| 75%
| Сдвиг кнопки от левого края. В случае, если кнопка размещена сбоку, не оказывает никакого эффекта. | Нет |
| top
| String
| 25%
| Сдвиг кнопки от верхнего края. В случае, если кнопка размещена сверху или снизу, не оказывает никакого эффекта. | Нет |
Объект button.corner
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
position |
String |
Список принимаемых значений:
|
Позиция угловой кнопки | Да |
width |
Integer |
90 | Ширина кнопки | Да |
Объект button.html
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
style |
Object |
Описание внешних характеристик HTML-кнопки (вкладка Кнопка). | Да | |
position |
Object |
Параметры перемещения HTML-кнопки относительно экрана. | Да | |
draggable |
String |
Возможные значения:"Y" "N" |
Возможность перемещать HTML-кнопку (чекбокс Возможность перемещения кнопки на вкладке Кнопки). | Нет |
Объект button.html.style
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
background-style |
String |
"rgba(215,25,134,1)" |
Параметр Цвет фона кнопки. | Нет |
border-color |
String |
"rgba(53,68,246,1)" |
Параметр Цвет границы кнопки. | Нет |
image-color |
String |
"rgba(255,255,255,1)" |
Параметр Цвет изображения кнопки. | Нет |
Объект button.html.position
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
top |
String |
Всегда "initial" |
Точка отсчёта для параметра bottom . |
Да |
left |
String |
Всегда "initial" |
Точка отсчёта для параметра right . |
Да |
bottom |
String |
"calc(8% - (60px * 0.08))" |
Параметр Вертикальное положение кнопки на вкладке Кнопка. | Нет |
right |
String |
"calc(14% - (60px * 0.14))" |
Параметр Горизонтальное положение кнопки на вкладке Кнопка. | Нет |
Объект button.simple
содержит в себе следующие параметры:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
width |
Integer |
190 | Ширина статичной кнопки. | Да |
Настройки автоприглашения (объект invitation
)
В данном блоке можно, в первую очередь, запретить или разрешить показ автоприглашения.
Если показ автоприглашений включен (значение false
параметра dontShow
), можно задать и редактировать их настройки:
-
тему и стили автоприглашения;
-
расположение автоприглашения;
-
время показа автоприглашения.
В Редакторе размещений содержатся следующие параметры автоприглашения:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
dontShow |
Boolean |
true |
Определяет, показывается ли автоприглашение. Если значение параметра равно true , то остальные параметры объекта не учитываются. |
Нет |
theme |
String |
static "slider" |
Определяет, статично ли окно автоприглашения или оно перемещается по странице (параметр Вид приглашения на вкладке Приглашение).) | Нет |
position |
String |
"bottom-left" - снизу слева"bottom-right" - снизу справа"top-left" - сверху слева"top-right" - сверху справа"center" - по центру |
Описывает расположение окна автоприглашения (параметр Расположение автоприглашения на вкладке Приглашение). | Нет |
timeout |
Integer |
90000 | Таймаут, в течение которого показывается окно автоприглашения. Указывается в секундах. | Нет |
avatar |
String |
"/images/invitation_avatar/testcom_default.png?1694112478253484" |
Путь к фотографии для автоприглашений. Экранируется после сохранения настроек. | Нет |
bg |
null |
deprecated | ||
fontColor |
null |
deprecated |
Настройки стилей (объект styles
)
Здесь можно задать стили, цвета элементов, заливку, настройки шрифтов и многое другое для элементов, упомянутых выше (кнопки, окна автоприглашения, виджета) и их частей.
При значении параметра null
используется значение по умолчанию.
В Редакторе размещений содержатся следующие настройки стилей:
Параметр | Тип | Варианты/примеры значений | Описание | Обязательный параметр |
---|---|---|---|---|
header |
Object |
{ "background": "rgba(66,171,145,1)", "gradient": "rgba(255,109,109,1)" } |
Задаёт цвета шапки виджета. Тип внутренних параметров - String .
|
Нет |
body |
Object |
{ "background": "rgba(66,171,145,1)" } |
Задаёт цвет фона окна диалога. Тип внутреннего параметра - String .
|
Нет |
button |
Object |
{ "background": "rgba(66,171,145,1)", "gradient": "rgba(255,109,109,1)" } |
Задаёт цвета кнопок. Тип внутренних параметров - String .
|
Нет |
invitation-body |
Object |
{ "background": "rgba(66,171,145,1)", "color": "rgba(255,109,109,1)", "font-size": "16" } |
Задаёт параметры стилей приглашения. Тип внутренних параметров - String .
|
Нет |
invitation-header |
Object |
{ "background": "rgba(66,171,145,1)" } |
Задаёт цвет заголовка приглашения. Тип внутреннего параметра - String .
|
Нет |
messageAgent |
Object |
{ "background": "rgba(66,171,145,1)" } |
Задаёт цвет фона сообщений оператора. Тип внутреннего параметра - String .
|
Нет |
messageVisitor |
Object |
{ "background": "rgba(66,171,145,1)" } |
Задаёт цвет фона сообщений посетителя. Тип внутреннего параметра - String .
|
Нет |
misc |
Object |
{ "fixFlashWmode": true, "newVisitorNotification": true } |
Дополнительные параметры. Deprecated. | Нет |
resources |
Object |
Структура объекта:{ "<ключ_ресурса>": "<перевод>", ... } |
Словарь ресурсов, содержащий переводы только на нужной локали. | Нет |
Прочие настройки (объект misc
)
Данный объект содержит в себе параметры, не относящиеся ни к одному из представленных выше объектов. На текущий момент существует всего один такой параметр.
Параметр | Тип | Варианты/примеры значений | Описание |
---|---|---|---|
fixFlashWmode |
Boolean |
true |
Deprecated. Исправление отображения контента, использующего Adobe Flash Player. |
Ресурсы (объект resources
)
Данный объект содержит в себе ресурсы окна чата.
Параметр | Тип | Варианты/примеры значений | Описание |
---|---|---|---|
leavemessage-descr |
String |
"Для начала диалога введите, пожалуйста, свои контактные данные и вопрос" |
Переопределение текста, отображаемого при запросе контактных данных в начале диалога (опция chat.chatEnterFirstMessage == "Y" ). |
first_question-descr |
String |
"Задайте, пожалуйста, ваш вопрос" |
Переопределение предложения посетителю задать первый вопрос в чат. |
chat-operator-default_title |
String |
"Оператор" |
Переопределение имени оператора по умолчанию. |
chat-window-personal_data_agreement |
String |
"Даю своё согласие на обработку персональных данных" |
Переопределение текста подачи согласия на обработку персональных данных. |
Пример конфигурации размещения
Конфигурация ниже создаётся по умолчанию для каждого нового размещения в Webim версии 10.6.
{
"id": "671c59a9-26c6-438f-bed9-d72c5edf6a13",
"key": "default",
"title": {
"ru": "Размещение по умолчанию",
"en": "Default location",
"he": "מיקום ברירת מחדל",
"bg": "Местоположение по подразбиране",
"ua": "Місцезнаходження за замовчуванням",
"ar": "الموقع الافتراضي",
"es": "Ubicación predeterminada",
"pt": "Localização padrão"
},
"chat": {
"lang": "ru",
"departmentKey": "",
"chatEnterFirstMessage": "",
"chatStartAfterMessage": "",
"surveyTimeout": 240,
"chooseDepartment": "N",
"departmentsSort": "id",
"defaultLayout": {
"size": {
"height": 460,
"width": 380
},
"position": {
"right": 10,
"bottom": 10
}
},
"hintsEnabled": "N",
"visitorFields": {
"def": {
"name": {
"presence": "mandatory",
"validation": {
"maxLength": 64
}
},
"email": {
"presence": "mandatory",
"validation": {
"type": "email"
}
},
"phone": {
"presence": "mandatory",
"validation": {
"mask": "+7 (XXX) XXX-XX-XX"
}
},
"first_custom_field": {
"presence": "none"
},
"second_custom_field": {
"presence": "none"
},
"third_custom_field": {
"presence": "none"
}
},
"firstQuestion": {},
"offlineMode": {
"email": {
"presence": "mandatory",
"validation": {
"type": "email"
}
}
},
"contactsRequest": {}
},
"visitorFieldLabels": {},
"logo": null,
"proposeToRateBeforeClose": "N",
"hideMenu": "N",
"availableDepartmentKeys": [],
"messageDateFormat": "DD.MM",
"showSelectModeMenu": "N",
"hideOfflineDepartments": false
},
"button": {
"kind": "html",
"slider": {
"position": "left",
"top": 150,
"width": 261,
"alwaysVisibleWidth": 30
},
"corner": {
"position": "right-bottom",
"width": null
},
"html": {
"style": {
"background-color": "rgba(51,204,204,1)",
"border-color": "rgba(255,255,255,1)",
"image-color": "rgba(0,0,0,1)"
},
"draggable": "N",
"position": {
"bottom": "0%",
"right": "0%"
}
},
"name": "html",
"offlineEnabled": "Y",
"channels": [],
"channel": {
"default": {
"style": {}
},
"webim": {
"name": "",
"style": {
"background-color": "rgba(51,204,204,1)",
"border-color": "rgba(255,255,255,1)",
"image-color": "rgba(0,0,0,1)"
}
}
},
"showCallButton": "N",
"phoneNumber": "",
"simple": {
"width": null
}
},
"invitation": {
"dontShow": false,
"theme": "static",
"position": "bottom-right",
"timeout": 90000,
"avatar": null
},
"styles": {
"body": {
"background": "rgba(252,252,252,1)"
},
"button": {
"background": "rgba(57,63,107,1)",
"gradient": "rgba(57,63,107,1)"
},
"header": {
"background": "rgba(57,63,107,1)",
"gradient": "rgba(57,63,107,1)"
},
"footer": {
"background": "rgba(252,252,252,1)"
},
"invitation-body": {
"font-size": "20",
"background": "rgba(252,252,252,1)",
"color": "rgba(147,155,186,1)"
},
"invitation-header": {
"background": "rgba(252,252,252,1)"
},
"messageAgent": {
"background": "rgba(227,242,253,1)"
},
"messageVisitor": {
"background": "rgba(237,237,237,1)"
}
},
"misc": {
"fixFlashWmode": false
},
"resources": {
"leavemessage-descr": null,
"first_question-descr": null,
"chat-operator-default_title": null,
"chat-window-personal_data_agreement": null
}
}