Zum Inhalt springen
XICBOT

Einstellungen

English
Dokumentation · Widget auf der Website

JavaScript-Schnittstelle und Browserspeicher

window.xicbot mit einwilligen, widerrufen und stand, die Nachrichten zwischen Ihrer Seite und dem Chatfenster und die Einträge im Browserspeicher samt Frist.

In einfacher Sprache

Der Einbaucode legt auf Ihrer Seite eine kleine Schnittstelle an. Damit verbinden Sie Ihr eigenes Banner für die Einwilligung mit dem Chatfenster. Die Schnittstelle hat drei Befehle. Diese Seite erklärt, was jeder Befehl tut. Sie zeigt auch, welche Nachrichten Ihre Seite und das Chatfenster austauschen. Sie nennt jeden Eintrag, den der Einbaucode im Speicher Ihres Browsers ablegt. Zu jedem Eintrag steht, wie lange er bleibt.

Stand

Alle Themen der Dokumentation

Der Einbaucode legt auf Ihrer Seite das Objekt window.xicbot an. Mit seinen drei Methoden verbinden Sie ein eigenes Einwilligungsbanner mit dem Chatfenster. Diese Seite beschreibt die Methoden, die Nachrichten, die Lader und Chatfenster untereinander austauschen, und jeden Eintrag, den der Lader im Speicher Ihrer Seite ablegt.

Die Schnittstelle window.xicbot

Der Lader richtet window.xicbot ein, sobald er läuft. Mit dem Attribut defer aus dem Einbaucode ist das der Fall, wenn der Browser die Seite eingelesen hat. Fehlt data-xicbot oder ergibt die Basisadresse keine http- oder https-Adresse, entsteht kein Objekt. Steht der Einbaucode zweimal auf der Seite, bleibt der zweite ohne Wirkung. Seinen Griff erkennt der Lader an einer eigenen Kennzeichnung, nicht an den Methoden: Jedes Objekt, das Ihre Seite vorher unter diesem Namen angelegt hat, ersetzt er, auch einen Platzhalter mit einer Methode einwilligen. Hat Ihre Seite den Namen schreibgeschützt angelegt, bleibt ihr Objekt stehen, und das Chatfenster läuft ohne die Methoden des Laders.

MethodeWirkung
einwilligen()Legt xicbot.einwilligung.<Schlüssel> mit dem Wert ja für 180 Tage ab, lädt das Chatfenster im Hintergrund und liefert true. Ohne nutzbaren Speicher gilt die Zustimmung für diesen Seitenaufruf.
widerrufen()Nimmt die Zustimmung zurück und schließt ein offenes Chatfenster. Ein geladenes Chatfenster widerruft die Einwilligung des Gesprächs beim Dienst; danach entfernt der Lader die gespeicherte Gesprächskennung und nimmt das Chatfenster aus der Seite. Liefert ein Promise mit true, wenn der Dienst den Widerruf innerhalb der Frist bestätigt hat, sonst mit false.
stand()Liefert ein Objekt mit vier Feldern zum aktuellen Zustand. Abgelaufene Einträge entfernt es dabei.

einwilligen()

  • Schreibt xicbot.einwilligung.<Schlüssel> mit dem Wert ja. Jeder Aufruf beginnt die Frist von 180 Tagen neu.
  • Lädt das Chatfenster sofort im Hintergrund, auch wenn die Seite selbst noch lädt. Wartet gerade ein widerrufen() auf seine Antwort, lädt der Lader das neue Chatfenster direkt nach dem Abbau des alten. Geöffnet wird es über den Auslöser.
  • Liefert true; die Zustimmung gilt ab dem Aufruf. Lässt der Browser das Ablegen nicht zu, gilt sie nur für diesen Seitenaufruf: stand().einwilligung ist dann true, auf der nächsten Seite aber false, bis Ihr Banner erneut einwilligen() aufruft.
  • Trägt der Einbaucode data-einwilligung="erforderlich" (gesetzt durch Einwilligung vor dem ersten Gespräch), lädt der Lader das Fenster erst nach diesem Aufruf von sich aus. Ein Klick auf den Auslöser lädt es auch vorher.
  • Die Zustimmung auf Ihrer Seite ersetzt die Einwilligung im Chatfenster nicht. Verlangt der Assistent sie, fragt das Fenster vor dem ersten Gespräch selbst danach.

