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:
- Autentique a un usuario en su proyecto de Login mediante una de las siguientes solicitudes:
- Genere un JWT de Zendesk.
- 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:
- curl
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors
Para obtener un JWT de Zendesk:
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.- 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
}
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ónicosub
- ID de usuario
- go
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- go
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- go
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
Utilice un JWT de Zendesk recibido para autenticar a un visitante en Zendesk Chat. Inicialice el kit Web SDK con la opción
- 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)
});
});
}
}
});
El flujo de autenticación de visitantes se describe en las instrucciones y en Web SDK.
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 >Para trabajar con el punto final
- Obtenga los datos del visitante.
- El visitante está vinculado a su proyecto de Login.
Obtener datos de los visitantes
Para ejecutar la solicitudEjemplo de solicitud de
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:
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"
}
Comprobación de la vinculación del visitante al proyecto de Login
Si un visitante está vinculado a su proyecto de Login, el parámetroexternal_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.¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.