Интеграция с 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
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors
Для получения Zendesk JWT выполните следующие шаги:
Валидация JWT
Извлеките JWT из cookie и провалидируйте его с помощью секретного ключа, который находится в Личном кабинете, в разделе ваш вариант авторизации > Общие настройки > Секретный ключ.- go
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 пользователя
- go
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)
Формирование списка полей JWT
Сформируйте список полей для JWT. Описание каждого поля вы можете найти в разделе- go
zendeskClaims := jwt.MapClaims{}
zendeskClaims["name"] = email
zendeskClaims["email"] = email
zendeskClaims["external_id"] = sub
zendeskClaims["iat"] = time.Now().UTC().Unix()
Подпись JWT
Подпишите токен секретным значением вашей учетной записи Zendesk Chat. Вы можете найти его в разделе- go
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))
Аутентификация посетителя в Zendesk Chat
Позволяет добавить информацию о посетителе в Zendesk Chat:
- имя
- email-адрес
- ID
Выполните аутентификацию посетителя в Zendesk Chat с помощью полученного Zendesk JWT. Для этого инициализируйте Web SDK с опцией
- javascript
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.
Работа с посетителем
После успешной аутентификации посетитель отобразится в вашей учетной записи Zendesk Chat в разделеДля работы с группой методов
- Получите данные посетителя.
- Проверьте, что посетитель привязан к вашему варианту авторизации.
Получение данных посетителя
Для выполнения запросаПример запроса
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'
Пример ответа:
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 пользователя.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.