Zum Inhalt springen

Fehlerbehebung

Bevor Sie spezifische Probleme debuggen, stellen Sie sicher, dass Sie einen error-Listener angehängt haben, damit SDK-Fehler in Ihrer Konsole angezeigt werden:

widget.on("error", (error) => {
console.error("Widget error:", error.message);
});

WidgetSDK can only be used in a browser environment

Abschnitt betitelt „WidgetSDK can only be used in a browser environment“

widget.init() wurde außerhalb eines Browser-Kontexts aufgerufen, typischerweise während des serverseitigen Renderings. Der Konstruktor ist SSR-sicher und kann überall aufgerufen werden, aber init() muss im Browser ausgeführt werden. Verschieben Sie widget.init() in einen useEffect-Aufruf oder einen anderen Codepfad, der nur im Browser ausgeführt wird. Siehe den React-Integrationsleitfaden für Muster.

Die Option widgetKey wurde nicht an den Konstruktor übergeben. Überprüfen Sie, ob Ihre Umgebungsvariable gesetzt ist und dass ihr Wert gelesen wird, bevor WidgetClient erstellt wird.

widget.init() wurde zweimal auf derselben Instanz aufgerufen. Schützen Sie den Aufruf mit einer Ref oder einem Flag oder erstellen Sie eine neue WidgetClient-Instanz pro Sitzung.

Eine Methode wie joinQueue() wurde aufgerufen, bevor widget.init() abgeschlossen wurde. Warten Sie auf das ready-Event oder bis das init()-Promise erfüllt ist, bevor Sie andere Methoden aufrufen:

await widget.init(); // wait for this to resolve
await widget.joinQueue({ terms: true });

StatusBedeutungBehebung
400Fehlerhafte Anfrage – fehlende oder fehlerhafte ParameterÜberprüfen Sie den widgetKey-Wert und stellen Sie sicher, dass page_url eine gültige URL ist
403Verboten – Ursprung nicht auf Allowlist oder Domain nicht verifiziertFügen Sie Ihre Domain unter Einstellungen → Widgets → Domains hinzu und verifizieren Sie sie
404Widget nicht gefundenBestätigen Sie, dass der widgetKey mit einem vorhandenen, aktiven Widget übereinstimmt
423Widget inaktivReaktivieren Sie das Widget im Dashboard
429Rate-Limit überschrittenSiehe Rate-Limiting unten

Ihr Widget-Schlüssel fehlt oder ist falsch. Überprüfen Sie den Wert und stellen Sie sicher, dass die Domain, von der aus Sie aufrufen, unter Einstellungen → Widgets → Domains auf der Allowlist steht.

Der Anforderungsursprung stimmt mit keiner erlaubten Domain überein. Öffnen Sie Einstellungen → Widgets, wählen Sie Ihr Widget aus und fügen Sie Ihren vollständigen Ursprung einschließlich Protokoll hinzu (z.B. https://example.com). Die Domain-Verifizierung ist erforderlich, bevor der Ursprung akzeptiert wird.


joinQueue() wurde aufgerufen, während der Besucher bereits in der Warteschlange ist. Überprüfen Sie widget.getState(), bevor Sie joinQueue() aufrufen, und rufen Sie es nur im ready-Status auf.

Cannot join queue while in call or assigned to agent

Abschnitt betitelt „Cannot join queue while in call or assigned to agent“

Eine Sitzung ist bereits im Gange. Lauschen Sie auf call:ended, bevor Sie dem Besucher erlauben, erneut in eine Warteschlange einzutreten.

Warteschlangenposition aktualisiert sich nicht mehr

Abschnitt betitelt „Warteschlangenposition aktualisiert sich nicht mehr“

Die Echtzeit-Verbindung wurde möglicherweise unterbrochen. Dies ist nicht fatal – das SDK fällt auf Polling zurück. Wenn die Updates vollständig aufhören, rufen Sie widget.destroy() auf und initialisieren Sie neu.


Der öffentliche init-Endpunkt ist auf 10 Anfragen pro Minute pro IP begrenzt. Dies wird fast immer dadurch verursacht, dass widget.init() bei jedem Render aufgerufen wird.


Das Videokonferenz-Script wurde möglicherweise nicht geladen. Überprüfen Sie den Netzwerk-Tab Ihres Browsers auf blockierte Anfragen. Wenn Sie eine strenge Content Security Policy (CSP) haben, müssen Sie möglicherweise die Domain des Konferenzanbieters auf die Allowlist setzen.

Ein Netzwerkfehler hat verhindert, dass das Konferenz-Script geladen wurde. Überprüfen Sie Ihre Verbindung und alle Firewall- oder Proxy-Regeln, die externe Scripts blockieren könnten.

Parent node not found for video conference after timeout

Abschnitt betitelt „Parent node not found for video conference after timeout“

Das DOM-Element, in das die Anruf-UI gemountet werden sollte, wurde innerhalb von 5 Sekunden nicht gefunden. Wenn Sie einen benutzerdefinierten container verwenden, stellen Sie sicher, dass das Element im DOM vorhanden ist, bevor Sie widget.init() aufrufen.


Agent fordert Cobrowsing an, aber es passiert nichts

Abschnitt betitelt „Agent fordert Cobrowsing an, aber es passiert nichts“

Stellen Sie sicher, dass Sie das cobrowse:consent:required-Event behandeln. Ohne Handler wird die Zustimmungsaufforderung niemals angezeigt und Cobrowsing kann nicht starten:

widget.on("cobrowse:consent:required", ({ accept, decline }) => {
// You must call accept() or decline() — without this, cobrowsing will not start
});

Sitzungs-Tokens laufen nach 30 Minuten ab und Auth-Tokens nach 15 Minuten. Das SDK erneuert Tokens automatisch vor dem Ablauf, sodass dies unter normalen Bedingungen keine Auswirkungen auf Besucher haben sollte.

Wenn die Erneuerung selbst fehlschlägt (z.B. durch Netzwerkausfall), gibt das SDK ein token:expired-Event aus. Rufen Sie in diesem Fall widget.destroy() auf und erstellen Sie eine neue Instanz, um neu zu initialisieren.