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:
- Autentique um usuário em seu projeto Login através de uma das seguintes solicitações:
- Gere um Zendesk JWT.
- 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:
- curl
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors
Para obter um Zendesk 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.- 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
}
Decodificação do JWT
Decodifice um JWT e extraia valores das seguintes declarações dele:email
— um endereço de e-mailsub
— ID do usuário
- go
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- go
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- go
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
Use um Zendesk JWT recebido para autenticar um visitante no Zendesk Chat. Inicialize o Web SDK com a opção
- 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)
});
});
}
}
});
O fluxo de autenticação do visitante é descrito na instrução e no Web SDK.
Trabalhando com visitantes
Após a autenticação bem-sucedida, um visitante será exibido em seu módulo da conta do Zendesk Chat >Para trabalhar com o ponto de extremidade
- Obtenha os dados do visitante.
- O visitante está vinculado ao seu projeto Login.
Obtenção dos dados de visitantes
Para executar a solicitaçãoExemplo de solicitação
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:
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"
}
Verificando vínculo do visitante com o projeto Login
Se um visitante estiver vinculado ao seu projeto Login, o parâmetroexternal_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.Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.