Puoi configurare il tuo widget per autenticare i visitatori a ogni caricamento di pagina usando una nuova API JavaScript e un token JWT.
Questo articolo è destinato ai clienti che usano le seguenti versioni di Chat:
- Zendesk Chat Fase 3 (solo Chat)
Se stai usando una delle versioni seguenti, consulta Abilitazione dei visitatori autenticati nel Web Widget (versione classica):
- Zendesk Chat Fase 4 (solo Chat o con Support)
- Zendesk Chat Fase 3 (con chat nel Web Widget (versione classica))
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
La configurazione del widget di Chat per usare visitatori autenticati comporta 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.
Generazione di un segreto condiviso di Chat
Per configurare il tuo widget per l’autenticazione dei visitatori, devi avere un segreto condiviso. Un segreto condiviso è un’impostazione di sicurezza che può essere generata, copiata e incollata in una comunicazione con il team tecnico o direttamente nel tuo code base in un’unica sessione. Non deve essere inserita in un browser.
Solo gli amministratori Chat possono configurare le impostazioni di autenticazione dei visitatori.
Per generare il segreto condiviso necessario per i visitatori autenticati
- Apri il dashboard Chat e seleziona Impostazioni > Widget.
- Fai clic sulla scheda Sicurezza widget.
- Scorri verso il basso fino alla sezione Autenticazione visitatori e fai clic sul pulsante Genera.
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.
- Specifica HS256 come algoritmo JWT nell’intestazione del tuo payload JWT:
{ "typ":"JWT", "alg":"HS256" }
HS256 è l’acronimo di HMAC SHA 256, un algoritmo di crittografia a 256 bit ideato dalla NSA (National Security Agency, Agenzia per la Sicurezza Nazionale degli Stati Uniti)
Nota: Zendesk non supporta gli algoritmi JWT RS256 ed ES256. - Usa gli esempi di codice qui sotto per trovare un modello adatto alle tue esigenze.
- Usa l’API Javascript $zopim.livechat.authenticate per fornire una funzione che genera un nuovo JWT ogni volta che viene richiamata. Di seguito è riportato un esempio di codice:
Nell’esempio precedente, JWT_TOKEN_ENDPOINT è un endpoint che può essere implementato nel tuo server per ottenere un nuovo JWT.$zopim(function() { $zopim.livechat.authenticate({ jwtFn: function(callback) { fetch('JWT_TOKEN_ENDPOINT').then(function(res) { res.text().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. - Puoi usare l’API $zopim.livechat.clearAll() per disconnettere l’utente dal widget quando si disconnette dall’app/dal sito web host.
Per le app a pagina singola, nota che non è possibile autenticare nuovamente un visitatore dopo l’uso dell’API $zopim.livechat.clearAll(). Per farlo, dovresti ricaricare la pagina.
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
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 widget 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ò consente al visitatore di cambiare computer o browser e di continuare la sessione di chat in corso se, ad esempio, si sposta tra widget di Chat in un browser web per desktop e in un browser web per dispositivi mobili.
Infine, i visitatori autenticati non possono avere la chat in una finestra a comparsa poiché non è possibile verificare la loro identità in tale finestra (in quanto l’esperienza è in hosting nel nostro dominio, zopim.com).
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.