Перейти к основному содержимому
Версия: 6.30.2

Авторизация

Авторизованная и неавторизованная зоны

Виджет Чата может находиться в одном из двух состояний:

Неавторизованный режим

Время существования сессии пользователя определяется настройками, которые устанавливаются в Редакторе settings.json в объекте webchat/backend/unauthorizedHistory. Пример таких настроек:

{
"cookie": {"Max-Age": 15552000}
}

Где Max-Age - время хранения истории для посетителя сайта в секундах.

Идентификатор сессии хранится в cookie, параметры хранения задаются в объекте webchat/backend/unauthorizedHistory/cookie, где ключ соответствует спецификациям директив cookie.

Авторизованный режим

Этот режим можно задействовать для авторизованого пользователя сайта, передав в Чат идентификатор, уникальный для каждого пользователя - для создания связи "клиент в АРМ"-"пользователь сайта". Сессия такого пользователя не привязана к текущей вкладке - авторизованный на сайте пользователь сможет получить историю переписки в любой вкладке, где будет открыт сайт с Чатом. Для передачи в Чат уникального идентификатора авторизованного пользователя, нужно создать в глобальном Javascript-объекте window свойство, имя которого задается в Редакторе settings.json как значение параметра clientId. Сделать это нужно до кода инициализации Чата. Строка в Редакторе settings.json, в самом простом виде, может выглядеть так:

"clientId": "clientId",
осторожно

clientId должен быть уникальным, постоянным и устойчивым к подбору — избегайте использования телефонов, email и других персональных данных. Если без них не обойтись, строго применяйте RSA-шифрование. При возникновении вопросов обращайтесь на support@edna.ru

Т.е., если вы решили поместить уникальный идентификатор пользователя в свойство объекта window, которое вы решили назвать clientId, как в случае выше, то перед кодом инициализации следует вставить строку

window.clientId = 'идентификатор_пользователя';

Таким же образом имеется возможность передать дополнительные клиентские данные. Эти данные будут отображаться в общей информации о клиенте в АРМ оператора. Установите в параметре clientData settings.json имя свойства, в котором будете передавать данные клиента. Обычно название оставляют таким же - clientData, как в примере ниже:

"clientData": "clientData",

Затем в глобальном Javascript-объекте window задайте значение этого свойства. Для этого перед кодом инициализации добавьте строку

window.clientData = '<клиентские данные>';

где <клиентские данные> - JSON-объект, преобразованный в строку. Как видим, в примере данные передаются в window.clientData, так как именно clientData был задан в качестве имени параметра.

Пример передачи клиентских данных, состоящих из name, phone, email, personal_manager и customField:

window.clientData =
'{"name":"Name Surname","phone":"+7-999-999-99-99","email":"e@mail.com","personal_manager":"login","customField":"customValue"}';

Примечание: Примеры в SDK содержат все необходимые настройки.

Расширенная авторизация (опционально)

При необходимости, возможно передавать дополнительные данные в запросах на сервер. За эти настройки отвечает секция параметров extendedAuth в Редакторе settings.json.

Параметр dataKey - строка, которая содержит имя свойства в глобальном Javascript-объекте window, в котором хранится объект с расширенными данными для авторизации. Необязательный параметр, значение по умоланию extendedAuth

window.extendedAuth = <данные в формате JSON>;

Например:

{
"custom-property": "value for custom header",
"token": "some token value",
"type": "token type"
}

Параметр cookie.enabled - включение и отключение режима расширенной авторизации для HTTP(S)-запросов и Websocket-подключений посредством передачи cookie (boolean) Параметр cookie.options - дополнительные атрибуты заголовков cookie (object) Параметр ws.enabled - включение и отключение режима расширенной авторизации для Websocket-подключений (boolean) Параметр ws.dataMap - данные для авторизации Websocket-соединения (object) Параметр http.enabled - включение и отключение режима расширенной авторизации для HTTP(S)-запросов (boolean) Параметр http.headersMap - объект, ключи которого это имена заголовоков, передаваемых в HTTP(S)-запросах, а их значения - это имена свойств из объекта с расширенными данными. Таким способом можно настроить передачу любого количества произвольных заголовков.

Пример:

"extendedAuth": {
"dataKey": "extendedAuth",
"http": {
"enabled": true,
"headersMap": {
"Header-Name": "custom-property",
"X-Auth-Token": "token",
"X-Token-Type": "type"
}
}
}

Пример запроса с дополнительными заголовками:

GET /some/backend/url
Host: example.com
Content-Type: application/json
Header-Name: value for custom header
X-Auth-Token: some token value
X-Token-Type: token type
...