widerrufen()

widerrufen() ist für den Moment gedacht, in dem ein Besucher seine Zustimmung in Ihrem Banner zurücknimmt.

  • Entfernt sofort die Zustimmung, also xicbot.einwilligung.<Schlüssel> und eine Zustimmung, die nur für diesen Seitenaufruf galt.
  • Nimmt eine Sprechblase der proaktiven Ansprache sofort von der Seite. Bis zum nächsten Seitenaufruf erscheint keine neue.
  • Verwirft eine Formularübergabe von der vorigen Seite, die noch nicht eingetragen ist, und entfernt xicbot.formular.<Schlüssel>.
  • Schließt das Chatfenster, falls es geöffnet ist.
  • Ist das Chatfenster geladen, bittet der Lader es, die Einwilligung des Gesprächs beim Dienst zu widerrufen. Das Fenster nimmt denselben Weg wie sein Knopf Einwilligung widerrufen. Lädt das Fenster noch, fragt der Lader es nur, wenn eine Gesprächskennung gespeichert ist, und zwar sobald es bereit ist. Ohne Chatfenster geht keine Anfrage an den Dienst.
  • Wartet höchstens fünf Sekunden auf die Antwort des Fensters. In dieser Zeit öffnet ein Klick auf den Auslöser nichts.
  • Entfernt danach xicbot.gespraech.<Schlüssel> und xicbot.besuch.<Schlüssel> und nimmt das Chatfenster aus der Seite, auch wenn keine Antwort kam.
  • Liefert ein Promise. Es löst mit true auf, wenn der Dienst den Widerruf bestätigt hat. false heißt, dass keine Bestätigung vorliegt, etwa weil kein Gespräch besteht, im Chatfenster keine Einwilligung erteilt wurde oder innerhalb der Frist keine Antwort kam. Ein zweiter Aufruf, während der erste noch wartet, liefert dasselbe Promise.

Nach dem Widerruf bleibt der Auslöser auf der Seite. Ein Klick darauf baut ein neues Chatfenster, das kein früheres Gespräch fortsetzt; verlangt der Assistent eine Einwilligung, fragt es erneut danach. Wie Besucher im Chatfenster selbst einwilligen, beschreibt Einwilligung und Besucherrechte.

stand()

FeldTypBedeutung
torbooleantrue, wenn der Einbaucode data-einwilligung="erforderlich" trägt.
einwilligungbooleantrue, wenn xicbot.einwilligung.<Schlüssel> den Wert ja hat und nicht abgelaufen ist, oder wenn Ihre Seite in diesem Seitenaufruf einwilligen() aufgerufen hat und seither nicht widerrufen().
gespraechbooleantrue, wenn eine nicht abgelaufene Gesprächskennung gespeichert ist.
offenbooleantrue, solange das Chatfenster geöffnet ist.

Der Lader meldet Änderungen dieses Zustands nicht von sich aus. Braucht Ihr Banner ihn, etwa um den richtigen Knopf zu zeigen, rufen Sie stand() in dem Moment auf, in dem Sie ihn brauchen.

Beispiel: eigenes Einwilligungsbanner

Das Beispiel verbindet zwei Funktionen eines eigenen Banners mit dem Chatfenster. Die Werte im Einbaucode sind gekürzt; übernehmen Sie Ihren Einbaucode aus der App. Ein Skript, das vor dem Lader läuft, findet window.xicbot noch nicht. Rufen Sie die Methoden deshalb aus den Ereignissen Ihres Banners auf oder frühestens nach DOMContentLoaded.

index.html html

<script src="https://cdn.xicbot.de/einbetten.js" data-xicbot="…" data-api="…" data-einwilligung="erforderlich" defer></script>
<script>
  // Besucher stimmt im Banner zu
  function allowChat() {
    if (window.xicbot) window.xicbot.einwilligen();
  }

  // Besucher nimmt die Zustimmung zurück
  function withdrawChat() {
    if (window.xicbot) window.xicbot.widerrufen();
  }
