Données clients dans le chat (commandes, livraison, factures)
Laissez l’assistant IA répondre aux questions des clients connectés sur leurs propres commandes, grâce à une identité signée, des champs précisément définis et des données récupérées dans votre boutique ou importées.
Avec les données clients, l’assistant IA répond à des questions comme « Où est mon colis ? », « Ma facture est-elle payée ? » ou « Que contenait ma dernière commande ? », pour les clients connectés et uniquement sur leurs propres données. Cette fonction est disponible avec les forfaits payants.
Comment les données sont protégées
- Le navigateur ne prouve rien. Aucun numéro de commande ou de facture, aucune adresse e-mail, ni aucun élément affiché sur la page ou écrit dans le chat ne donne accès aux données. Seule une identité signée par votre serveur détermine qui peut voir quelles données.
- Un numéro n’est qu’un filtre. Si un client indique un numéro de commande, la recherche porte uniquement sur ses propres commandes. Le numéro d’un autre client ne renvoie rien.
- Vous décidez de chaque champ. L’assistant reçoit uniquement les champs que vous autorisez. Tout le reste est écarté à la réception, même si votre boutique l’envoie.
- Aucun stockage chez nous (récupération). Avec la récupération, reactive.chat interroge votre boutique pour chaque question et ne stocke pas sa réponse. Avec l’import, les données sont stockées chiffrées chez nous et supprimées au plus tard après 90 jours.
- Uniquement nos propres machines. Les données sont transmises uniquement à nos propres serveurs IA (ou à votre propre nœud IA), jamais à un service IA tiers.
Prérequis : vérification d’identité
L’assistant utilise les données clients uniquement pour les visiteurs dont votre serveur a confirmé l’identité. Configurez un secret dans votre compte sous Projet → Vérification d’identité. Il reste sur votre serveur et ne doit jamais se trouver dans le navigateur ou dans le code d’intégration.
Pour chaque client connecté, votre serveur calcule un hachage avec une date d’expiration (au maximum 24 heures plus tard) et le transmet au widget :
$userId = (string) $customer->id;
$exp = time() + 3600;
$hash = hash_hmac('sha256', $userId . '.' . $exp, getenv('RC_IDENT_SECRET'));
echo "<script>ReactiveChat('identify', { userId: " . json_encode($userId)
. ", userHash: " . json_encode($hash) . ", exp: " . $exp . " });</script>";
const crypto = require('crypto');
const exp = Math.floor(Date.now() / 1000) + 3600;
const hash = crypto.createHmac('sha256', process.env.RC_IDENT_SECRET)
.update(String(user.id) + '.' + exp).digest('hex');
// in the template: ReactiveChat('identify', { userId: '<id>', userHash: '<hash>', exp: <exp> });
Un hachage sans exp confirme toujours le visiteur (par exemple pour l’historique des conversations), mais ne suffit pas pour les données clients. Lorsque vous renouvelez le secret, l’ancien reste valable pendant 24 heures.
Signer aussi l’e-mail (pour la prise de rendez-vous et les intégrations basées sur l’e-mail). Un champ email à côté du hachage n’est considérée comme confirmée que si elle fait partie de la signature : userHash = HMAC-SHA256(secret, userId + "." + exp + "." + email) – l’adresse exactement telle que vous la transmettez à identify. Sinon, le visiteur reste connecté, mais l’assistant ne réserve aucun rendez-vous pour cette adresse et les intégrations ne l’utilisent pas pour une recherche. La forme existante userId + "." + exp continue de fonctionner sans modification.
Récupération, import ou les deux
Sous Projet → Données clients, vous choisissez la provenance des données de l’assistant :
- Récupération depuis votre boutique – reactive.chat appelle votre point de terminaison pour chaque question pertinente. Les données restent chez vous. Recommandé.
- Import via l’API – votre boutique envoie les commandes d’un client à reactive.chat. Utile si votre boutique ne peut pas proposer de point de terminaison.
- Les deux – d’abord les données importées ; si rien n’est trouvé, la récupération.
Quelles données l’assistant peut recevoir
Vous autorisez chaque champ individuellement. Les réglages par défaut couvrent les questions habituelles :
bestellung.nummer– numéro de commande. Par défaut : toujours activé. Utilité : obligatoire – aucune commande sans numérobestellung.datum– date de commande (YYYY-MM-DD). Par défaut : activé. Utilité : « Quand ai-je passé commande ? »bestellung.status– statut de la commande sous forme de texte. Par défaut : activé. Utilité : « Ma commande a-t-elle été expédiée ? »bestellung.summe– montant total. Par défaut : activé. Utilité : « Combien ai-je payé ? »bestellung.waehrung– devise (ISO, par ex. EUR). Par défaut : activé. Utilité : uniquement avec le totalpositionen.name– nom de l’article. Par défaut : activé. Utilité : « Que contenait la commande ? »positionen.menge– quantité par article. Par défaut : activé. Utilité : « Combien en ai-je commandé ? »versand.dienst– transporteur. Par défaut : activé. Utilité : « Qui livre le colis ? »versand.sendungsnummer– numéro de suivi. Par défaut : activé. Utilité : « Où est mon colis ? »versand.status– statut de livraison sous forme de texte. Par défaut : activé. Utilité : « Est-il en route ? »versand.ort– ville de l’adresse de livraison. Par défaut : désactivé. Utilité : « Où mon colis sera-t-il livré ? »versand.plz– code postal de l’adresse de livraison. Par défaut : désactivé. Utilité : comme ci-dessusrechnung.nummer– numéro de facture. Par défaut : activé. Utilité : « Quelle facture correspond à cette commande ? »rechnung.status– statut du paiement sous forme de texte. Par défaut : activé. Utilité : « Ma facture est-elle payée ? »rechnung.faellig_am– date d’échéance. Par défaut : activé. Utilité : « Quand dois-je payer ? »
Un champ désactivé n’atteint jamais l’assistant : il est écarté lors de la récupération et n’est pas stocké lors de l’import. La ville et le code postal nécessitent volontairement une autorisation explicite ; la rue et le nom restent toujours exclus.
Ce qui n’est jamais transmis
Ces données ne peuvent pas être autorisées. Si votre boutique les envoie, elles sont écartées :
- rue, numéro et lignes d’adresse supplémentaires
- nom du destinataire ou du client
- adresse e-mail et numéro de téléphone
- IBAN, BIC, numéro de compte et données de carte
- date de naissance
- mots de passe, jetons et clés d’accès
- numéros fiscaux et numéros de pièces d’identité
Limites
Au maximum 10 commandes par réponse, 20 articles par commande, 200 caractères par texte et 16 kB pour l’ensemble de la réponse. Les champs inconnus sont écartés sans erreur.
Le point de terminaison de récupération
reactive.chat appelle votre point de terminaison avec POST :
POST https://shop.your-domain.com/rc-customer-data
Content-Type: application/json
X-RC-Zeit: 1791196400
X-RC-Signatur: <hex(HMAC_SHA256(endpoint secret, X-RC-Zeit + "." + body))>
{"user_id":"4711","anliegen":"bestellung","referenz":"2026-0815","sprache":"en","nonce":"..."}
user_idest l’identifiant client confirmé par la vérification d’identité, jamais une information issue du chat.anliegenvautbestellung(commande),lieferung(livraison),rechnung(facture),retoure(retour) outestpour le bouton de test.referenzest un numéro mentionné par le client, ou une valeur vide. Recherchez-le uniquement parmi les commandes de ceuser_id.
Votre point de terminaison doit :
- vérifier la signature (comparaison en temps constant) et rejeter les requêtes dont
X-RC-Zeitprésente un écart de plus de 5 minutes, - renvoyer uniquement les données du
user_idfourni, - être accessible via
httpssur le port 443 à une adresse publique, sans redirection, - répondre en moins de 3 secondes.
Réponse :
{
"bestellungen": [
{
"nummer": "2026-0815", "datum": "2026-09-28", "status": "shipped",
"summe": "49.90", "waehrung": "EUR",
"positionen": [ { "name": "Balance bike blue", "menge": 1 } ],
"versand": { "dienst": "DHL", "sendungsnummer": "00340434...", "status": "out for delivery" },
"rechnung": { "nummer": "R-2026-1201", "status": "paid", "faellig_am": "2026-10-12" }
}
]
}
Un exemple PHP complet est disponible dans la documentation développeur (kundendaten-referenz-endpunkt.php).
Avec Tester la connexion, reactive.chat appelle votre point de terminaison avec le user_id rc-test et le type de requête test, puis affiche le résultat. Renvoyez une liste vide ou une commande d’exemple pour cet appel.
Import via l’API
Avec une clé d’API disposant de l’autorisation kundendaten:schreiben :
PUT https://reactive.chat/v1/kundendaten/4711?project_id=123
Authorization: Bearer <API key>
Content-Type: application/json
{"bestellungen":[ ... as above ... ]}
project_id est le numéro de votre projet ; si votre espace de travail ne contient qu’un projet, vous pouvez l’omettre. Un PUT remplace toutes les commandes de cet identifiant client (au maximum 50). DELETE /v1/kundendaten/4711?project_id=123 les supprime. Les données importées sont stockées chiffrées chez nous et supprimées 90 jours après le dernier import ; envoyez donc les modifications en continu, par exemple à chaque changement de statut.
Visiteurs non connectés
Si une personne sans identité confirmée pose une question sur une commande, l’assistant ne récupère rien. Il affiche à la place un message que vous configurez sous Projet → Données clients : un texte par langue et, éventuellement, un lien de connexion. Il peut aussi transférer la question à votre équipe.
Ce qui est stocké
- Récupération : la réponse de votre boutique est utilisée uniquement pour cette réponse de l’assistant et n’est stockée ni dans la conversation ni dans la base de connaissances.
- Import : chiffré, au maximum 90 jours, supprimé avec le projet.
- La réponse de l’assistant apparaît dans l’historique de la conversation comme tout message. Votre équipe la voit dans le tableau de bord.
Dépannage
- L’assistant demande au client de se connecter alors qu’il est connecté : si
expest absent, a expiré ou si le hachage ne correspond pas, le visiteur n’est pas considéré comme confirmé. Vérifiez le secret, l’ordreuserId + "." + expet l’horloge de votre serveur. - Le bouton de test signale « adresse non autorisée » : le point de terminaison doit être accessible via
httpsà une adresse publique ; les adresses internes et les autres ports sont rejetés. - Votre système signale une erreur de signature : la chaîne signée est
X-RC-Zeit + "." + bodyavec le secret du point de terminaison, exactement le corps reçu, sans le réencoder. - Un champ manque dans la réponse de l’assistant : est-il autorisé sous « Quelles données l’assistant peut recevoir » ?
Pour approfondir dans la documentation
En détail : Point de terminaison des données clients. Retrouvez tous les chapitres dans la documentation.
Azken eguneratzea: