Zum Inhalt springen

Referenz der Widget-JavaScript-API

Für: EntwicklerVoraussetzung: Das Widget-Skript auf der SeiteScreenshots zeigen Beispieldaten

Das StrikeUp-Widget-Skript gibt Ihrer Seite zwei Einstiegspunkte: window.initStrikeUpChatWidget(config), das das Widget für eine Person startet, und window.StrikeUpChat, ein kleines Objekt, mit dem Ihr Code den Chat öffnet und schließt, auf seine Bereitschaft wartet, ihn entfernt und dem Assistenten versteckten Seitenkontext übergibt. Alles andere, etwa Farben, Position und URL-Regeln, stammt aus den gespeicherten Einstellungen des Widgets in StrikeUp und ist nicht Teil der API. Diese Seite listet jede Option und jede Methode mit Typ, Standardwert, Rückgabewert und den Konsolenmeldungen, die sie erzeugen kann.

Das Skript legt seine Globals an, wenn es läuft. Ihre Seite ruft initStrikeUpChatWidget auf, sobald die Person bekannt ist; das Widget holt mit dem Anwendungs-Token seine gespeicherten Einstellungen, zeichnet sich und lädt den Chat in einem Frame. window.StrikeUpChat spricht dann für Sie mit diesem Chat.

GlobalTypHinweise
window.initStrikeUpChatWidget(config)(config: object) => voidStartet das Widget. Liefert nichts (kein Promise). Aufrufe laufen nacheinander; ein Aufruf ohne applicationToken wird ignoriert
window.StrikeUpChatObjektExistiert erst, nachdem das Skript gelaufen ist
window.destroyStrikeUpChatWidget()() => voidDasselbe wie StrikeUpChat.destroy()
window._strikeupChatWidgetQueueArray von KonfigurationenAufrufe, die vor dem Laden des Skripts eingereiht wurden; das Skript spielt sie ab
strikeupChatWidgetLoadedEreignis auf windowWird einmal ausgelöst, wenn das Skript fertig gelaufen ist, nicht wenn der Chat bereit ist
window.chatWidgetConfig.loginTicketZeichenketteDer einzige Wert, den das Skript aus diesem Global liest, als Ersatz für loginTicket
OptionTypStandardWirkung
applicationTokenZeichenkette, PflichtkeinerErkennt das Widget; seine Einstellungen werden damit geladen
userIdZeichenkette, höchstens 255 ZeichenkeinerDie ID des Kunden; Schlüssel für Verlauf, Erinnerungen, Zugangsdaten und Anmeldung. Ein anderer Wert in einem späteren Aufruf startet das Widget neu
userDisplayNameZeichenkettekeinerDer Name des Kunden, nur gefüllt, wenn leer
userEmailZeichenkettekeinerDie E-Mail des Kunden, nur gefüllt, wenn leer
userCompanyIdZeichenkettekeinerVerbindet den Kunden mit dem Kundenunternehmen mit dieser Unternehmens-ID, wenn er noch keines hat
userCompanyNameZeichenkettekeinerDer Name zum Abgleichen oder Anlegen des Unternehmens
handoffUserIdZeichenketteuserIdDie ID der Person in Ihrem Helpdesk für die Übergabe an Menschen
loginTicketZeichenkettewindow.chatWidgetConfig.loginTicket, dann ein Parameter loginTicket in der Adresse der SeiteMeldet den Kunden ohne Abfrage an; 60 Sekunden gültig, einmalig. Ein neues Ticket in einem späteren Aufruf startet das Widget neu
serverAuthorizationsArray<{ serverId: string; authData: Record<string, string> }>keinerWerden per Nachricht an den Chat-Frame übergeben, nie in seiner Adresse, und beim Verbinden des Chats als Toolkit-Zugangsdaten des Kunden gespeichert
getServerAuthorizations() => Array<…> | null | Promise<Array<…> | null>keinerLiefert frische Zugangsdaten in derselben Form. Das Widget ruft es vor jeder Nachricht und Tool-Freigabe auf und wenn gespeicherte Zugangsdaten abgelehnt werden; es wartet höchstens 5 Sekunden. null behält die aktuellen
openTargetstringaus strikeup_open in der Adresse der Seitechat:<id> oder run:<id>; das Widget öffnet diesen Chat oder Lauf, sobald der Kunde angemeldet ist. Wird von Öffnen-Links in Benachrichtigungen automatisch gesetzt
displayType"popup" | "modal" | "sidebar" | "panel" | "custom-trigger" | "custom-trigger-panel" | "inline"Die gespeicherte Darstellungsart des WidgetsÜberschreibt auf dieser Seite die gespeicherte Darstellungsart
containerCSS-Selektor | HTMLElementkeinerPflicht für "inline"; das Element, das der Chat füllt. Wird nirgendwohin gesendet
portalDisplayType"inline"keinerNur Inline: Das Kundenportal öffnet sich im selben Container
theme"light" | "dark" | "system"Die letzte Wahl der Person im Widget, sonst "system"Der Farbmodus des Chats
showToolArgsBoolean (nur true zählt)falseZeigt die Argumente jedes Tool-Aufrufs in den Fortschrittsschritten, die Besucher sehen