</script>

Nachrichten zwischen Seite und Chatfenster

Das Chatfenster läuft in einem iframe mit sandbox="allow-scripts allow-popups allow-popups-to-escape-sandbox" ohne allow-same-origin und mit referrerpolicy="no-referrer". Es hat damit einen undurchsichtigen Ursprung: es greift nicht auf Ihre Seite zu, Ihre Seite nicht auf das Fenster, und einen eigenen Speicher kann es nicht nutzen. Beim Aufbau gibt der Lader ihm im Fragment der Adresse rahmen.html#… mit, was es zum Start braucht: Schlüssel, Adresse der Schnittstelle, Ursprung Ihrer Seite, Platz, Sprache, Form und Breitenklasse der Schale, die gespeicherte Gesprächskennung und die Gestaltungsvorgaben der Seite. Das Fragment schickt der Browser an keinen Server. Alles Weitere läuft über postMessage; jede Nachricht ist ein Objekt mit xb: 1 und dem Feld art.

Vom Chatfenster an den Lader

ArtFelderAnlass und Wirkung
bereittitel, farbe, platz, senkrecht, abstand_x, abstand_y, breite, hoehe, skalierung, rundung, avatar, sprache, dazu ansprache_regeln und formulareEinmal, sobald die Einstellungen geladen sind, auch wenn der Assistent noch nicht bereit ist. Der Lader übernimmt Sprache, Name, Farbe, Bild am Auslöser, Platz und Maße und meldet die Schale. Mit ansprache_regeln erhält er die Regeln aus Proaktive Ansprache und wertet höchstens fünf davon aus; ist der Assistent noch nicht bereit, ist diese Liste leer, und der Lader zeigt keine Sprechblase. Aus formulare übernimmt er bis zu zehn freigegebene Formulare mit je bis zu 20 Feldern.
aenderndieselben Gestaltungsfelder, ohne Regeln und FormulareBeim Öffnen des Fensters und wenn der Tab wieder sichtbar wird, jeweils frühestens 60 Sekunden nach dem letzten Abruf der Einstellungen und nur, wenn sich die Gestaltung geändert hat. Der Lader übernimmt sie, ohne dass die Seite neu geladen wird.
schliessenkeineEscape im Chatfenster, der Knopf zum Schließen oder die Ablehnung der Einwilligung im Fenster. Der Lader schließt das Fenster und setzt den Fokus auf den Auslöser.
gespraechidNach dem Start eines Gesprächs mit dessen Kennung; der Lader speichert sie für 30 Tage. Mit leerer Kennung nach Gespräch löschen im Fenster oder wenn der Dienst das gespeicherte Gespräch nicht mehr findet; der Lader entfernt dann den Eintrag.
fokus-rausrueckwaertsTab oder Umschalt+Tab verlässt das letzte oder erste Element des Fensters. Der Lader setzt den Fokus auf den Auslöser; füllt die Schale den Bildschirm, schickt er stattdessen fokus-erste oder fokus-letzte zurück.
formular-fuellenaufruf, werkzeug, selektor, seite, felder, absenden, bestaetigtEinmal, nachdem der Besucher einen Formularvorschlag bestätigt hat. Der Lader trägt nur ein, wenn bestaetigt gesetzt ist und Werkzeug und Selektor zu einem freigegebenen Formular passen, siehe Formulare vorausfüllen.
widerrufen-quittungokAntwort auf widerrufen. ok ist true, wenn der Dienst die Einwilligung des Gesprächs widerrufen hat; ohne Gespräch oder nach einem Fehler false. Der Lader gibt das Ergebnis an widerrufen() weiter, entfernt die gespeicherte Gesprächskennung und den Besuchsmerker und nimmt das Fenster aus der Seite.
wegkeineDer Dienst meldet den Assistenten als unbekannt (unknown_widget) oder den Demozugang als abgelaufen (demo_expired), beim Laden der Einstellungen, beim Start eines Gesprächs oder beim Laden des Verlaufs. Der Lader entfernt Auslöser, Sprechblase und Fenster; die gespeicherte Gesprächskennung bleibt liegen.

Die Maße aus bereit und aendern prüft der Lader selbst noch einmal, bevor er sie übernimmt. Ein Wert außerhalb seiner Grenze bleibt unbeachtet, die übrigen Werte gelten trotzdem: abstand_x und abstand_y 0 bis 400 Pixel, breite 280 bis 720 Pixel, hoehe 320 bis 1200 Pixel, skalierung 80 bis 150 Prozent, rundung 0 bis 40 Pixel. Bis eine gültige Meldung eintrifft, gelten 20 Pixel Abstand, 384 Pixel Breite, 620 Pixel Höhe, 100 Prozent und 18 Pixel Rundung. Was die Maße auf der Seite bewirken, beschreibt Darstellung und Bedienung.

Vom Lader an das Chatfenster

ArtFelderAnlass und Wirkung
oeffnenkeineBeim Öffnen über den Auslöser. Das Fenster beginnt ein Gespräch, wenn noch keines besteht und eine verlangte Einwilligung im Fenster vorliegt, sieht nach geänderten Einstellungen, prüft bei einem laufenden Gespräch, ob ein Mitarbeiter es übernommen hat, und setzt den Fokus in das Eingabefeld.
schliessenkeineBeim Schließen des Fensters. Das Chatfenster vermerkt, dass es geschlossen ist, und sieht bis zum nächsten Öffnen nicht mehr von sich aus nach, ob ein Mitarbeiter das Gespräch übernommen hat.
schalevoll, breiteSobald das Fenster bereit ist, beim Öffnen, wenn sich Lage oder Maße der Schale ändern und wenn die Fensterbreite die Grenze von 560 Pixeln über- oder unterschreitet. voll ist true bis 560 Pixel Fensterbreite. breite ist handy unter 640, tablet unter 1024, desktop unter 1536 Pixeln, darüber breit.
fokus-erstekeineTab auf dem Auslöser bei offenem Fenster oder fokus-raus bei bildschirmfüllender Schale. Das Fenster setzt den Fokus auf sein erstes bedienbares Element, in der Regel das Schild-Symbol Datenschutz im Kopf.
fokus-letztekeineUmschalt+Tab auf dem Auslöser bei offenem Fenster oder fokus-raus rückwärts bei bildschirmfüllender Schale. Das Fenster setzt den Fokus auf sein letztes bedienbares Element, in der Regel den Sendeknopf; ist dieser gesperrt, auf das letzte bedienbare Element davor.
formular-berichtaufruf, gefuellt, fehlend, gesperrt, abgesendet, gefundenErgebnis einer Füllanweisung, nur wenn sie eine Aufrufkennung trägt. Das Chatfenster gibt es an den Dienst weiter; der Besucher sieht es an der Karte des Vorschlags.
widerrufenkeineNach window.xicbot.widerrufen(), bei einem noch ladenden Fenster, sobald es bereit meldet; aus dieser Meldung übernimmt der Lader dann nichts mehr. Das Fenster widerruft die Einwilligung auf demselben Weg wie sein Knopf Einwilligung widerrufen und antwortet mit widerrufen-quittung.

Prüfungen auf beiden Seiten

  • Der Lader nimmt nur Nachrichten an, die sein eigenes Chatfenster gesendet hat (geprüft über event.source), deren Ursprung null oder der Ursprung der Basisadresse ist und die xb: 1 tragen.
  • Der Lader sendet mit dem Ziel *, weil das Chatfenster keinen benennbaren Ursprung hat. Solange kein Chatfenster besteht, sendet er nichts.
  • Das Chatfenster nimmt nur Nachrichten seines Elternfensters an, deren Ursprung dem mitgegebenen Ursprung Ihrer Seite entspricht.
  • Das Chatfenster sendet an den Ursprung Ihrer Seite, weil seine Nachrichten die Gesprächskennung tragen.
  • Eine Nachricht mit unbekannter art bleibt auf beiden Seiten ohne Wirkung.

Einträge im Browserspeicher

Das Chatfenster kann wegen der Sandbox keinen eigenen Speicher nutzen. Was einen Seitenwechsel überdauern soll, legt deshalb der Lader im Speicher Ihrer Seite ab, also unter dem Ursprung Ihrer Website. <Schlüssel> steht für den Wert von data-xicbot im Einbaucode.

EintragSpeicherWertFristGeschriebenEntfernt
xicbot.gespraech.<Schlüssel>localStorageKennung des Gesprächs30 Tage ab Beginn des Gesprächswenn im Chatfenster ein Gespräch beginntnach Gespräch löschen im Fenster, wenn der Dienst das Gespräch nicht mehr findet, nach widerrufen() oder beim Lesen nach Ablauf
xicbot.einwilligung.<Schlüssel>localStorageja180 Tage, jeder Aufruf von einwilligen() beginnt sie neudurch window.xicbot.einwilligen()sofort bei widerrufen() oder beim Lesen nach Ablauf
xicbot.besuch.<Schlüssel>localStorageja90 Tage ab dem letzten Schreibenwenn das Chatfenster geladen ist und eine Regel Beim zweiten Besuch für die aufgerufene Seite vorbereitet wirdnach widerrufen() oder beim Lesen nach Ablauf
xicbot.formular.<Schlüssel>sessionStorage des TabsFüllanweisung mit Feldwerten2 Minutenwenn ein bestätigtes Formular auf einer anderen Seite Ihrer Website liegt, direkt vor dem Seitenwechselbeim nächsten Start des Laders in diesem Tab oder sofort bei widerrufen()

Die Frist der Gesprächskennung beginnt mit dem Gespräch und verlängert sich bei späteren Besuchen nicht; nach 30 Tagen beginnt der Besucher ein neues Gespräch. Der Besuchsmerker enthält nur ja und keine Kennung. Die Namen der Einträge enthalten den Schlüssel aus dem Einbaucode: Nach Neuen Schlüssel erzeugen und dem Austausch des Einbaucodes liest der Lader die Einträge unter dem alten Namen nicht mehr.

Speicherformat mit Frist

Jeder Eintrag des Laders im localStorage ist ein JSON-Objekt mit dem Wert und dem Ablaufzeitpunkt in Millisekunden seit dem 1. Januar 1970:

localStorage json

{"wert":"ja","bis":1805000000000}
  • bis ist der Zeitpunkt des Schreibens plus Frist.
  • Beim Lesen gilt ein Eintrag mit verstrichenem bis als nicht vorhanden, und der Lader entfernt ihn. Bis zum nächsten Lesen bleibt ein abgelaufener Eintrag im Speicher stehen.
  • Ein Eintrag ohne dieses Format, etwa ein reiner Text aus einer älteren Fassung des Laders, gilt unverändert als Wert und erhält beim nächsten Schreiben eine Frist. Fehlt nur bis, läuft der Eintrag nicht ab.
  • Schreibt der Lader einen leeren Wert, entfernt er den Eintrag.
  • Fehler des Speichers, etwa ein gesperrter oder voller Speicher, fängt der Lader ab; der Eintrag fehlt dann.

Formularübergabe über einen Seitenwechsel

Liegt ein freigegebenes Formular auf einer festgelegten anderen Seite Ihrer Website, bringt der Lader die bestätigte Anweisung über einen Seitenwechsel dorthin. Die Werte stehen dabei nicht in der Adresse, sondern im sessionStorage des Tabs.

  • Inhalt: aufruf, werkzeug, selektor, seite, bis zu 20 felder mit ihren Werten, absenden, bestaetigt und bis.
  • Geschrieben wird nur für eine andere Seite desselben Ursprungs; direkt danach ruft der Lader die Zielseite auf. Liegt die Seite auf einer anderen Domain oder Subdomain, entsteht keine Übergabe.
  • Der Lader liest den Eintrag beim nächsten Start in diesem Tab einmal und entfernt ihn sofort, auch wenn er ihn danach verwirft.
  • Verworfen wird er, wenn er nicht lesbar ist, wenn bis verstrichen ist oder mehr als zwei Minuten in der Zukunft liegt.
  • Ausgeführt wird er erst, wenn das Chatfenster die Einstellungen gemeldet hat, und nur auf der Seite, für die er geschrieben wurde und die für das Formular festgelegt ist.
  • Ohne nutzbaren sessionStorage bleibt der Seitenwechsel aus; das Chatfenster erhält einen formular-bericht ohne eingetragene Felder.

