Интеграция с Zendesk Chat
Как это работает
Интеграция с Zendesk Chat позволяет связать пользователей продукта Login в проекте с посетителями Zendesk Chat, которые оставляют вопросы вашей службе поддержки. На стороне Zendesk Chat используется параметр external_id
, которому соответствует ID пользователя в вашем варианте авторизации. При идентификации посетителя как пользователя продукта Авторизации вы можете управлять его аккаунтом через Личный кабинет.
Для кого подходит
Для партнеров, у которых уже подключен продукт Login и есть учетная запись Zendesk Chat.
Как настроить
Для привязки посетителя:
- Выполните аутентификацию посетителя в вашем варианте авторизации. Вы можете использовать следующие запросы:
- Сгенерируйте Zendesk JWT.
- Выполните аутентификацию посетителя в Zendesk Chat.
Генерация Zendesk JWT
Zendesk JWT основан на токене, полученном от сервера Xsolla Login при аутентификации посетителя в вашем варианте авторизации. Вы можете хранить токен в cookie на нужном домене и добавлять его к HTTP-запросу при генерации Zendesk JWT.
При реализации метода вы также можете задать собственный формат ответа.
Ниже приведена упрощенная реализация получения Zendesk JWT на языке программирования Go. Полный код генерации Zendesk JWT можно найти на GitHub.
Перед генерацией JWT установите следующие пакеты:
- curl
1go get github.com/dgrijalva/jwt-go
2go get github.com/rs/cors
Для получения Zendesk JWT выполните следующие шаги:
Валидация JWT
Извлеките JWT из cookie и провалидируйте его с помощью секретного ключа, который находится в Личном кабинете, в разделе ваш вариант авторизации > Общие настройки > Секретный ключ.- go
1cookie, err := r.Cookie("token")
2
3token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
4 if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
5 return nil, errors.New("unexpected signing method")
6 }
7 return []byte(loginSecret), nil
8})
9
10var loginClaims jwt.MapClaims
11var ok bool
12if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
13 writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
14 return
15}
Декодирование JWT
Декодируйте JWT и извлеките из него значения следующих полей:email
— электронная почтаsub
— ID пользователя
- go
1var sub, email string
2sub, _ = loginClaims["sub"].(string)
3email, _ = loginClaims["email"].(string)
Формирование списка полей JWT
Сформируйте список полей для JWT. Описание каждого поля вы можете найти в разделе- go
1zendeskClaims := jwt.MapClaims{}
2zendeskClaims["name"] = email
3zendeskClaims["email"] = email
4zendeskClaims["external_id"] = sub
5zendeskClaims["iat"] = time.Now().UTC().Unix()
Подпись JWT
Подпишите токен секретным значением вашей учетной записи Zendesk Chat. Вы можете найти его в разделе- go
1zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
2zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))
Аутентификация посетителя в Zendesk Chat
Позволяет добавить информацию о посетителе в Zendesk Chat:
- имя
- email-адрес
- ID
Выполните аутентификацию посетителя в Zendesk Chat с помощью полученного Zendesk JWT. Для этого инициализируйте Web SDK с опцией
- javascript
1zChat.init({
2 account_key: ACCOUNT_KEY,
3 authentication: {
4 jwt_fn: function(callback) {
5 fetch('https://example.com:8001/generate/token', {
6 credentials: "include"
7 }).then(function(res) {
8 res.text().then(function(body) {
9 const jwt = JSON.parse(body).token;
10 callback(jwt)
11 });
12 });
13 }
14 }
15});
Шаги по аутентификации посетителя подробно описаны в инструкции и Web SDK.
Работа с посетителем
После успешной аутентификации посетитель отобразится в вашей учетной записи Zendesk Chat в разделе
Для работы с группой методов
- Получите данные посетителя.
- Проверьте, что посетитель привязан к вашему варианту авторизации.
Получение данных посетителя
Для выполнения запроса
Пример запроса
http
- http
- curl
1GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
2Authorization: Bearer <token>
1curl --request GET \
2 --url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
3 --header 'authorization: bearer_token'
Пример ответа:
http
- http
- curl
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "banned": false,
6 "notes": "",
7 "id": "9855790.xjj3ukxyIhn6j3",
8 "email": "email@email.com",
9 "phone": "",
10 "created": 1586950554,
11 "name": "email@email.com",
12 "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
13}
1{
2 "banned": false,
3 "notes": "",
4 "id": "9855790.xjj3ukxyIhn6j3",
5 "email": "email@email.com",
6 "phone": "",
7 "created": 1586950554,
8 "name": "email@email.com",
9 "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
10}
Проверка привязки посетителя к варианту авторизации
Если посетитель привязан к вашему варианту авторизации, в полученной информации о посетителе параметрexternal_id
будет соответствовать ID пользователя. Вы можете найти ID пользователя в Личном кабинете, в разделе ваш вариант авторизации > Пользователи > Имя/ID пользователя.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.