Kundendaten im Chat (Bestellungen, Versand, Rechnungen)
Den KI-Assistenten Fragen angemeldeter Kunden zu ihren eigenen Bestellungen beantworten lassen – sicher über eine signierte Identität, mit genau festgelegten Feldern, per Abruf bei Ihrem Shop oder per Import.
Mit den Kundendaten beantwortet der KI-Assistent Fragen wie „Wo ist mein Paket?“, „Ist meine Rechnung schon bezahlt?“ oder „Was war in meiner letzten Bestellung?“ – für angemeldete Kunden und nur zu ihren eigenen Daten. Die Funktion steht in den bezahlten Tarifen zur Verfügung.
Wie die Daten geschützt sind
- Der Browser beweist nichts. Keine Bestell- oder Rechnungsnummer, keine E-Mail-Adresse und nichts, was auf der Seite oder im Chat steht, berechtigt zum Einblick. Wer welche Daten sehen darf, entscheidet allein eine Identität, die Ihr Server signiert hat.
- Eine Nummer ist nur ein Filter. Nennt ein Kunde eine Bestellnummer, wird sie nur innerhalb seiner eigenen Bestellungen gesucht. Eine fremde Nummer liefert nichts.
- Sie bestimmen jedes Feld. Der Assistent bekommt nur die Felder, die Sie freigeben. Alles andere wird beim Eingang verworfen – auch wenn Ihr Shop es mitschickt.
- Kein Datenbestand bei uns (Abruf). Beim Abruf fragt reactive.chat je Frage bei Ihrem Shop an und speichert die Antwort nicht. Beim Import liegen die Daten verschlüsselt bei uns und werden spätestens nach 90 Tagen gelöscht.
- Nur eigene Rechner. Die Daten gehen nur an unsere eigenen KI-Server (oder Ihren eigenen KI-Knoten), nie an einen KI-Dienst Dritter.
Voraussetzung: Identitätsprüfung
Der Assistent nutzt Kundendaten nur für Besucher, deren Identität Ihr Server bestätigt hat. Richten Sie dazu im Konto unter Projekt → Identitätsprüfung ein Geheimnis ein. Es bleibt auf Ihrem Server und gehört nie in den Browser oder in das Snippet.
Ihr Server berechnet für jeden angemeldeten Kunden einen Hash mit Ablaufzeit (höchstens 24 Stunden in der Zukunft) und gibt ihn an das Widget:
$userId = (string) $kunde->id;
$exp = time() + 3600;
$hash = hash_hmac('sha256', $userId . '.' . $exp, getenv('RC_IDENT_GEHEIMNIS'));
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_GEHEIMNIS)
.update(String(user.id) + '.' + exp).digest('hex');
// im Template: ReactiveChat('identify', { userId: '<id>', userHash: '<hash>', exp: <exp> });
Ein Hash ohne exp bestätigt den Besucher weiterhin (etwa für den Gesprächsverlauf), reicht aber nicht für Kundendaten. Beim Erneuern des Geheimnisses bleibt das alte noch 24 Stunden gültig.
E-Mail mitsignieren (für Terminbuchung und E-Mail-basierte Integrationen). Eine email neben dem Hash gilt nur dann als bestätigt, wenn sie in der Unterschrift steckt: userHash = HMAC-SHA256(Geheimnis, userId + "." + exp + "." + email) – die Adresse genau so, wie Sie sie an identify übergeben. Ohne das bleibt der Besucher angemeldet, aber der Assistent bucht keinen Termin an diese Adresse, und Integrationen schlagen nicht nach ihr nach. Die bisherige Form userId + "." + exp gilt unverändert weiter.
Abruf, Import oder beides
Unter Projekt → Kundendaten wählen Sie, woher der Assistent die Daten bekommt:
- Abruf bei Ihrem Shop – reactive.chat fragt bei jeder passenden Frage Ihren Endpunkt. Die Daten bleiben bei Ihnen. Empfohlen.
- Import per API – Ihr Shop schickt die Bestellungen eines Kunden an reactive.chat. Sinnvoll, wenn Ihr Shop keinen Endpunkt anbieten kann.
- Beides – zuerst die importierten Daten, findet sich dort nichts, der Abruf.
Welche Daten der Assistent bekommen darf
Jedes Feld schalten Sie einzeln frei. Die Vorgaben decken die üblichen Fragen ab:
bestellung.nummer– Bestellnummer. Vorgabe: immer an. Wofür: Pflichtfeld – ohne Nummer keine Bestellungbestellung.datum– Bestelldatum (JJJJ-MM-TT). Vorgabe: an. Wofür: „Wann habe ich bestellt?“bestellung.status– Bestellstatus als Text. Vorgabe: an. Wofür: „Ist meine Bestellung schon raus?“bestellung.summe– Gesamtbetrag. Vorgabe: an. Wofür: „Wie viel habe ich bezahlt?“bestellung.waehrung– Währung (ISO, z. B. EUR). Vorgabe: an. Wofür: nur zusammen mit der Summepositionen.name– Artikelname. Vorgabe: an. Wofür: „Was war in der Bestellung?“positionen.menge– Menge je Artikel. Vorgabe: an. Wofür: „Wie viele habe ich bestellt?“versand.dienst– Versanddienst. Vorgabe: an. Wofür: „Mit wem kommt das Paket?“versand.sendungsnummer– Sendungsnummer. Vorgabe: an. Wofür: „Wo ist mein Paket?“versand.status– Versandstatus als Text. Vorgabe: an. Wofür: „Ist es schon unterwegs?“versand.ort– Ort der Lieferadresse. Vorgabe: aus. Wofür: „Wohin geht mein Paket?“versand.plz– Postleitzahl der Lieferadresse. Vorgabe: aus. Wofür: wie obenrechnung.nummer– Rechnungsnummer. Vorgabe: an. Wofür: „Welche Rechnung gehört dazu?“rechnung.status– Zahlstatus als Text. Vorgabe: an. Wofür: „Ist meine Rechnung bezahlt?“rechnung.faellig_am– Fälligkeitsdatum. Vorgabe: an. Wofür: „Bis wann muss ich zahlen?“
Ein abgeschaltetes Feld erreicht den Assistenten nie: beim Abruf wird es verworfen, beim Import gar nicht erst gespeichert. Ort und Postleitzahl sind bewusst nur auf ausdrückliche Freigabe möglich – Straße und Name bleiben immer draußen.
Was nie übergeben wird
Diese Angaben lassen sich nicht freischalten. Schickt Ihr Shop sie mit, werden sie verworfen:
- Straße, Hausnummer und weitere Adresszeilen
- Name von Empfänger oder Besteller
- E-Mail-Adresse und Telefonnummer
- IBAN, BIC, Kontonummer und Kartendaten
- Geburtsdatum
- Passwörter, Tokens und Zugangsschlüssel
- Steuer- und Ausweisnummern
Grenzen
Höchstens 10 Bestellungen je Antwort, höchstens 20 Positionen je Bestellung, Texte höchstens 200 Zeichen, die ganze Antwort höchstens 16 kB. Unbekannte Felder werden ohne Fehlermeldung verworfen.
Der Abruf-Endpunkt
reactive.chat ruft Ihren Endpunkt mit POST auf:
POST https://shop.ihre-domain.de/rc-kundendaten
Content-Type: application/json
X-RC-Zeit: 1791196400
X-RC-Signatur: <hex(HMAC_SHA256(Endpunkt-Geheimnis, X-RC-Zeit + "." + Body))>
{"user_id":"4711","anliegen":"bestellung","referenz":"2026-0815","sprache":"de","nonce":"..."}
user_idist die bestätigte Kundennummer aus der Identitätsprüfung – nie eine Angabe aus dem Chat.anliegenistbestellung,lieferung,rechnung,retoureoder beim Testknopftest.referenzist eine Nummer, die der Kunde genannt hat, oder leer. Suchen Sie sie nur unter den Bestellungen dieseruser_id.
Ihr Endpunkt muss:
- die Signatur prüfen (zeitkonstanter Vergleich) und Anfragen ablehnen, deren
X-RC-Zeitmehr als 5 Minuten abweicht, - nur Daten der übergebenen
user_idliefern, - über
httpsauf Port 443 und unter einer öffentlichen Adresse erreichbar sein, ohne Weiterleitung, - innerhalb von 3 Sekunden antworten.
Antwort:
{
"bestellungen": [
{
"nummer": "2026-0815", "datum": "2026-09-28", "status": "versandt",
"summe": "49.90", "waehrung": "EUR",
"positionen": [ { "name": "Laufrad blau", "menge": 1 } ],
"versand": { "dienst": "DHL", "sendungsnummer": "00340434...", "status": "in Zustellung" },
"rechnung": { "nummer": "R-2026-1201", "status": "bezahlt", "faellig_am": "2026-10-12" }
}
]
}
Ein vollständiges Beispiel in PHP finden Sie in der Entwicklerdokumentation (kundendaten-referenz-endpunkt.php).
Mit Verbindung testen ruft reactive.chat Ihren Endpunkt mit der user_id rc-test und dem Anliegen test auf und zeigt das Ergebnis an. Liefern Sie dafür eine leere Liste oder eine Beispielbestellung.
Import per API
Mit einem API-Schlüssel mit dem Recht kundendaten:schreiben:
PUT https://reactive.chat/v1/kundendaten/4711?project_id=123
Authorization: Bearer <API-Schlüssel>
Content-Type: application/json
{"bestellungen":[ ... wie oben ... ]}
project_id ist die Nummer Ihres Projekts; hat Ihr Workspace nur ein Projekt, können Sie sie weglassen. Ein PUT ersetzt alle Bestellungen dieser Kundennummer (höchstens 50). DELETE /v1/kundendaten/4711?project_id=123 entfernt sie. Importierte Daten liegen verschlüsselt bei uns und werden 90 Tage nach dem letzten Import gelöscht – schicken Sie Änderungen also laufend, etwa bei jedem Statuswechsel.
Nicht angemeldete Besucher
Fragt jemand ohne bestätigte Identität nach einer Bestellung, ruft der Assistent nichts ab. Stattdessen zeigt er einen Hinweis, den Sie unter Projekt → Kundendaten einstellen: Text je Sprache und optional einen Link zur Anmeldung. Alternativ übergibt er die Frage an Ihr Team.
Was gespeichert wird
- Abruf: Die Antwort Ihres Shops wird nur für die eine Antwort des Assistenten verwendet und nicht gespeichert – weder im Gespräch noch in der Wissensdatenbank.
- Import: verschlüsselt, höchstens 90 Tage, gelöscht mit dem Projekt.
- Die Antwort des Assistenten steht wie jede Nachricht im Gesprächsverlauf. Ihr Team sieht sie im Dashboard.
Fehlerbehebung
- Der Assistent sagt, der Kunde solle sich anmelden, obwohl er angemeldet ist: Fehlt
exp, ist es abgelaufen oder stimmt der Hash nicht, gilt der Besucher nicht als bestätigt. Prüfen Sie Geheimnis, ReihenfolgeuserId + "." + expund die Uhrzeit Ihres Servers. - Testknopf meldet „Adresse nicht erlaubt“: Der Endpunkt muss über
httpsunter einer öffentlichen Adresse erreichbar sein; interne Adressen und andere Ports werden abgewiesen. - Testknopf meldet „Signatur“ auf Ihrer Seite: Signiert wird
X-RC-Zeit + "." + Bodymit dem Endpunkt-Geheimnis – genau der Body, wie er ankommt, nicht neu kodiert. - Ein Feld fehlt in der Antwort des Assistenten: Ist es unter „Welche Daten der Assistent bekommen darf“ freigeschaltet?
Weiterlesen in der Dokumentation
Ausführlich: Kundendaten-Endpunkt. Alle Kapitel finden Sie in der Dokumentation.
Última actualització: