Login / Integración con Zendesk Chat
  Volver a Documentos

Login

Integración con Zendesk Chat

Cómo funciona

La integración con Zendesk Chat le permite vincular usuarios del producto Xsolla Login a su proyecto con los usuarios de Zendesk Chat que envían preguntas a su equipo de asistencia. El parámetro external_id que se usa en el lado de Zendesk se corresponde con el ID de usuario en su proyecto de Login. Si identificó a un visitante como usuario de Xsolla Login, tendrá la opción de administrar su cuenta mediante Cuenta del editor.

¿Quién puede utilizarlo?

Socios que ya han integrado Login y tienen una cuenta de Zendesk Chat.

Cómo conseguirlo

Para vincular a un visitante:

  1. Autentique a un usuario en su proyecto de Login mediante una de las siguientes solicitudes:
    • Autenticación mediante nombre de usuario y contraseña (JWT y OAuth 2.0).
    • Autenticación a través de redes sociales (JWT y OAuth 2.0).
  2. Genere un JWT de Zendesk.
  3. Autentique a un visitante en Zendesk Chat.

Generación de un JWT de Zendesk

El JWT de Zendesk se basa en un token recibido del servidor de Xsolla Login al autenticar a un usuario en su proyecto Login. Puede almacenar un token en los archivos de cookies en un dominio requerido y agregarlo a una solicitud HTTP al generar un JWT de Zendesk.

También puede establecer su propio formato de respuesta al implementar la llamada.

A continuación se muestra una versión simplificada de un flujo de obtención de JWT de Zendesk basado en Go. El código completo de generación de JWT de Zendesk se encuentra en GitHub.

Instale los siguientes paquetes antes de generar un JWT:

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

Para obtener un JWT de Zendesk:

  1. Valide un JWT.
  2. Decodifique un JWT.
  3. Cree una lista de notificaciones de JWT.
  4. Firme un JWT.

Validación de un JWT

Extraiga un JWT de los archivos de cookies y valídelo mediante una clave secreta que encontrará en Cuenta del editor > tu proyecto 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
}

Descodificación de un JWT

Decodifique un JWT y extraiga de él los valores de las siguientes notificaciones:
  • email - una dirección de correo electrónico
  • sub - ID de usuario
Copy
Full screen
Small screen
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)

Creación de la lista de notificaciones de JWT

Cree una lista de notificaciones para un JWT. Puede encontrar descripciones de cada notificación en el 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()

Firma de un JWT

Firme un token con una clave secreta de su cuenta de Zendesk Chat. Puede encontrarla en Chat dashboard > Settings > Widget > Widget security tab > Visitor Authentication.
Copy
Full screen
Small screen
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))

Autenticación del visitante de Zendesk Chat

Esto permite agregar los siguientes datos del visitante a Zendesk Chat:

  • nombre
  • dirección de correo electrónico
  • identificador
Los datos del visitante se agregan al generar un JWT de Zendesk.

Utilice un JWT de Zendesk recibido para autenticar a un visitante en Zendesk Chat. Inicialice el kit Web SDK con la opción authentication de la siguiente manera:

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

El flujo de autenticación de visitantes se describe en las instrucciones y en Web SDK.

Nota
Es posible que las redes sociales no transmitan datos sobre las direcciones de correo electrónico de los usuarios. Siga las instrucciones para solicitar una dirección de correo electrónico.

Trabajar con los visitantes

Después de realizar correctamente la autenticación, un visitante aparecerá en su módulo de la cuenta de Zendesk Chat > Visitors.

Para trabajar con el punto final Visitors, necesitará obtener un token (instrucciones). Cuando trabaje con los datos de un visitante vinculado a su proyecto de Login:

  1. Obtenga los datos del visitante.
  2. El visitante está vinculado a su proyecto de Login.

Obtener datos de los visitantes

Para ejecutar la solicitud Show Visitor, debe obtener Visitor ID. Puede encontrarlo en su cuenta de Zendesk Chat seleccionando un visitante específico.

Ejemplo de solicitud de 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'

Ejemplo de respuesta:

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"
}
Si un visitante está vinculado a su proyecto de Login, el parámetro external_id de los datos recibidos se corresponderá con el ID de usuario. Puede encontrar el ID de usuario en Cuenta del editor > tu proyecto de Login > Users > Username/ID.
¿Te ha resultado útil este artículo?
¡Gracias!
¿Hay algo en lo que podamos mejorar? Mensaje
Lo sentimos
Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
¡Gracias por tu mensaje!
Nos ayudará a mejorar tu experiencia.
Última actualización: 18 de Septiembre de 2024

¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.

Informar de un problema
Nos esforzamos por ofrecer contenido de calidad. Tus comentarios nos ayudan a mejorar.
Déjanos tu correo electrónico para que te podamos responder
¡Gracias por tu mensaje!