Login / Integração com o Zendesk Chat
  Voltar aos Documentos

Login

Integração com o Zendesk Chat

Como funciona

A integração com o Zendesk Chat permite vincular usuários do produto Xsolla Login ao seu projeto com os visitantes do Zendesk Chat que enviam perguntas à sua equipe de suporte. O parâmetro external_id usado no lado do Zendesk corresponde ao ID do usuário em seu projeto Login. Se você identificou um visitante como um usuário do Xsolla Login, você terá a capacidade de gerenciar a conta dele por meio da Conta de Distribuidor.

Quem pode usar

Parceiros que já integraram o Login e têm uma conta do Zendesk Chat.

Como obtê-lo

Para vincular um visitante:

  1. Autentique um usuário em seu projeto Login através de uma das seguintes solicitações:
  2. Gere um Zendesk JWT.
  3. Autentique um visitante no Zendesk Chat.

Geração do Zendesk JWT

O Zendesk JWT é baseado em um token recebido do servidor Xsolla Login ao autenticar um usuário em seu projeto de login. Você pode armazenar um token em arquivos de cookie em um domínio necessário e adicioná-lo a uma solicitação HTTP ao gerar um Zendesk JWT.

Você também pode definir seu próprio formato de resposta ao implementar a chamada.

Veja abaixo uma versão simplificada de um Zendesk JWT obtendo fluxo baseado no Go. O código completo de geração do Zendesk JWT pode ser encontrado no GitHub.

Instale os seguintes pacotes antes de gerar um JWT:

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

Para obter um Zendesk JWT:

  1. Valide um JWT.
  2. Decodifique um JWT.
  3. Forme uma lista de declarações JWT.
  4. Assine um JWT.

Validação de um JWT

Extraia um JWT de arquivos de cookies e valide-o por uma chave secreta encontrada na Conta de Distribuidor > Seu projeto de login > General settings > Secret key.
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
}

Decodificação do JWT

Decodifice um JWT e extraia valores das seguintes declarações dele:
  • email — um endereço de e-mail
  • sub — ID do usuário
Copy
Full screen
Small screen
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)

Formação da lista de reivindicações JWT

Forme uma lista de reivindicações para um JWT. Você pode encontrar descrições de cada reivindicação no módulo 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()

Assinatura de um JWT

Assine um token com uma chave secreta da sua conta do Zendesk Chat. Você pode encontrá-la em Chat dashboard > Settings > Widget > aba Widget security > Visitor Authentication.
Copy
Full screen
Small screen
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))

Autenticação de visitantes no Zendesk Chat

Isso permite adicionar os seguintes dados de visitantes ao Zendesk Chat:

  • nome
  • endereço de e-mail
  • identificador
Os dados de visitantes são adicionados durante a geração de um Zendesk JWT.

Use um Zendesk JWT recebido para autenticar um visitante no Zendesk Chat. Inicialize o Web SDK com a opção authentication da seguinte maneira:

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)
        });
      });
    }
  }
});

O fluxo de autenticação do visitante é descrito na instrução e no Web SDK.

Observação
As redes sociais não podem passar dados sobre endereços de e-mail de usuários. Siga as instruções para solicitar um endereço de e-mail.

Trabalhando com visitantes

Após a autenticação bem-sucedida, um visitante será exibido em seu módulo da conta do Zendesk Chat > Visitors.

Para trabalhar com o ponto de extremidade Visitors, você precisará obter um token (instrução). Ao trabalhar com dados de um visitante que está vinculado ao seu projeto de login:

  1. Obtenha os dados do visitante.
  2. O visitante está vinculado ao seu projeto Login.

Obtenção dos dados de visitantes

Para executar a solicitação Show Visitor, você deve obter Visitor ID. Você pode encontrá-lo em sua conta do Zendesk Chat escolhendo um visitante necessário.

Exemplo de solicitação 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'

Exemplo da resposta:

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"
}
Se um visitante estiver vinculado ao seu projeto Login, o parâmetro external_id nos dados recebidos corresponderá ao ID do usuário. Você pode encontrar o ID do usuário na Conta de Distribuidor > Seu projeto de login > Users > Username/ID.
Este artigo foi útil?
Obrigado!
Podemos melhorar alguma coisa? Mensagem
Que pena ouvir isso
Explique porque este artigo não foi útil para você. Mensagem
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.
Avalie esta página
Avalie esta página
Podemos melhorar alguma coisa?

Não quero responder

Obrigado pelo seu feedback!
Última atualização: 22 de Janeiro de 2024

Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.

Relatar um problema
Nós sempre avaliamos nossos conteúdos. Seu feedback nos ajuda a melhorá-los.
Forneça um e-mail para que possamos responder
Obrigado pelo seu feedback!