Nicht aufgeführte Optionen werden ignoriert. Auch die alte Option headers wird ignoriert, mit einer Warnung in der Browserkonsole; übergeben Sie Zugangsdaten in serverAuthorizations. Das Aussehen des Widgets stammt aus seinen gespeicherten Einstellungen, nicht aus Optionen: Position, Farben und Größe der Schaltfläche, Breite und Höhe, Display behaviour, Modal-Hintergrund, Symbol der Startschaltfläche und URL-Regeln werden unter KonfigurierenUser Interface eingestellt oder sind fest. Nur displayType lässt sich aus Ihrem Code überschreiben.

Zweiter AufrufErgebnis
Dieselbe userId und kein neues loginTicketDer offene Chat bleibt unberührt; nur die gespeicherten Einstellungen werden aufgefrischt. Neue serverAuthorizations werden weitergegeben und erneut gespeichert
Andere userId oder ein neues loginTicketDas Widget wird entfernt und für die neue Identität neu gestartet
Nach StrikeUpChat.destroy()Ein frisches Widget startet
MemberSignaturLiefertVerhalten
openopen(options?: { message?: string; openContext?: string; autoSend?: boolean | 1 | "1" | "true" })voidÖffnet den Bereich einer Darstellungsart mit eigenem Auslöser. Tut nichts, bevor das Widget bereit ist. message allein erscheint als Eröffnungszeile des Assistenten; mit autoSend wird es als erste Frage der Person in einem neuen Chat gesendet. openContext ist versteckter Kontext für die erste Antwort (auf 8192 Zeichen gekürzt)
closeclose()voidKlappt einen Bereich mit eigenem Auslöser ein. Keine Wirkung auf das Panel. Bei Popup, Modal und Seitenleiste vermeiden
destroydestroy()voidEntfernt Startschaltfläche, Bereich und Chat-Frame, beendet die Live-Verbindung und stellt das Padding Ihrer Seite wieder her. Sicher, auch wenn nichts angezeigt wird. Meldet den Kunden nicht ab
getDisplayTypegetDisplayType()string | nullDie verwendete Darstellungsart; null vor dem Start und nach destroy()
isReadyisReady()booleantrue, sobald der Chat seine Bereitschaft gemeldet hat, nach einem Ersatz-Timeout von 8 Sekunden oder sofort, wenn nichts gezeichnet wird (durch URL-Regeln ausgeblendet, Start gescheitert, Popup noch nicht geöffnet)
isOpenisOpen()booleantrue, solange der Chat sichtbar ist; bei Panel und Inline immer true, solange sie auf der Seite sind; false vor dem Start, nach destroy() und auf ausgeblendeten Pfaden. Kein Änderungsereignis
onReadyonReady(cb: (displayType: string | null) => void)() => void, zum AbmeldenRuft cb auf, wenn das Widget bereit ist. null bedeutet: Token falsch oder Einstellungen nicht ladbar. Ist es schon bereit, läuft cb direkt nach der Rückkehr des Aufrufs
context.setset(value: string | object)booleanErsetzt den bereitgestellten Seitenkontext. Objekte werden zu JSON. false über 8192 Zeichen, und nichts wird bereitgestellt
context.addadd(value: string | object)booleanHängt in einer neuen Zeile an; false, wenn das Ergebnis länger als 8192 Zeichen wäre
context.clearclear()voidLeert den bereitgestellten Seitenkontext
context.getget()string | nullDer bereitgestellte Wert; null, sobald er mit einer Nachricht gesendet wurde
setServerAuthorizationssetServerAuthorizations(authorizations: Array<{ serverId; authData }>)booleanÜbergibt dem Chat neue Zugangsdaten, etwa nachdem Ihr Token erneuert wurde. Ersetzt die beim Start übergebenen; nur die genannten Toolkits sind betroffen. false mit Konsolenwarnung, wenn der Wert kein Array ist

