Авторизация
Авторизованная и неавторизованная зоны
Виджет Чата может находиться в одном из двух состояний:
Неавторизованный режим
Время существования сессии пользователя определяется настройками, которые устанавливаются в Редакторе 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
...