Freigabe, Feldarten und das Eintragen selbst beschreibt Formulare vorausfüllen.

Wenn der Browser den Speicher sperrt

Sperrt der Browser den Speicher Ihrer Seite, beginnt jeder Seitenaufruf von vorn. Innerhalb eines Seitenaufrufs arbeitet das Chatfenster wie gewohnt, nach einem Seitenwechsel setzt es das Gespräch aber nicht fort. Die Regel Beim zweiten Besuch löst nicht aus. einwilligen() gilt dann für den laufenden Seitenaufruf: stand().einwilligung ist true, und mit data-einwilligung="erforderlich" lädt das Fenster sofort. Auf der nächsten Seite wartet der Lader wieder auf einwilligen() oder einen Klick auf den Auslöser.

Weiterlesen

Häufige Fragen

Wie verbinde ich mein Einwilligungsbanner mit dem Chat?

Rufen Sie bei Zustimmung window.xicbot.einwilligen() auf und beim Zurücknehmen window.xicbot.widerrufen(). Mit Einwilligung vor dem ersten Gespräch trägt der Einbaucode data-einwilligung="erforderlich"; der Lader lädt das Fenster dann von sich aus erst nach einwilligen(), ein Klick auf den Auslöser lädt es auch vorher.

Warum beginnt das Chatfenster ein neues Gespräch, statt das alte fortzusetzen?

Fortgesetzt wird nur ein Gespräch, dessen Kennung gespeichert ist und das der Dienst noch kennt. Ein neues beginnt, wenn die Kennung älter als 30 Tage ist, der Besucher Gespräch löschen gewählt hat, widerrufen() die Kennung entfernt hat oder der Dienst das Gespräch nicht mehr findet. Dasselbe gilt, wenn der Browser den Speicher sperrt, wenn die Seite unter einem anderen Ursprung liegt oder wenn der Einbaucode einen neuen Schlüssel trägt.

Wie lange bleibt ein Gespräch über Seitenwechsel erhalten?

Die Kennung liegt 30 Tage ab Beginn des Gesprächs im localStorage Ihrer Seite. In dieser Zeit setzt das Fenster das Gespräch auf jeder Seite desselben Ursprungs fort, sofern der Browser den Speicher nicht sperrt.

Welche Einträge legt das Widget im Browser ab?

Bis zu drei Einträge im localStorage, jeweils mit Frist: Gesprächskennung, Zustimmung und Besuchsmerker. Dazu kommt für höchstens zwei Minuten eine Formularübergabe im sessionStorage. Die Tabelle oben nennt Wert, Frist und Anlass jedes Eintrags.

Kann meine Seite das Chatfenster per Skript öffnen?

window.xicbot hat dafür keine Methode; es bietet nur einwilligen(), widerrufen() und stand(). Geöffnet wird das Fenster über den Auslöser.

Eine Stelle ist unklar geblieben?

Schreiben Sie uns, welche Seite und welcher Schritt gemeint ist. Wir antworten persönlich.

Anfrage in drei Schritten

  1. 1. Anliegen
  2. 2. Ihr Fall
  3. 3. Kontakt

Worum geht es?

Ein Klick genügt, alles Weitere ist freiwillig.

Erzählen Sie kurz von Ihrem Fall

Alle Angaben in diesem Schritt sind freiwillig. Sie helfen uns, gleich mit etwas Konkretem zu antworten statt mit Rückfragen.

Anfragen im Monat, ungefähr (optional)
Wann soll es losgehen? (optional)
Wie erreichen wir Sie?

Name und E-Mail-Adresse genügen. Wir antworten persönlich.

Wir verwenden Ihre Angaben, um Ihre Anfrage zu bearbeiten. Mehr dazu in der Datenschutzerklärung.