Auslieferung und Sicherheit des Widgets
Wie XICBOT Lader und Chatfenster ausliefert: Fassungsnamen, Prüfsummen, Sicherheitsrichtlinie, Antwortköpfe, Schlüsselprüfung und Grenzen je Besucher.
In einfacher Sprache
Diese Seite erklärt, wie das Chatfenster zu Ihrer Website kommt. Das Widget hat zwei Teile. Ein kleiner Lader steht auf Ihrer Seite. Das Chatfenster läuft in einem eigenen Rahmen. So bleibt es von Ihrer Seite getrennt. Das Chatfenster prüft seine Dateien beim Laden. Für jeden Besucher gelten Grenzen. Die Seite erklärt auch, was bei Störungen geschieht.
Alle Themen der Dokumentation
Das Widget besteht aus einem kleinen Lader auf Ihrer Seite und einem Chatfenster, das in einem eigenen Rahmen läuft. Hier steht, wie beide ausgeliefert werden, welche Köpfe sie tragen, mit welchen Prüfsummen das Chatfenster seine Teile lädt, wie die Schnittstelle einen Widgetschlüssel prüft und welche Grenzen je Besucher gelten. Wie Sie das Widget einbauen, beschreibt Widget einbauen.
Die Dateien des Widgets
Die Auslieferung unter https://cdn.xicbot.de kennt genau vier Dateien. Liefern Sie das Widget über Ihre eigene Domain aus, stehen dieselben Dateien unter Ihrem Pfad, siehe Eigener Pfad auf Ihrer Domain.
| Datei | Aufgabe | Inhaltstyp |
|---|---|---|
einbetten.js | Lader auf Ihrer Seite. Er liest die Angaben am Skript-Tag und baut Auslöser und Rahmen. Selbst stellt er keine Anfrage ans Netz. | text/javascript; charset=utf-8 |
rahmen.html | Gerüst des Chatfensters mit dem Seitentitel Chat. Es trägt <meta name="robots" content="noindex, nofollow">. | text/html; charset=utf-8 |
rahmen.css | Gestaltung des Chatfensters | text/css; charset=utf-8 |
rahmen.js | Ablauf im Chatfenster: Einstellungen laden, Gespräch führen, Meldungen zeigen | text/javascript; charset=utf-8 |
version.json | Übersicht der geltenden Fassungen, siehe Übersicht der Fassungen | application/json; charset=utf-8 |
- Die Wurzel
/liefertrahmen.html. - Eine Anfrage mit
HEADerhält dieselben Köpfe, aber keinen Inhalt. - Jeder andere Name, auch eine veraltete Fassung, erhält Status 404 mit dem Text
nicht gefunden.
Fassungsnamen und Zwischenspeicher
Jede Datei ist unter zwei Namen erreichbar: unter ihrem Einstiegsnamen, etwa rahmen.js, und unter einem Fassungsnamen wie rahmen.1a2b3c4d5e.js. Die zehn Hexadezimalzeichen sind der Anfang der SHA-256-Summe des ausgelieferten Inhalts; ändert sich die Datei, ändert sich ihr Fassungsname. Bei rahmen.html wird die Summe erst gebildet, nachdem die Verweise auf die beiden anderen Teile eingesetzt sind. Eine neue Fassung von rahmen.css oder rahmen.js ergibt deshalb auch eine neue Fassung des Gerüsts.
| Anfrage | Cache-Control | Bedeutung |
|---|---|---|
Einstiegsname, etwa einbetten.js | public, max-age=300 | Browser und Zwischenspeicher halten die Datei bis zu fünf Minuten. |
Fassungsname, etwa rahmen.1a2b3c4d5e.js | public, max-age=31536000, immutable | Ein Jahr gültig, ohne erneute Nachfrage beim Server. |
rahmen.html unter beiden Namen | no-store | Wird bei jedem Öffnen neu geholt, weil es die Sicherheitsrichtlinie trägt. |
version.json | no-store | Zeigt den Stand zum Zeitpunkt der Anfrage. |
- Ausgeliefert wird nur die geltende Fassung. Passt die Kennung in einem Fassungsnamen nicht zum aktuellen Inhalt, antwortet die Auslieferung mit 404
nicht gefunden, statt unter dem alten Namen still einen neuen Inhalt zu liefern. - Jede Datei nennt ihre Fassung im Kopf
X-Xicbot-Version. - Der Einbaucode verweist auf den Einstiegsnamen
einbetten.js. Eine neue Widgetfassung erreicht Ihre Seite deshalb ohne Änderung am Einbaucode, sobald die fünf Minuten des Zwischenspeichers abgelaufen sind.
Prüfsummen im Chatfenster
Im Quelltext verweist rahmen.html auf die Einstiegsnamen rahmen.css und rahmen.js. Beim Ausliefern ersetzt die Auslieferung beide Verweise durch die Fassungsnamen und setzt die SHA-384-Summe des jeweiligen Inhalts als integrity dazu. Der Browser lädt die Teile damit aus dem Zwischenspeicher, solange die Fassung gilt, und verwirft eine Datei, deren Inhalt nicht zur Summe passt.
rahmen.html html
<link rel="stylesheet" href="rahmen.<fassung>.css" integrity="sha384-…" crossorigin="anonymous">
<script src="rahmen.<fassung>.js" integrity="sha384-…" crossorigin="anonymous"></script>crossorigin="anonymous" ist dabei nötig. Das Chatfenster hat einen undurchsichtigen Ursprung, jede seiner Anfragen gilt als herkunftsfremd. Ohne das Attribut bliebe die Antwort für den Browser verschlossen und die Prüfung schlüge fehl. Damit die Teile trotzdem geladen werden, sendet die Auslieferung zu jeder Datei Access-Control-Allow-Origin: * und Cross-Origin-Resource-Policy: cross-origin.
Übersicht der Fassungen
/version.json listet die geltenden Fassungen aller vier Dateien. Die Antwort wird nicht zwischengespeichert (no-store) und darf von jeder Seite gelesen werden (Access-Control-Allow-Origin: *).
| Feld | Inhalt |
|---|---|
generated | Zeitpunkt der jüngsten Änderung unter den vier Dateien, im Format ISO 8601 |
origin | Adresse, von der das Chatfenster geladen wird; beim eigenen Pfad Ihre Adresse |
api | Adresse der Schnittstelle, mit der das Chatfenster spricht |
files[].name | Einstiegsname der Datei |
files[].version | zehn Hexadezimalzeichen der SHA-256-Summe |
files[].versioned_name | Fassungsname der Datei |
files[].sri | SHA-384-Summe im Format sha384-… |
files[].bytes | Größe in Byte |
Befehl in der Schale bash
# Geltende Fassungen abrufen
curl -s https://cdn.xicbot.de/version.json
# Köpfe des Laders ansehen
curl -sI https://cdn.xicbot.de/einbetten.jsSicherheitsrichtlinie des Chatfensters
rahmen.html kommt mit einer eigenen Richtlinie im Kopf Content-Security-Policy. Sie gilt nur im Chatfenster, nicht auf Ihrer Seite; was Ihre eigene Richtlinie erlauben muss, steht unter Sicherheitsrichtlinie Ihrer Seite. Die Adressen darin sind die Basis, von der das Chatfenster geladen wird, und die Adresse der Schnittstelle, beim eigenen Pfad also Ihre Domain.
| Anweisung | Wert | Wirkung |
|---|---|---|
default-src | 'none' | Was nicht ausdrücklich erlaubt ist, bleibt gesperrt. |
script-src | Basis mit Schrägstrich, etwa https://cdn.xicbot.de/ | Skripte nur von der Basis des Chatfensters |
style-src | Basis mit Schrägstrich | Stile nur von derselben Basis |
connect-src | Adresse der Schnittstelle mit Schrägstrich | Anfragen nur an die Schnittstelle des Chats |
img-src | Basis mit Schrägstrich, data: und https: | Bilder von der Basis, als data:-Adresse und über https auch von anderen Adressen. Fremde Bilder setzt das Fenster nur in Produktkarten ein, und nur mit einer https-Adresse. |
base-uri | 'none' | Kein <base>-Element kann die Adressen umlenken. |
form-action | 'none' | Das Fenster schickt keine Formulare ab. |
frame-ancestors | * | Das Chatfenster darf in jede Seite eingebettet werden. Wo ein Gespräch beginnen darf, regelt Erlaubte Domains. |
- Der Schrägstrich am Ende begrenzt die Erlaubnis auf den Pfad der Basis. Beim eigenen Pfad
https://example.com/chatgilt sie fürhttps://example.com/chat/, nicht für den Rest der Domain. - Die Trennung von Ihrer Seite leistet die Sandbox des Rahmens, nicht
frame-ancestors, siehe Abschottung von Ihrer Seite.
Antwortköpfe
Jede der vier Dateien kommt mit diesen Köpfen:
| Kopf | Wert | Zweck |
|---|---|---|
Content-Type | je Datei, siehe Die Dateien des Widgets | Inhaltstyp mit Zeichensatz UTF-8 |
X-Content-Type-Options | nosniff | Der Browser errät keinen anderen Inhaltstyp. |
Referrer-Policy | no-referrer | Folgeanfragen nennen keine Herkunftsseite. |
Access-Control-Allow-Origin | * | Das Chatfenster mit seinem undurchsichtigen Ursprung darf die Dateien laden und prüfen. |
Cross-Origin-Resource-Policy | cross-origin | Die Dateien dürfen in fremden Seiten verwendet werden. |
Cache-Control | siehe Fassungsnamen und Zwischenspeicher | Dauer im Zwischenspeicher |
X-Xicbot-Version | zehn Hexadezimalzeichen | Fassung der ausgelieferten Datei |
Content-Security-Policy | nur bei rahmen.html | Richtlinie des Chatfensters, siehe oben |
Vary | nur bei rahmen.html: X-Xicbot-Base, X-Xicbot-Api | Trennt die Fassungen verschiedener Basisadressen im Zwischenspeicher. |
Varyist nötig, weil die Richtlinie an den KöpfenX-Xicbot-BaseundX-Xicbot-Apihängt. Ohne ihn könnte ein Zwischenspeicher das Gerüst mit der Richtlinie eines Kunden an den nächsten ausliefern.X-Frame-Optionsfehlt mit Absicht. Ein solcher Kopf würde das Einbetten in Ihre Seite verhindern.- Unter
cdn.xicbot.dekommenStrict-Transport-Security: max-age=31536000; includeSubDomainsundX-Robots-Tag: noindex, nofollowhinzu, siehe Die beiden Einbauwege. Dasnoindexim Gerüstrahmen.htmlgilt auf beiden Wegen, auch über Ihren eigenen Pfad. version.jsonträgt nurContent-Type,X-Content-Type-Options,Access-Control-Allow-OriginundCache-Control.
Adressen in den Köpfen
Beim eigenen Pfad setzt Ihr Server die Köpfe X-Xicbot-Base und X-Xicbot-Api, siehe Was Ihr Server weiterreicht. Unter cdn.xicbot.de setzt XICBOT sie selbst und ersetzt dabei jeden gleichnamigen Kopf, den ein Besucher mitschickt. Aus diesen Adressen entstehen die Richtlinie des Chatfensters und die Felder origin und api in version.json.
- Erlaubt ist
http://oderhttps://, ein Rechnername aus Kleinbuchstaben, Ziffern, Punkt und Bindestrich, optional ein Port und ein Pfad aus Buchstaben, Ziffern und den Zeichen.,_,~und-. - Höchstens 200 Zeichen. Leerraum am Rand wird entfernt, ebenso ein Schrägstrich am Ende.
- Die Prüfung ist streng, weil die Adresse in die Richtlinie wandert: Ein Semikolon oder Leerzeichen darin ergäbe eine zusätzliche Anweisung.
- Ein gesetzter, aber unbrauchbarer Kopf ergibt Status 400 mit dem Text
kopf ungueltig, statt still auf die Standardadresse zurückzufallen. - Fehlt
X-Xicbot-Api, giltX-Xicbot-Baseauch für die Schnittstelle.
Abschottung von Ihrer Seite
Im Abschnitt Chatfenster auf Ihrer Website steht in der App: Das Chatfenster läuft in einem eigenen Rahmen. Es kann die Seite, auf der es liegt, weder lesen noch verändern. Umgesetzt ist das so:
- Der Rahmen trägt
sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox"ohneallow-same-origin, dazureferrerpolicy="no-referrer",loading="eager"und den TitelChat. - Ohne
allow-same-originhat das Chatfenster einen undurchsichtigen Ursprung. Ihre Seite kann seinen Inhalt nicht lesen und das Chatfenster Ihren nicht. Den Verlauf schützt das allein nicht: Wer die Gesprächskennung aus dem Speicher Ihrer Seite kennt, kann ihn über die Schnittstelle abrufen. - Der Lader übergibt seine Angaben im Fragment der Rahmenadresse hinter
#: Schlüssel, Adresse der Schnittstelle, Ursprung Ihrer Seite, Position, Sprache, Darstellung, die Kennung eines laufenden Gesprächs sowie Schriftart, Kantenrundung und Markenfarbe Ihrer Seite. Ein Fragment geht an keinen Server und steht deshalb in keinem Zugriffsprotokoll. - Der Lader selbst stellt keine Anfrage ans Netz. Alles, was Daten holt, läuft im Chatfenster.
- Das Chatfenster fragt die Schnittstelle ohne Cookies und ohne Anmeldung ab (
credentials: omit) und nennt dabei keine Herkunftsseite. - Freigabeköpfe für herkunftsfremde Anfragen sendet die Schnittstelle nur unter
/api/v1/public/: für den Ursprungnull, den ein solcher Rahmen sendet, für die eigenen Ursprünge von App und Auslieferung sowie für Ursprünge, die XICBOT ausdrücklich zulässt. Erlaubt sindGET,POST,DELETEundOPTIONSmit den KöpfenContent-TypeundAccept. Lesbar ist der KopfRetry-After, eine Vorabfrage gilt 600 Sekunden, Anfragen mit Zugangsdaten gibt sie nicht frei. - Nachrichten zwischen Lader und Chatfenster prüfen beide Seiten auf Absender und Ursprung, siehe Prüfungen auf beiden Seiten.
- Der Rahmen wird erst gebaut, wenn Ihre Seite fertig geladen ist. Ist das Einwilligungstor gesetzt, wartet er auf die Zustimmung, siehe Einwilligung und Besucherrechte.
- Ohne
data-xicbotbaut der Lader nichts. Ein zweiter Lader auf derselben Seite bleibt ohne Wirkung.
Schlüsselprüfung der Schnittstelle
Jede Anfrage unter /api/v1/public/widget/{key}/ prüft zuerst den öffentlichen Schlüssel des Assistenten. Am Assistenten entscheiden zwei getrennte Schalter: Er muss auf aktiv stehen, und Chatfenster freigeben muss eingeschaltet sein. Ein unbekannter, ein abgeschalteter, ein pausierter und ein noch im Entwurf stehender Assistent antworten gleich, damit sich durch Raten nicht erkennen lässt, ob ein Schlüssel stimmt.
| Lage | Antwort | Folge im Chatfenster |
|---|---|---|
| Schlüssel unbekannt | 404 unknown_widget | Dieser Chat ist nicht verfügbar., der Auslöser verschwindet |
| Chatfenster freigeben ist ausgeschaltet | 404 unknown_widget | wie oben |
| Der Assistent steht auf Entwurf oder pausiert statt auf aktiv | 404 unknown_widget | wie oben |
| Ihr Konto ist nicht aktiv | 404 unknown_widget | wie oben |
| Der Demozugang ist abgelaufen | 404 demo_expired | wie oben |
| Der Assistent hat noch keine aktive Fassung | Einstellungen mit ready: false, beim Gesprächsbeginn 422 no_version | Dieser Assistent ist noch nicht bereit. |
| Gesprächsbeginn von einer Seite außerhalb von Erlaubte Domains | 403 host_not_allowed | Dieser Chat ist für diese Website nicht freigegeben. |
Nur unknown_widget und demo_expired lassen das Chatfenster verschwinden: Es meldet dem Lader, dass der Assistent nicht mehr da ist, und der Lader entfernt Auslöser, Sprechblase und Rahmen von Ihrer Seite. Ein 404 ohne einen dieser Codes stammt in der Regel von einer falschen Adresse, etwa data-api mit dem falschen Rechner, und gilt als Störung.
Beim Gesprächsbeginn nennt das Chatfenster den Ursprung Ihrer Seite, wie ihn der Lader übergeben hat. Verglichen wird der Rechnername in Kleinbuchstaben, gekürzt auf 120 Zeichen. Ein Eintrag in Erlaubte Domains schließt seine Unterdomains ein; ist die Liste leer, kann auf jeder Website ein Gespräch beginnen. Mehr dazu unter Erlaubte Domains.
Grenzen je Besucher
Als ein Besucher gilt eine Herkunftsadresse zusammen mit dem Widgetschlüssel. IPv4-Adressen zählen einzeln, IPv6-Adressen je /64-Netz, weil ein Anschluss dort ein ganzes Netz erhält. Eine IPv4-Adresse in IPv6-Schreibweise zählt als IPv4-Adresse. Der Schlüssel allein ließe einen einzelnen Besucher die Grenze für alle aufbrauchen. Besucher hinter einem gemeinsamen Ausgang, etwa im Netz einer Firma, im Mobilfunk oder im selben /64-Netz, gelten dagegen als ein Besucher und teilen sich die Grenzen dieses Widgets.
| Grenze | Wert | Gilt für |
|---|---|---|
Aufrufe (widget) | 60 je Minute | Einstellungen laden, Gespräch beginnen, Verlauf laden, Antwort bewerten, Widerruf, Auskunft, Gespräch löschen, Werkzeugvorschlag ablehnen, Rückmeldung zu einem Formular, Anhänge ansehen. Alle teilen sich einen Zähler. |
Senden (widget-send) | 12 je Minute | Nachricht senden, Werkzeugvorschlag bestätigen, Anhang hochladen |
| Aufrufe nach Ihrem Konto | Minutenwert Ihres Pakets, dazu 2000 je Tag als Startwert | alle Aufrufe außer Nachricht senden und Anhängen, auch Werkzeugvorschlag bestätigen und das bloße Laden der Einstellungen |
| Fragen nach Ihrem Konto | 10 je Minute und 200 je Tag als Startwerte | Nachricht senden |
- Die ersten beiden Grenzen gelten für alle Konten gleich. Die beiden anderen nehmen ihre Werte aus Ihrem Konto, gezählt wird aber ebenfalls je Besucher und Schlüssel: Ein Besucher, der viel schreibt, bremst niemanden an einer anderen Adresse oder, bei IPv6, in einem anderen /64-Netz.
- Jede Grenze nach Ihrem Konto hat einen Minutenwert gegen den Ansturm und einen Tageswert gegen Dauerlast.
- Gehört ein Aufruf zu einem Gespräch, zählt neben der Adresse auch das Gespräch, mit denselben Werten. Jeder der beiden Zähler kann abweisen, erhöht werden sie nur, wenn keiner abgewiesen hat. Der Zähler des Gesprächs hebt die gemeinsame Grenze einer Adresse nicht auf.
- Den Minutenwert für Aufrufe legt Ihr Paket fest, siehe Pakete und Kontingente. Die Werte für Fragen stellt XICBOT für Ihr Konto ein.
- Ein Wert unter 1 schaltet eine Grenze nach Ihrem Konto ab.
- Anhänge zählen nur gegen die ersten beiden Grenzen.
Antwort bei Überschreitung
Eine Grenze nach Ihrem Konto antwortet mit Status 429, dem Kopf Retry-After und diesem Rumpf. wait nennt die Wartezeit in Sekunden, dieselbe Zahl wie Retry-After; die beiden Grenzwerte sind die Ihres Kontos.
antwort.json json
{
"error": "too_many_requests",
"limit_per_min": 10,
"limit_per_day": 200,
"wait": 42
}Die Grenzen widget und widget-send antworten ebenfalls mit 429 und Retry-After, aber ohne wait im Rumpf. Allgemeine Grenzen der Schnittstelle stehen unter API-Grenzen, die Endpunkte selbst unter API: Widget.
Verhalten des Chatfensters bei Störungen
Nach einem 429 wartet das Chatfenster so lange, wie wait im Rumpf nennt. Fehlt wait, liest es Retry-After, sonst gilt ein Ersatzwert. Die Wartezeit liegt zwischen einer Sekunde und einer Stunde; ab 90 Sekunden zeigt das Fenster sie in Minuten an. Die Wortlaute aller Meldungen stehen unter Meldungen.
| Schritt | Lage | Verhalten |
|---|---|---|
| Einstellungen laden | 429 | Wartet wait oder Retry-After, sonst 30 Sekunden, und versucht es erneut. Zählt zu den höchstens sechs Abrufen. |
| Einstellungen laden | Netz gestört oder Status ab 500 | Neue Versuche nach 15, 30 und 60 Sekunden, dann nach 2 und 4 Minuten. Nach dem sechsten Abruf bleibt Der Chat ist gerade nicht erreichbar. stehen. |
| Einstellungen laden | anderer Fehler | Sofort Der Chat ist gerade nicht erreichbar., ohne neuen Versuch |
| Gespräch beginnen | 429 | Wartet wait oder Retry-After, sonst 20 Sekunden. Keine Höchstzahl an Versuchen. |
| Gespräch beginnen | Netz gestört oder Status ab 500 | Bis zu drei weitere Versuche nach 15, 30 und 60 Sekunden, danach Der Chat ist gerade nicht erreichbar. |
| Gespräch beginnen | 403 | Dieser Chat ist für diese Website nicht freigegeben. |
| Gespräch beginnen | anderer Status, etwa 422 | Der Chat konnte nicht gestartet werden. |
| Verlauf laden | 404 oder 410 ohne Code der Schlüsselprüfung | Ein unbekanntes oder abgelaufenes Gespräch ist kein Fehler: Das Fenster beginnt neu und zeigt die Begrüßung, sofern eine hinterlegt ist. |
| Verlauf laden | 429 oder andere Störung | Bis zu fünf neue Versuche, nach wait (Ersatzwert 20 Sekunden) oder nach 30 Sekunden. Danach Das Gespräch konnte nicht geladen werden. |
| Nachricht senden | 429 | Die eigene Sprechblase verschwindet, der Text steht wieder im Eingabefeld, sofern es leer ist. Senden bleibt bis zum Ende der Wartezeit gesperrt, Ersatzwert 30 Sekunden. Die Meldung Zu viele Nachrichten in kurzer Zeit. Ihre Nachricht ist nicht angekommen und steht wieder im Eingabefeld – bitte in … erneut senden. nennt die Restzeit. |
| Einstellungen, Beginn oder Verlauf | 404 unknown_widget oder demo_expired | Chatfenster und Auslöser verschwinden, siehe Schlüsselprüfung der Schnittstelle. |
Prüfung der Auslieferung in der App
Bei jedem Abruf des Einbaucodes prüft XICBOT neu, ob die ausgelieferte Datei einbetten.js lesbar ist, statt sich auf einen gespeicherten Wert zu verlassen. Ist sie es nicht, erscheint unter Einbaucode über unsere Adresse die Meldung Die ausgelieferte Widgetdatei ließ sich nicht lesen. Der Einbaucode steht, aber die Auslieferung selbst sollte geprüft werden. Der Einbaucode bleibt kopierbar. Geben Sie uns in diesem Fall unter mail@xicbot.de Bescheid.
Über die Schnittstelle liefert GET /api/v1/assistants/{id}/embed dazu das Feld reason: file_missing, wenn die Datei fehlt oder nicht zum Lesen zugänglich ist, file_unreadable, wenn das Einlesen trotzdem scheitert, sonst null.
Weiterlesen
- Widget einbauen: Einbaucode, eigener Pfad, erlaubte Domains und Meldungen.
- JavaScript und Speicher: die Schnittstelle des Laders auf Ihrer Seite.
- Einwilligung und Besucherrechte: Einwilligungstor und Widerruf.
- API: Widget: die öffentlichen Endpunkte des Chatfensters.
- API-Grenzen: Grenzen der übrigen Schnittstelle.
- Pakete und Kontingente: was Ihr Paket festlegt.
- Datensicherheit: wie XICBOT Daten schützt.
Häufige Fragen
Muss ich den Einbaucode nach einer neuen Widgetfassung austauschen?
Nein. Der Einbaucode verweist auf den Einstiegsnamen einbetten.js, den Browser bis zu fünf Minuten zwischenspeichern. Das Gerüst rahmen.html wird bei jedem Öffnen neu geholt und verweist auf die aktuellen Fassungsnamen.
Kann das Chatfenster Inhalte meiner Seite lesen?
Nein. Der Rahmen läuft in einer Sandbox ohne allow-same-origin und hat damit einen undurchsichtigen Ursprung. Er kann Ihre Seite weder lesen noch verändern, und Ihre Seite kann seinen Inhalt nicht lesen. Beide tauschen nur Nachrichten aus, die auf Absender und Ursprung geprüft werden. Eine davon trägt die Gesprächskennung, die der Lader im Speicher Ihrer Seite ablegt; wer sie kennt, kann den Verlauf über die Schnittstelle abrufen.
Warum ist der Chat-Auslöser von meiner Seite verschwunden?
Die Schnittstelle hat den Schlüssel mit unknown_widget oder demo_expired abgewiesen. Prüfen Sie in der App, ob Chatfenster freigeben eingeschaltet ist, der Assistent auf aktiv steht und Ihr Konto aktiv ist. Ein abgelaufener Demozugang hat dieselbe Folge.
Was bedeutet die Meldung, dass gerade zu viele Anfragen ankommen?
Eine Grenze je Besucher ist erreicht. Das Chatfenster nennt die Wartezeit und versucht es danach selbst erneut. Gezählt wird je Herkunftsadresse, bei IPv6 je /64-Netz, und Widgetschlüssel. Besucher mit einer anderen Adresse sind davon nicht betroffen, Besucher hinter demselben Ausgang, etwa im Netz einer Firma, dagegen schon.
Warum antwortet die Auslieferung beim eigenen Pfad mit Status 400?
Ihr Server hat X-Xicbot-Base oder X-Xicbot-Api mit einer Adresse gesetzt, die nicht dem erlaubten Muster entspricht, etwa mit Abfrage, Leerzeichen oder mehr als 200 Zeichen. Die Auslieferung antwortet dann mit kopf ungueltig, statt still auf die Standardadresse auszuweichen.
Selbst fragen, Assistent dieser Website
Automatischer Assistent