Der ältere Optionsname developerContext für openContext funktioniert weiter und schreibt eine Veraltet-Warnung in die Konsole.

MeldungUrsache
[StrikeUpChat] displayType "inline" requires a valid container (CSS selector or Element). Widget not mounted.displayType: "inline" ohne container, der ein Element trifft
[StrikeUpChat] context.set rejected: N chars exceeds the 8192-char limit.context.set() mit mehr als 8192 Zeichen
[StrikeUpChat] context.add rejected: result N chars exceeds the 8192-char limit.context.add() würde den Kontext länger als 8192 Zeichen machen
[StrikeUpChat] open({ developerContext }) is deprecated — use open({ openContext }).Der alte Optionsname
[StrikeUpChat] onReady callback threw:Ihr onReady-Callback hat einen Fehler geworfen; das Widget hat ihn abgefangen
[StrikeUpChat] Widget initialisation failed:Ein unerwarteter Fehler beim Start
[StrikeUpChat] setServerAuthorizations rejected: expected an array of { serverId, authData }.setServerAuthorizations() mit etwas anderem als einem Array
[StrikeUpChat] serverAuthorizations ignored: expected an array of { serverId, authData }.Die Option serverAuthorizations ist kein Array
[StrikeUpChat] getServerAuthorizations returned an invalid value; keeping the previous credentials.Ihr Callback lieferte etwas anderes als ein Array oder null
[StrikeUpChat] getServerAuthorizations failed; keeping the previous credentials.Ihr Callback warf einen Fehler oder sein Promise wurde abgelehnt
[Widget] Failed to parse includeUrls: oder excludeUrls:Die gespeicherten URL-Regeln des Widgets sind ungültig
Gar nichtsFalsches Anwendungs-Token oder nicht erreichbare API: Nichts wird gezeichnet, und onReady meldet null

Die Öffnen-Schaltfläche in einer Benachrichtigung per E-Mail, Slack, Telegram oder Teams führt zur App-Seiten-URL, die unter KonfigurierenUser Interface eingetragen ist, ergänzt um ?strikeup_open=chat:<id> oder run:<id>. Das Skript liest diesen Parameter, sobald es lädt, entfernt ihn aus der Adressleiste, damit ein Neuladen ihn nicht erneut öffnet, und gibt ihn als openTarget weiter. Ein Chat öffnet sich nur, wenn er in der eigenen Liste des angemeldeten Kunden steht; ein Lauf öffnet sich im Kundenportal, nur solange das Portal eingeschaltet ist. Alles andere lässt den Kunden auf dem Startbildschirm. Behalten Sie den Parameter, wenn Ihre Seite umleitet, bevor das Widget startet. Siehe Auftragsbenachrichtigungen und Chat-Apps.

window.StrikeUpChat und das echte initStrikeUpChatWidget existieren erst, nachdem das Skript gelaufen ist. Mit dem schlichten Script-Tag vor Ihrem Inline-Aufruf am Ende des <body> ist das immer der Fall. Lädt das Skript asynchron, starten Sie das Widget aus dem Ereignis strikeupChatWidgetLoaded oder legen vor allem anderen window._strikeupChatWidgetQueue und ein einreihendes initStrikeUpChatWidget an; das Skript übernimmt die Warteschlange und spielt sie ab. Laden Sie das Skript nicht im <head>: Dort scheitert es teilweise, die URL-Regeln werden bei Routenwechseln nicht mehr neu geprüft, und das Lade-Ereignis wird nie ausgelöst.

Eine Seite mit eigener Schaltfläche „Assistent ein/aus“ an einem Widget mit der Darstellungsart Eigener Auslöser — Panel. Die Schaltfläche bleibt deaktiviert, bis das Widget bereit ist, und öffnet oder schließt dann den Bereich.

