Se stai usando il Web Widget (versione classica) con il tuo account Chat, puoi configurare il widget per autenticare i visitatori a ogni caricamento di pagina usando l’API JavaScript e il token JWT.
Questo articolo è rivolto ai clienti che usano le seguenti versioni di chat:
- Zendesk Chat Fase 4 – Solo Chat o con Support)
- Zendesk Chat Fase 3 – con l’esperienza Chat integrata nel Web Widget (versione classica)
Se stai usando Zendesk Chat Fase 3 (solo Chat), consulta Abilitazione di visitatori autenticati nel widget di Chat .
Per informazioni su come identificare la versione di Chat in uso, consulta Identificazione della versione dell’account Zendesk Chat.
Questo articolo include i seguenti argomenti:
Panoramica
Puoi configurare il tuo widget per autenticare i visitatori a ogni caricamento di pagina usando una nuova API JavaScript e un token JWT.
Quando configuri il Web Widget (versione classica) per l’uso di visitatori autenticati, ottieni i seguenti vantaggi:
- Una maggiore certezza quanto all’identità del visitatore/cliente con cui tu o i tuoi agenti state parlando.
- Supporto per il traffico in tutti i domini. Se incorpori il widget in più domini o lo colleghi a servizi con hosting esterno (ad esempio Shopify), l’autenticazione del visitatore fa sì che venga considerato come un solo visitatore nei domini della piattaforma Chat, fornendo all’agente un maggiore contesto.
- Supporto per l’identificazione in tutti i dispositivi/browser. Il visitatore può essere considerato come la stessa persona se o quando sceglie di usare un dispositivo o browser diverso quando l’ID personalizzato è specificato nella chiamata di autenticazione.
- Possibilità di presentare al visitatore nel widget le conversazioni chat precedenti
Generazione di un segreto condiviso di Chat
Per generare un segreto condiviso
- Nel dashboard Chat, seleziona la scheda Impostazioni > Widget > Sicurezza del widget.
- Fai clic sul pulsante Genera sotto la sezione Autenticazione visitatore:
Poiché si tratta di un’impostazione di sicurezza, il segreto condiviso può essere generato, copiato e incollato in una comunicazione con il team tecnico o direttamente nel tuo code base in un’unica sessione. Non deve essere inserito in un browser:
La rigenerazione di un nuovo segreto condiviso revoca il token precedente. Se pensi che il segreto condiviso sia stato compromesso, rigenerane uno nuovo. Se devi ruotare le chiavi, pianifica questa operazione quando Chat è offline in quanto la rigenerazione del segreto potrebbe causare la disconnessione dei visitatori dal widget per 5 minuti.
Dopo aver generato il segreto condiviso, usalo per creare un token JWT (consulta Learn more about JWT) che aggiungerai al frammento del Web Widget.
Creazione di un token JWT
Per creare un token JWT e aggiungere il codice al frammento autonomo di Chat
- Crea un payload di dati sul lato server per il token JWT. Sono necessarie le seguenti informazioni:
- name: il nome del cliente.
- email: l’indirizzo email del cliente.
- external_id: stringa alfanumerica che identifica il cliente in modo univoco. Una volta impostato per il cliente, questo valore non può essere modificato. Ti consigliamo di usare l’ID utente univoco del tuo sistema per questo campo, ad esempio user-123456.
- iat: il valore intero del timestamp corrente espresso in secondi. Alcune funzioni in linguaggi specifici, ad esempio Date.now() di JavaScript, restituiscono tale valore in millisecondi, quindi assicurati di convertirlo in secondi. L’autenticazione iat per Chat consente uno sfasamento dell’orologio di due minuti.
- exp: il valore intero del timestamp corrente espresso in secondi. Questo valore indica la scadenza del token JWT. Può essere superiore fino a 7 minuti al valore iat.
- Usa gli esempi di codice seguenti per trovare un modello adatto alle tue esigenze linguistiche.
- Usa l’API JavaScript di zESetting con la chiave `webWidget.authentication.chat.jwtFn` per fornire una funzione che fornisce un nuovo JWT ogni volta che viene invocata. Di seguito è riportato un esempio di codice:
window.zESettings = { webWidget: { authenticate: { chat: { jwtFn: function(callback) { fetch('JWT_TOKEN_ENDPOINT').then(function(res) { res.text(jwt).then(function(jwt) { callback(jwt); }); }); } } } } };
Nota: jwtFn può essere chiamato più volte durante una sessione di chat per ottenere un nuovo JWT al fine di convalidare l’identità del visitatore per tutta la durata della sessione.
Esempi di codice
Il token deve essere generato dinamicamente sul lato server al caricamento della pagina. Trova qui sotto il modello adatto alle tue esigenze. Personalizza il campione come necessario, assicurandoti di sostituire #{details} con le tue informazioni.
Se nessuno di questi esempi soddisfa le tue esigenze, JWT offre un elenco più ampio di librerie JWT da esplorare.
Ruby
Innanzitutto, installa ruby-jwt.
Se stai usando Rubygems:
gem install jwt
Se stai usando Bundler, aggiungi quanto segue al tuo file gem:
gem 'jwt'
Quindi, genera un token usando il segreto condiviso:
require 'jwt'
payload = {
:name => "#{customerName}",
:email => "#{customerEmail}",
:iat => timestamp,
:external_id => "#{externalId}"
}
token = JWT.encode payload, "#{yourSecret}"
NodeJS
Installa jsonwebtoken:
npm install jsonwebtoken --save-dev
Genera quindi un token usando il segreto condiviso:
var jwt = require('jsonwebtoken');
var payload = {
name: '#{customerName}',
email: '#{customerEmail}',
iat: #{timestamp},
external_id: '#{externalId}'
};
var token = jwt.sign(payload, '#{yourSecret}');
Python
Installa python-jose:
pip install python-jose
Genera un token usando il segreto condiviso:
from jose import jwt
var payload = {
'name': '#{customerName}',
'email': '#{customerEmail}',
'iat': #{timestamp},
'external_id': '#{externalId}'
}
token = jwt.encode(payload, '#{yourSecret}'
PHP
Scarica PHP-JWT:
composer require firebase/php-jwt
Genera un token usando il segreto condiviso:
use \Firebase\JWT\JWT;
$payload = {
'name' => '#{customerName}' ,
'email' => '#{customerEmail}',
'iat' => #{timestamp},
'external_id' => '#{externalId}'
};
$token = JWT::encode($payload, '#{yourSecret}');
Elixir
Aggiungi `json_web_token_ex` al tuo file `mix.exs`:
defp deps do
[{:json_web_token, "~> 0.2"}]
end
Genera un token usando il segreto condiviso:
data = %{
name: "#{customerName}",
email: "#{customerEmail}",
iat: "#{timestamp}",
external_id: "#{externalId}"
}
options = %{ key: "#{yourSecret}" }
jwt = JsonWebToken.sign data, options
Esci
Se vuoi disconnettere il visitatore autenticato, consulta le informazioni di riferimento sulle impostazioni del Web Widget (versione classica).
Informazioni sull’esperienza agenti con visitatori autenticati
Alcuni elementi vengono aggiornati nel dashboard Chat quando un agente inizia a chattare con un visitatore autenticato.
Innanzitutto, l’agente può vedere se il visitatore è autenticato grazie al segno di spunta di autenticazione verde visualizzato sull’avatar del visitatore:
L’agente noterà anche che non può modificare il nome o l’indirizzo email del visitatore, dal momento che questi dati provengono dalle informazioni inviate via l’API JavaScript.
Infine, se si blocca un visitatore autenticato, questi non potrà accedere al widget di Chat nei dispositivi e nei browser.
Informazioni sull’esperienza del Web Widget (versione classica) per i visitatori autenticati
Anche i visitatori autenticati avranno un’esperienza leggermente diversa nel widget di Chat. In primo luogo, le loro informazioni sono di sola lettura e quindi non potranno modificarle via il widget o le API JavaScript.
In secondo luogo, le sessioni di chat in corso vengono sincronizzate nei dispositivi quando il visitatore viene autenticato. Ciò offre al visitatore la flessibilità di cambiare computer/browser e continuare la sessione di chat, cosa che oggi non è possibile.
In terzo luogo, i visitatori autenticati non possono avere la chat in una finestra a comparsa perché non è possibile verificarne l’identità tramite la finestra a comparsa (poiché l’esperienza è in hosting sul nostro dominio, zopim.com).
Infine, il visitatore autenticato avrà la possibilità di vedere le proprie conversazioni precedenti nel widget scorrendo verso l’alto nel registro di chat. Per informazioni sul supporto della cronologia delle conversazioni per i visitatori autenticati, fai clic qui.
Avvertenza sulla traduzione: questo articolo è stato tradotto usando un software di traduzione automatizzata per fornire una comprensione di base del contenuto. È stato fatto tutto il possibile per fornire una traduzione accurata, tuttavia Zendesk non garantisce l'accuratezza della traduzione.
Per qualsiasi dubbio sull'accuratezza delle informazioni contenute nell'articolo tradotto, fai riferimento alla versione inglese dell'articolo come versione ufficiale.