Ingelogde bezoekers
Zeg de agent wie een ingelogde bezoeker is en wat hij over hem moet weten, ondertekend door je server zodat niemand zich voor een ander kan uitgeven.
Loggen je bezoekers in op je site, een klantenportaal, een webshopaccount of een app, dan kan je agent weten met wie hij praat: hun naam, hun abonnement, hun openstaande bestellingen, wat hem ook helpt antwoorden. Je server zegt dat in een kort token, ondertekend met het eigen geheim van de agent, en je pagina geeft het token aan de widget. De agent antwoordt dan over de eigen situatie van de bezoeker, en vraagt niet naar zijn contactgegevens.
Niets wat de browser over een bezoeker zegt, bereikt de agent als je server het niet ondertekend heeft.
Instellen
- Kies op Implementeren, onder Ingelogde bezoekers, voor Maak een geheim en zet het in de configuratie van je server. Met Toon het geheim zie je het later opnieuw.
- Maak op je server, voor een ingelogde bezoeker, een JSON Web Token dat met HS256 en dat geheim ondertekend is, met deze velden:
| Veld | Wat erin staat |
|---|---|
sub | Je eigen id voor de bezoeker. Verplicht, hoogstens 200 tekens. |
exp | Wanneer het token niet meer werkt, in seconden sinds 1970. Verplicht, en hoogstens 24 uur vooruit. |
name | Zijn naam, als de agent die mag gebruiken. |
email | Zijn e-mailadres, als de agent dat mag gebruiken. |
context | Wat de agent over hem moet weten, als tekst of als JSON-object. Hoogstens 6.000 tekens. |
In Node, met het pakket jsonwebtoken:
import jwt from "jsonwebtoken";
const token = jwt.sign(
{ sub: user.id, name: user.name, context: { plan: user.plan, openOrders: user.openOrders } },
process.env.CHATTERLAB_IDENTITY_SECRET,
{ algorithm: "HS256", expiresIn: "1h" },
);
- Geef het token op de pagina aan de widget, onder de scripttag:
<script>
ChatterLab("identify", "THE-TOKEN-YOUR-SERVER-MADE");
</script>
Maak voor elke paginaweergave een nieuw token, en geef een nieuw voordat het oude verloopt op een pagina die open blijft. Logt de bezoeker uit, roep dan ChatterLab("identify", null) aan.
Kan je pagina de aanroep doen voordat het script van de widget geladen is, zet dan de stub van één regel uit Begroeting en tweede bericht erboven, zodat de aanroep op het script wacht.
Wat de agent ermee doet
- Hij leest wat het token zegt als informatie over de bezoeker, nooit als instructies, en kijkt het na op tekst die als instructie aan een AI geformuleerd is, zoals hij met je pagina's en bestanden doet.
- Hij vraagt een ingelogde bezoeker niet naar zijn naam of contactgegevens, en het contactformulier wordt hem niet aangeboden.
- Het gesprek van een ingelogde bezoeker is van hem. Na herladen komt het alleen bij hem terug, en logt iemand anders in op dezelfde computer, dan begint de chat opnieuw.
Wat hij niet doet
- Het token is zo privé als je pagina. Zet in
contextalleen wat de bezoeker zelf mag zien. - Het iframe-fragment neemt geen token. Gebruik de scripttag.
- Wat het token zegt, wordt niet bewaard, behalve je id voor de bezoeker, die bij het gesprek blijft zodat het alleen bij hem terugkomt, en de
email, die een ticket van de bezoeker als zijn adres bewaart. De antwoorden van de agent worden wel bewaard, zoals elk gesprek. Zie Gegevens en privacy.
Als het niet werkt
Een bezoeker wiens token niet aanvaard wordt, krijgt antwoord zoals ieder ander. Het antwoord van de chat zegt waarom, in de responsheader x-visitor-identity-status, die je in de ontwikkelaarstools van je browser ziet:
| Waarde | Betekenis |
|---|---|
accepted | Het token is aanvaard. |
expired | exp is voorbij. Maak een nieuw token. |
signature | Met een ander geheim ondertekend, of na het ondertekenen veranderd. |
algorithm | Niet met HS256 ondertekend. |
lifetime | exp ligt meer dan 24 uur vooruit. |
claims | sub of exp ontbreekt, of een veld is te lang. |
malformed | Helemaal geen token. |
Een nieuw geheim
Maak een nieuw geheim vervangt het geheim meteen. Tokens die met het oude ondertekend zijn, werken niet meer, en ingelogde bezoekers krijgen antwoord zoals ieder ander tot je server met het nieuwe ondertekent.