Login / Интеграция с Zendesk Chat
  На главную

Login

Интеграция с Zendesk Chat

Как это работает

Интеграция с Zendesk Chat позволяет связать пользователей продукта Login в проекте с посетителями Zendesk Chat, которые оставляют вопросы вашей службе поддержки. На стороне Zendesk Chat используется параметр external_id, которому соответствует ID пользователя в вашем варианте авторизации. При идентификации посетителя как пользователя продукта Авторизации вы можете управлять его аккаунтом через Личный кабинет.

Для кого подходит

Для партнеров, у которых уже подключен продукт Login и есть учетная запись Zendesk Chat.

Как настроить

Для привязки посетителя:

  1. Выполните аутентификацию посетителя в вашем варианте авторизации. Вы можете использовать следующие запросы:
    • Аутентификация по имени пользователя и паролю (JWT и OAuth 2.0).
    • Аутентификация через социальные сети (JWT и OAuth 2.0).
  2. Сгенерируйте Zendesk JWT.
  3. Выполните аутентификацию посетителя в Zendesk Chat.

Генерация Zendesk JWT

Zendesk JWT основан на токене, полученном от сервера Xsolla Login при аутентификации посетителя в вашем варианте авторизации. Вы можете хранить токен в cookie на нужном домене и добавлять его к HTTP-запросу при генерации Zendesk JWT.

При реализации метода вы также можете задать собственный формат ответа.

Ниже приведена упрощенная реализация получения Zendesk JWT на языке программирования Go. Полный код генерации Zendesk JWT можно найти на GitHub.

Перед генерацией JWT установите следующие пакеты:

Copy
Full screen
Small screen
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors

Для получения Zendesk JWT выполните следующие шаги:

  1. Провалидируйте JWT.
  2. Декодируйте JWT.
  3. Сформируйте список полей JWT.
  4. Подпишите JWT.

Валидация JWT

Извлеките JWT из cookie и провалидируйте его с помощью секретного ключа, который находится в Личном кабинете, в разделе ваш вариант авторизации > Общие настройки > Секретный ключ.
Copy
Full screen
Small screen
cookie, err := r.Cookie("token")

token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
  if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
    return nil, errors.New("unexpected signing method")
  }
  return []byte(loginSecret), nil
})

var loginClaims jwt.MapClaims
var ok bool
if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
  writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
  return
}

Декодирование JWT

Декодируйте JWT и извлеките из него значения следующих полей:
  • email — электронная почта
  • sub — ID пользователя
Copy
Full screen
Small screen
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)

Формирование списка полей JWT

Сформируйте список полей для JWT. Описание каждого поля вы можете найти в разделе Creating a JWT token.
Copy
Full screen
Small screen
zendeskClaims := jwt.MapClaims{}
zendeskClaims["name"] = email
zendeskClaims["email"] = email
zendeskClaims["external_id"] = sub
zendeskClaims["iat"] = time.Now().UTC().Unix()

Подпись JWT

Подпишите токен секретным значением вашей учетной записи Zendesk Chat. Вы можете найти его в разделе Chat dashboard > Settings > Widget > вкладка Widget security > Visitor Authentication.
Copy
Full screen
Small screen
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))

Аутентификация посетителя в Zendesk Chat

Позволяет добавить информацию о посетителе в Zendesk Chat:

  • имя
  • email-адрес
  • ID
Информация о посетителе добавляется при генерации Zendesk JWT.

Выполните аутентификацию посетителя в Zendesk Chat с помощью полученного Zendesk JWT. Для этого инициализируйте Web SDK с опцией authentication следующим образом:

Copy
Full screen
Small screen
zChat.init({
  account_key: ACCOUNT_KEY,
  authentication: {
    jwt_fn: function(callback) {
      fetch('https://example.com:8001/generate/token', {
        credentials: "include"
      }).then(function(res) {
        res.text().then(function(body) {
          const jwt = JSON.parse(body).token;
          callback(jwt)
        });
      });
    }
  }
});

Шаги по аутентификации посетителя подробно описаны в инструкции и Web SDK.

Примечание
Социальные сети могут не передавать информацию о email-адресах пользователей. Для запроса email-адреса воспользуйтесь инструкцией.

Работа с посетителем

После успешной аутентификации посетитель отобразится в вашей учетной записи Zendesk Chat в разделе Visitors.

Для работы с группой методов Visitors необходимо получить токен по инструкции. При работе с данными посетителя, привязанного к вашему варианту авторизации:

  1. Получите данные посетителя.
  2. Проверьте, что посетитель привязан к вашему варианту авторизации.

Получение данных посетителя

Для выполнения запроса Show Visitor необходимо получить Visitor ID. Вы можете найти его в вашей учетной записи Zendesk Chat, выбрав нужного посетителя.

Пример запроса Show Visitor:

Copy
Full screen
Small screen

http

  • http
  • curl
GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
Authorization: Bearer <token>
curl --request GET \
  --url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
  --header 'authorization: bearer_token'

Пример ответа:

Copy
Full screen
Small screen

http

  • http
  • curl
HTTP/1.1 200 OK
Content-Type: application/json

{
  "banned": false,
  "notes": "",
  "id": "9855790.xjj3ukxyIhn6j3",
  "email": "email@email.com",
  "phone": "",
  "created": 1586950554,
  "name": "email@email.com",
  "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}
{
  "banned": false,
  "notes": "",
  "id": "9855790.xjj3ukxyIhn6j3",
  "email": "email@email.com",
  "phone": "",
  "created": 1586950554,
  "name": "email@email.com",
  "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}
Если посетитель привязан к вашему варианту авторизации, в полученной информации о посетителе параметр external_id будет соответствовать ID пользователя. Вы можете найти ID пользователя в Личном кабинете, в разделе ваш вариант авторизации > Пользователи > Имя/ID пользователя.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Последнее обновление: 18 сентября 2024

Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

Сообщите о проблеме
Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
Укажите email-адрес, чтобы мы могли связаться с вами
Спасибо за обратную связь!