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

Авторизация

  • Руководство по интеграции

  • Варианты аутентификации

  • Хранилище данных пользователей

  • Безопасность

  • Кастомизация

  • Провайдеры коммуникационных услуг

  • Возможности

  • Инструкции

  • Расширения

  • Юридические настройки

  • Справочники

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

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

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

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

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

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

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

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

    Генерация Zendesk JWT

    Zendesk JWT основан на токене, полученном от сервера Авторизации Иксолла при аутентификации посетителя в вашем варианте авторизации. Вы можете хранить токен в 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-адрес
    • идентификатор
    Информация о посетителе добавляется при генерации 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 пользователя.

    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Оценить страницу
    Оценить страницу
    Что может сделать страницу еще лучше?

    В другой раз

    Спасибо за обратную связь!
    Последнее обновление: 30 декабря 2022

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

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