Dati dei clienti nella chat (ordini, spedizioni, fatture)
Consentire all’assistente IA di rispondere ai clienti autenticati sui propri ordini, in sicurezza tramite identità firmata, con campi definiti con precisione, consultati nel negozio o importati.
Con i dati dei clienti, l’assistente IA risponde a domande come «Dov’è il mio pacco?», «La mia fattura è stata pagata?» o «Che cosa c’era nel mio ultimo ordine?», per clienti autenticati e solo sui propri dati. La funzione è disponibile nei piani a pagamento.
Come vengono protetti i dati
- Il browser non dimostra nulla. Nessun numero d’ordine o fattura, indirizzo e-mail o dato mostrato sulla pagina o scritto nella chat concede accesso. Chi può vedere quali dati è deciso esclusivamente da un’identità firmata dal Suo server.
- Un numero è solo un filtro. Se un cliente indica un numero d’ordine, viene cercato solo tra i suoi ordini. Il numero di un’altra persona non restituisce nulla.
- Decide Lei ogni campo. L’assistente riceve solo i campi abilitati. Tutto il resto viene scartato all’arrivo, anche se il negozio lo invia.
- Nessun archivio dati presso di noi (consultazione). In modalità consultazione, reactive.chat interroga il negozio per ogni domanda e non conserva la risposta. Con l’importazione, i dati sono conservati cifrati da noi ed eliminati al più tardi dopo 90 giorni.
- Solo macchine proprie. I dati vanno solo ai nostri server IA (o al Suo nodo IA), mai a un servizio IA di terzi.
Prerequisito: verifica dell’identità
L’assistente usa i dati dei clienti solo per visitatori la cui identità è stata confermata dal Suo server. Configuri un segreto in Progetto → Verifica dell’identità nell’account. Resta sul Suo server e non deve mai trovarsi nel browser o nel codice di incorporamento.
Per ogni cliente autenticato, il server calcola un hash con scadenza (al massimo 24 ore nel futuro) e lo passa al 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 hash senza exp conferma comunque il visitatore (ad esempio per la cronologia), ma non basta per i dati dei clienti. Quando rinnova il segreto, quello precedente resta valido per 24 ore.
Firmare anche l’e-mail (per prenotazioni e integrazioni basate sull’e-mail). Un campo email accanto all’hash è confermato solo se fa parte della firma: userHash = HMAC-SHA256(secret, userId + "." + exp + "." + email), con l’indirizzo esattamente come lo passa a identify. Senza questa firma, il visitatore resta autenticato, ma l’assistente non prenota appuntamenti per quell’indirizzo e le integrazioni non lo cercano. La forma esistente userId + "." + exp continua a funzionare invariata.
Consultazione, importazione o entrambe
In Progetto → Dati dei clienti sceglie da dove l’assistente ottiene i dati:
- Consulta dal Suo negozio: reactive.chat chiama il Suo endpoint per ogni domanda pertinente. I dati restano presso di Lei. Consigliato.
- Importa tramite API: il negozio invia a reactive.chat gli ordini di un cliente. Utile se non può offrire un endpoint.
- Entrambe: prima i dati importati; se non si trova nulla, la consultazione.
Quali dati può ricevere l’assistente
Abilita ogni campo singolarmente. I valori predefiniti coprono le domande abituali:
bestellung.nummer: numero d’ordine. Predefinito: sempre attivo. Uso: obbligatorio, nessun ordine senza numerobestellung.datum: data dell’ordine (YYYY-MM-DD). Predefinito: attivo. Uso: «Quando ho ordinato?»bestellung.status: stato dell’ordine come testo. Predefinito: attivo. Uso: «Il mio ordine è stato spedito?»bestellung.summe: importo totale. Predefinito: attivo. Uso: «Quanto ho pagato?»bestellung.waehrung: valuta (ISO, ad esempio EUR). Predefinito: attivo. Uso: solo insieme al totalepositionen.name: nome dell’articolo. Predefinito: attivo. Uso: «Che cosa c’era nell’ordine?»positionen.menge: quantità per articolo. Predefinito: attivo. Uso: «Quanti ne ho ordinati?»versand.dienst: corriere. Predefinito: attivo. Uso: «Chi consegna il pacco?»versand.sendungsnummer: numero di tracciamento. Predefinito: attivo. Uso: «Dov’è il mio pacco?»versand.status: stato della spedizione come testo. Predefinito: attivo. Uso: «È in viaggio?»versand.ort: città dell’indirizzo di consegna. Predefinito: disattivato. Uso: «Dove viene spedito il mio pacco?»versand.plz: codice postale dell’indirizzo di consegna. Predefinito: disattivato. Uso: come soprarechnung.nummer: numero di fattura. Predefinito: attivo. Uso: «Quale fattura gli corrisponde?»rechnung.status: stato del pagamento come testo. Predefinito: attivo. Uso: «La mia fattura è stata pagata?»rechnung.faellig_am: data di scadenza. Predefinito: attivo. Uso: «Quando devo pagare?»
Un campo disattivato non raggiunge mai l’assistente: nella consultazione viene scartato, nell’importazione non viene nemmeno memorizzato. Città e codice postale sono possibili solo se li abilita esplicitamente; via e nome restano sempre esclusi.
Che cosa non viene mai trasmesso
Questi dati non possono essere abilitati. Se il negozio li invia, vengono scartati:
- via, numero civico e ulteriori righe dell’indirizzo
- nome del destinatario o cliente
- indirizzo e-mail e numero di telefono
- IBAN, BIC, numero di conto e dati delle carte
- data di nascita
- password, token e chiavi di accesso
- numeri fiscali e di documenti d’identità
Limiti
Massimo 10 ordini per risposta, 20 articoli per ordine, testi di massimo 200 caratteri, risposta completa di massimo 16 kB. I campi sconosciuti vengono scartati senza errore.
L’endpoint di consultazione
reactive.chat chiama il Suo endpoint con 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_idè l’ID cliente confermato dalla verifica dell’identità, mai un dato preso dalla chat.anliegenèbestellung(ordine),lieferung(consegna),rechnung(fattura),retoure(reso) otestper il pulsante di test.referenzè un numero citato dal cliente oppure vuoto. Lo cerchi solo tra gli ordini di questouser_id.
Il Suo endpoint deve:
- verificare la firma (confronto a tempo costante) e rifiutare richieste il cui
X-RC-Zeitdifferisca di oltre 5 minuti, - restituire solo dati dello
user_idindicato, - essere raggiungibile tramite
httpssulla porta 443 a un indirizzo pubblico, senza reindirizzamenti, - rispondere entro 3 secondi.
Risposta:
{
"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 esempio PHP completo è disponibile nella documentazione per sviluppatori (kundendaten-referenz-endpunkt.php).
Con Verifica connessione, reactive.chat chiama l’endpoint con user_id rc-test e tipo di richiesta test e mostra l’esito. Restituisca una lista vuota o un ordine di esempio.
Importazione tramite API
Con una chiave API che ha il permesso 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 è il numero del progetto; se lo spazio di lavoro ha un solo progetto, può ometterlo. Un PUT sostituisce tutti gli ordini di questo ID cliente (massimo 50). DELETE /v1/kundendaten/4711?project_id=123 li rimuove. I dati importati vengono conservati cifrati da noi ed eliminati 90 giorni dopo l’ultima importazione: invii quindi i cambiamenti continuamente, ad esempio a ogni modifica dello stato.
Visitatori non autenticati
Se qualcuno senza identità confermata chiede informazioni su un ordine, l’assistente non consulta nulla. Mostra invece un avviso configurato in Progetto → Dati dei clienti: un testo per lingua e, facoltativamente, un link di accesso. In alternativa, passa la domanda al team.
Che cosa viene memorizzato
- Consultazione: la risposta del negozio viene usata solo per quella singola risposta dell’assistente e non viene memorizzata, né nella conversazione né nella knowledge base.
- Importazione: cifrata, massimo 90 giorni, eliminata insieme al progetto.
- La risposta dell’assistente appare nella cronologia come qualsiasi messaggio. Il team la vede nella dashboard.
Risoluzione dei problemi
- L’assistente chiede al cliente di accedere anche se ha già effettuato l’accesso: se
expmanca, è scaduto o l’hash non corrisponde, il visitatore non è considerato confermato. Controlli segreto, ordineuserId + "." + expe orologio del server. - Il pulsante di test segnala «indirizzo non consentito»: l’endpoint deve essere raggiungibile tramite
httpsa un indirizzo pubblico; indirizzi interni e altre porte vengono rifiutati. - Il Suo sistema segnala un errore di firma: la stringa firmata è
X-RC-Zeit + "." + bodycon il segreto dell’endpoint, esattamente il corpo ricevuto, non ricodificato. - Manca un campo nella risposta dell’assistente: è abilitato in «Quali dati può ricevere l’assistente»?
Approfondimenti nella documentazione
In dettaglio: Endpoint dei dati dei clienti. Tutti i capitoli sono nella documentazione.
Zadnje ažurirano: