Chatbot über die Backend-API einbinden
Diese Seite richtet sich an Entwickler, die den Chatbot ohne das fertige Skript chatbot.js direkt über die Backend-API ansprechen möchten – etwa um eine vollständig eigene Chat-Oberfläche zu bauen oder den Chatbot in eine native App zu integrieren.
Für die Standard-Einbindung als schwebendes Chat-Fenster verwenden Sie stattdessen das Skript chatbot.js, siehe Chatbot in eine Webseite einbinden.
Grundlagen
Basis-URL:
https://<ihre-skai-instanz>/api/v1Alle Anfragen erfolgen per HTTPS, Anfrage- und Antwortkörper sind JSON.
Das Streaming der Antworten erfolgt über eine WebSocket-Verbindung (
wss://).Alle hier beschriebenen Endpunkte verwenden das Chatbot-Token zur Authentifizierung; eine Benutzeranmeldung ist nicht erforderlich.
Authentifizierung
Jeder Aufruf wird mit dem Chatbot-Token authentifiziert. Das ist ein JWT, das fest an genau einen Chatbot gebunden ist. Sie finden es in der Detailansicht des Chatbots unter Einbinden – es ist derselbe Wert, der bei chatbot.js im Attribut data-token verwendet wird.
Das Token kann auf zwei Wegen übergeben werden:
als HTTP-Header
Authorization: Bearer <token>– empfohlen für REST-Aufrufe, oderals Query-Parameter
?token=<token>– nötig für die WebSocket-Verbindung, da dort keine eigenen Header gesetzt werden können.
Typischer Ablauf
Optional: Konfiguration des Chatbots laden –
GET /chatbot/self.Einen Chat starten –
POST /chatbot-chat. Die Antwort enthält dieiddes Chats.WebSocket öffnen, Prompt senden und die gestreamte Antwort empfangen.
Optional: Verlauf nachladen, Chat schließen, Besucher an-/abmelden.
REST-Endpunkte
Methode | Pfad | Zweck |
|---|---|---|
|
| Öffentliche Konfiguration des Chatbots abrufen. |
|
| Neuen Chat starten. |
|
| Verlauf und Metadaten eines Chats abrufen. |
|
| Chat beenden. |
|
| Angemeldeten Besucher dem Chat zuordnen. |
|
| Besucher wieder abmelden. |
|
| Quellenangaben zu Wissensdokumenten auflösen (mehrfach angebbar). |
|
| Anhang aus dem Chat herunterladen. |
Konfiguration abrufen
Die Antwort enthält die für die Darstellung relevanten Felder, u. a.:
Chat starten
initialLocale(erforderlich) – Sprach-/Ländercode des Besuchers (z. B.de-DE).userData(optional) – Name und E-Mail des Besuchers, falls bekannt.clientData(optional) – Signiertes Client-Daten-Token mit Anmeldedaten, Kontext und Tools (siehe Chatbot in eine Webseite einbinden).
Die Antwort ist das Chat-Objekt; entscheidend ist das Feld id – die chatId, die Sie für die WebSocket-Verbindung und alle weiteren Aufrufe benötigen:
Weitere REST-Aufrufe
Die folgenden Aufrufe erwarten als Körper optional bzw. erforderlich das Client-Daten-Token:
POST /chatbot-chat/{chatId} liefert den Verlauf (messages), Ereignisse (events, z. B. Übergabe an einen Mitarbeiter), Anhänge sowie closed und createdAt zurück.
Nachrichten streamen (WebSocket)
Die eigentliche Konversation läuft über eine WebSocket-Verbindung. Bauen Sie diese mit der zuvor erhaltenen chatId auf und übergeben Sie das Token als Query-Parameter:
Über die Verbindung werden in beide Richtungen JSON-Textnachrichten ausgetauscht. Jede Nachricht besitzt ein Feld type und eine requestId (eine vom Client erzeugte UUID, über die sich die Server-Antworten der jeweiligen Anfrage zuordnen lassen).
Nachrichten vom Client an den Server
Ein Prompt wird in zwei Schritten gesendet: zuerst eine promptInit-Nachricht mit den Parametern, danach der Prompt-Text als ein oder mehrere promptChunk-Nachrichten. Erst die letzte promptChunk-Nachricht (chunkIndex == totalChunks - 1) löst die Verarbeitung aus.
Weitere Client-Nachrichten:
| Felder | Zweck |
|---|---|---|
|
| Antwortsprache für den folgenden Prompt setzen (z. B. |
|
| Prompt-Text (ggf. stückweise) übertragen. |
| – | Die laufende Antwort abbrechen. |
| – | Vorschläge für Folgefragen anfordern. |
|
| Client-Daten-Token zur Laufzeit aktualisieren. |
|
| Ergebnis einer clientseitigen Tool-Ausführung zurückgeben. |
| – | Verbindung aktiv halten; der Server antwortet mit |
Nachrichten vom Server an den Client
Während der Beantwortung sendet der Server eine Folge von Ereignissen. Die wichtigsten:
| Felder | Bedeutung |
|---|---|---|
|
| Beginn einer Antwortnachricht. |
|
| Ein Textstück der Antwort (fortlaufend anzuhängen). |
|
| Antwort vollständig; ggf. mit erzeugten Dateien. |
|
| Ein Tool wird ausgeführt bzw. ist fertig. |
|
| Ankündigung einer bevorstehenden Tool-Ausführung. |
|
| Aufforderung zur clientseitigen Tool-Ausführung (Antwort via |
|
| Vorgeschlagene Folgefragen. |
|
| Prüfung bzw. Ergebnis einer möglichen Übergabe an einen Mitarbeiter. |
|
| Ein Fehler ist aufgetreten (Feld |
Ein typischer Ablauf einer Antwort sieht so aus:
Weitere WebSocket-Kanäle
Für denselben Chat stehen zusätzlich folgende Kanäle bereit (Authentifizierung wie oben über ?token=):
…/chatbot-chat/{chatId}/file-upload/ws– Datei-Upload (binär).…/chatbot-chat/{chatId}/tts/ws– Text-to-Speech: Text rein, Audio (binär) raus.…/chatbot-chat/{chatId}/stt/ws?mimeType=<typ>– Speech-to-Text: Audio rein, Transkript raus.
Hinweise
Domains: Die unter Beschränkungen hinterlegte Domain-Liste (
registeredEmbeddingWebsiteUrls) schützt die Einbettung überchatbot.js. Bei direkter Nutzung der API liegt der Schutz des Tokens in Ihrer Verantwortung.Verbrauch: Jeder Chat zählt gegen die Credits der Organisation und die für den Chatbot konfigurierten Limits.
Aufbewahrung: Chatverläufe werden 3 Monate gespeichert; jeder Chat besitzt ein
expiresAt.Tools: Stellt der Chatbot clientseitige Tools bereit, gelten für Signierung und Validierung die unter Chatbot in eine Webseite einbinden beschriebenen Regeln (RS256, serverseitige Validierung).