<button id="ask-ai" disabled>Assistent ein/aus</button>
<script src="https://<your widget script URL>" data-api-url="https://api.strikeup.io"></script>
<script>
window.initStrikeUpChatWidget({
applicationToken: "<your widget's application token>",
userId: "cus_48210",
userDisplayName: "Rosie Kendall",
userCompanyId: "SAP-5531"
});
const button = document.getElementById("ask-ai");
window.StrikeUpChat.onReady(function (type) {
if (type === null) return; // Token falsch oder API nicht erreichbar
button.disabled = false;
});
button.onclick = function () {
window.StrikeUpChat.isOpen() ? window.StrikeUpChat.close() : window.StrikeUpChat.open();
};
</script>
Eine neutrale Beispiel-Web-App, in deren eigener Kopfzeile die hervorgehobene blaue Schaltfläche "Assistent ein/aus" sitzt. Ihr Klick-Handler prüft window.StrikeUpChat.isOpen() und ruft open() oder close() auf. Sie hat gerade das Widget, eingestellt auf Eigener Auslöser — Panel, als Bereich in voller Höhe rechts geöffnet, Titel "Demo Ltd Support chat", mit Willkommenstext, den Schnellstart-Karten "Rechnung finden", "Tarif ändern", "API-Nutzung prüfen" und "Zahlungsmethode ändern" und dem Eingabefeld. Am linken Rand des Bereichs sitzt ein Reiter zum Einklappen.Eine neutrale Beispiel-Web-App, in deren eigener Kopfzeile die hervorgehobene blaue Schaltfläche "Assistent ein/aus" sitzt. Ihr Klick-Handler prüft window.StrikeUpChat.isOpen() und ruft open() oder close() auf. Sie hat gerade das Widget, eingestellt auf Eigener Auslöser — Panel, als Bereich in voller Höhe rechts geöffnet, Titel "Demo Ltd Support chat", mit Willkommenstext, den Schnellstart-Karten "Rechnung finden", "Tarif ändern", "API-Nutzung prüfen" und "Zahlungsmethode ändern" und dem Eingabefeld. Am linken Rand des Bereichs sitzt ein Reiter zum Einklappen.
Ihre Seite steuert das Widget über window.StrikeUpChat; hier schaltet eine Schaltfläche es mit isOpen(), open() und close() um.
Was dieser Screenshot zeigt
Ansicht
(host page (https://app.example.com/))
Hervorgehoben
button “”, host-header, pane open. calls StrikeUpChat.isOpen() ? close() : open()
Außerdem sichtbar
Host page with its own toggle button; Full-height pane on the right with welcome text, cards and message box
Zweck
the JavaScript API at work

Weitere Aufrufe, die darauf aufbauen:

// Sofort fragen, mit einem Hinweis für die erste Antwort
window.StrikeUpChat.open({
message: "Fasse die Rechnung INV-2026-0418 zusammen",
autoSend: true,
openContext: "Geöffnet aus der Detailseite der Rechnung INV-2026-0418."
});
// Die Seite bei jedem Routenwechsel beschreiben (Grenze 8192 Zeichen)
const ok = window.StrikeUpChat.context.set(
"User: Rosie Kendall (cus_48210)\nPage: Invoice details (/invoices/inv_2026_0418)"
);
if (!ok) console.warn("Seitenkontext zu groß");
// Eine andere Person meldet sich ohne Neuladen an: für sie neu starten
window.initStrikeUpChatWidget({ applicationToken: TOKEN, userId: "cus_48284", loginTicket: freshTicket });
// Die Person meldet sich von Ihrer App ab: Widget entfernen und beim nächsten Laden die userId der nächsten Person übergeben
window.StrikeUpChat.destroy();
  • Kein Promise und keine Ereignisse außer der Bereitschaft. initStrikeUpChatWidget liefert nichts; verwenden Sie onReady. Es gibt kein Ereignis, wenn die Person den Chat öffnet oder schließt; fragen Sie isOpen() ab, zum Beispiel alle 200 Millisekunden.
  • Keine Abmeldung. destroy() entfernt das Widget, lässt die Sitzung des Endkunden in diesem Browser aber bestehen. Kunden melden sich mit „Abmelden“ im Kundenportal ab.
  • Kein Senden in einen bestehenden Chat. Der einzige Weg, aus Ihrem Code eine Nachricht zu senden, ist open({ message, autoSend: true }), das immer ein neues Gespräch beginnt.
  • Keine Sprachoption. Der Chat folgt der Browsersprache der Person (Englisch, Deutsch oder Spanisch).
  • Keine Optionen für das Aussehen. Farben, Position und Symbol der Startschaltfläche, Größen und URL-Regeln stammen aus den Einstellungen des Widgets.
  • Kein Zugriff aus anderen Frames. Nur das Fenster, das das Skript geladen hat, besitzt window.StrikeUpChat.
  • Kein öffentliches Nachrichtenprotokoll. Die Nachrichten, die die Seite mit dem Chat-Frame austauscht, und die Parameter in der Adresse des Frames sind intern und ändern sich ohne Ankündigung; verwenden Sie nur die Methoden auf dieser Seite.
  • Ein Widget pro Seite. Ein zweiter Aufruf von initStrikeUpChatWidget mit einer anderen Person ersetzt das erste Widget.