Klantgegevens in de chat (bestellingen, verzending, facturen)
Laat de AI-assistent vragen van aangemelde klanten over hun eigen bestellingen beantwoorden: veilig via een ondertekende identiteit, met precies bepaalde velden, opgehaald uit uw shop of geïmporteerd.
Met klantgegevens beantwoordt de AI-assistent vragen zoals “Waar is mijn pakket?”, “Is mijn factuur al betaald?” of “Wat zat er in mijn laatste bestelling?” — voor aangemelde klanten en alleen over hun eigen gegevens. De functie is beschikbaar met de betaalde abonnementen.
Hoe de gegevens worden beschermd
- De browser bewijst niets. Geen bestel- of factuurnummer, geen e-mailadres en niets wat op de pagina of in de chat staat, geeft recht op inzage. Wie welke gegevens mag zien, wordt uitsluitend bepaald door een identiteit die uw server heeft ondertekend.
- Een nummer is alleen een filter. Als een klant een bestelnummer noemt, wordt dit alleen binnen de eigen bestellingen opgezocht. Een nummer van iemand anders levert niets op.
- U bepaalt elk veld. De assistent krijgt alleen de velden die u vrijgeeft. Al het overige wordt bij binnenkomst verworpen — ook als uw shop het meestuurt.
- Geen gegevensbestand bij ons (ophalen). Bij ophalen bevraagt reactive.chat uw shop voor elke vraag en slaat het antwoord niet op. Bij import worden de gegevens bij ons versleuteld opgeslagen en uiterlijk na 90 dagen verwijderd.
- Alleen eigen machines. De gegevens gaan uitsluitend naar onze eigen AI-servers (of uw eigen AI-node), nooit naar een AI-dienst van derden.
Voorwaarde: identiteitsverificatie
De assistent gebruikt klantgegevens alleen voor bezoekers van wie uw server de identiteit heeft bevestigd. Stel daarvoor in uw account onder Project → Identiteitsverificatie een geheim in. Dit blijft op uw server en hoort nooit in de browser of het insluitfragment.
Voor elke aangemelde klant berekent uw server een hash met een vervaltijd (maximaal 24 uur in de toekomst) en geeft deze aan de widget door:
$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> });
Een hash zonder exp bevestigt de bezoeker nog steeds (bijvoorbeeld voor de gespreksgeschiedenis), maar is niet voldoende voor klantgegevens. Als u het geheim vernieuwt, blijft het oude 24 uur geldig.
Ook de e-mail ondertekenen (voor afspraken boeken en e-mailgebaseerde integraties). Een email naast de hash telt alleen als bevestigd als deze deel uitmaakt van de handtekening: userHash = HMAC-SHA256(secret, userId + "." + exp + "." + email) — het adres precies zoals u het aan identify doorgeeft. Zonder dit blijft de bezoeker aangemeld, maar boekt de assistent geen afspraak voor dat adres en zoeken integraties het niet op. De bestaande vorm userId + "." + exp blijft ongewijzigd werken.
Ophalen, importeren of beide
Onder Project → Klantgegevens kiest u waar de assistent de gegevens vandaan haalt:
- Ophalen bij de shop (aanbevolen) — reactive.chat roept uw endpoint aan voor elke passende vraag. De gegevens blijven bij u. Aanbevolen.
- Import via API — uw shop stuurt de bestellingen van een klant naar reactive.chat. Handig als uw shop geen endpoint kan aanbieden.
- Beide — eerst geïmporteerde gegevens; als daar niets wordt gevonden, volgt ophalen.
Welke gegevens de assistent mag ontvangen
U schakelt elk veld afzonderlijk in. De standaardwaarden dekken de gebruikelijke vragen:
bestellung.nummer— bestelnummer. Standaard: altijd aan. Voor: verplicht — geen bestelling zonder nummerbestellung.datum— besteldatum (YYYY-MM-DD). Standaard: aan. Voor: “Wanneer heb ik besteld?”bestellung.status— bestelstatus als tekst. Standaard: aan. Voor: “Is mijn bestelling al verzonden?”bestellung.summe— totaalbedrag. Standaard: aan. Voor: “Hoeveel heb ik betaald?”bestellung.waehrung— valuta (ISO, bijvoorbeeld EUR). Standaard: aan. Voor: alleen samen met het totaalpositionen.name— artikelnaam. Standaard: aan. Voor: “Wat zat er in de bestelling?”positionen.menge— aantal per artikel. Standaard: aan. Voor: “Hoeveel heb ik er besteld?”versand.dienst— vervoerder. Standaard: aan. Voor: “Wie bezorgt het pakket?”versand.sendungsnummer— trackingnummer. Standaard: aan. Voor: “Waar is mijn pakket?”versand.status— verzendstatus als tekst. Standaard: aan. Voor: “Is het onderweg?”versand.ort— plaats van het bezorgadres. Standaard: uit. Voor: “Waar gaat mijn pakket naartoe?”versand.plz— postcode van het bezorgadres. Standaard: uit. Voor: als hierbovenrechnung.nummer— factuurnummer. Standaard: aan. Voor: “Welke factuur hoort erbij?”rechnung.status— betaalstatus als tekst. Standaard: aan. Voor: “Is mijn factuur al betaald?”rechnung.faellig_am— vervaldatum. Standaard: aan. Voor: “Wanneer moet ik betalen?”
Een uitgeschakeld veld bereikt de assistent nooit: bij ophalen wordt het verworpen, bij import wordt het helemaal niet opgeslagen. Plaats en postcode zijn bewust alleen mogelijk wanneer u ze uitdrukkelijk inschakelt — straat en naam blijven altijd buiten beschouwing.
Wat nooit wordt doorgegeven
Dit kan niet worden ingeschakeld. Als uw shop het meestuurt, wordt het verworpen:
- straat, huisnummer en verdere adresregels
- naam van de ontvanger of klant
- e-mailadres en telefoonnummer
- IBAN, BIC, rekeningnummer en kaartgegevens
- geboortedatum
- wachtwoorden, tokens en toegangssleutels
- fiscale en identificatienummers
Limieten
Maximaal 10 bestellingen per antwoord, maximaal 20 artikelen per bestelling, teksten maximaal 200 tekens, het volledige antwoord maximaal 16 kB. Onbekende velden worden zonder foutmelding verworpen.
Het ophaalendpoint
reactive.chat roept uw endpoint aan met 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_idis de bevestigde klant-ID uit de identiteitsverificatie — nooit iets wat uit de chat wordt overgenomen.anliegenisbestellung(bestelling),lieferung(levering),rechnung(factuur),retoure(retour) oftestvoor de testknop.referenzis een nummer dat de klant heeft genoemd, of leeg. Zoek dit alleen op binnen de bestellingen van dezeuser_id.
Uw endpoint moet:
- de handtekening verifiëren (vergelijking in constante tijd) en verzoeken afwijzen waarvan
X-RC-Zeitmeer dan 5 minuten afwijkt, - alleen gegevens van de opgegeven
user_idteruggeven, - via
httpsop poort 443 op een openbaar adres bereikbaar zijn, zonder omleidingen, - binnen 3 seconden antwoorden.
Antwoord:
{
"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" }
}
]
}
Een volledig PHP-voorbeeld staat in de ontwikkelaarsdocumentatie (kundendaten-referenz-endpunkt.php).
Met Verbinding testen roept reactive.chat uw endpoint aan met user_id rc-test en verzoektype test en toont het resultaat. Geef daarvoor een lege lijst of een voorbeeldbestelling terug.
Import via API
Met een API-sleutel die de bevoegdheid kundendaten:schreiben heeft:
PUT https://reactive.chat/v1/kundendaten/4711?project_id=123
Authorization: Bearer <API key>
Content-Type: application/json
{"bestellungen":[ ... as above ... ]}
project_id is het nummer van uw project; als uw werkruimte maar één project heeft, kunt u dit weglaten. Een PUT vervangt alle bestellingen van deze klant-ID (maximaal 50). DELETE /v1/kundendaten/4711?project_id=123 verwijdert ze. Geïmporteerde gegevens worden bij ons versleuteld opgeslagen en 90 dagen na de laatste import verwijderd — stuur wijzigingen dus voortdurend door, bijvoorbeeld bij elke statuswijziging.
Bezoekers die niet zijn aangemeld
Als iemand zonder bevestigde identiteit naar een bestelling vraagt, haalt de assistent niets op. In plaats daarvan verschijnt een melding die u onder Project → Klantgegevens instelt: een tekst per taal en optioneel een aanmeldlink. Als alternatief draagt de assistent de vraag over aan uw team.
Wat wordt opgeslagen
- Ophalen: het antwoord van uw shop wordt alleen voor dat ene antwoord van de assistent gebruikt en niet opgeslagen — niet in het gesprek en niet in de kennisbank.
- Import: versleuteld, maximaal 90 dagen, samen met het project verwijderd.
- Het antwoord van de assistent verschijnt zoals elk bericht in de gespreksgeschiedenis. Uw team ziet het in het dashboard.
Problemen oplossen
- De assistent vraagt de klant om aan te melden hoewel die al aangemeld is: als
expontbreekt, verlopen is of de hash niet overeenkomt, geldt de bezoeker niet als bevestigd. Controleer het geheim, de volgordeuserId + "." + expen de klok van uw server. - De testknop meldt “adres niet toegestaan”: het endpoint moet via
httpsop een openbaar adres bereikbaar zijn; interne adressen en andere poorten worden afgewezen. - Uw kant meldt een handtekeningfout: de ondertekende string is
X-RC-Zeit + "." + bodymet het endpointgeheim — precies de ontvangen body, niet opnieuw gecodeerd. - Een veld ontbreekt in het antwoord van de assistent: is het ingeschakeld onder “Welke gegevens de assistent mag ontvangen”?
Verder lezen in de documentatie
Uitgebreid: Klantgegevensendpoint. Alle hoofdstukken staan in de documentatie.
Päivitetty: