Zum Inhalt springen

WidgetClient API-Referenz

WidgetClient ist die Hauptklasse, die von @univerx/client-sdk exportiert wird. Sie verwaltet den vollständigen Lebenszyklus einer Besuchersitzung: Authentifizierung, Warteschlange, Videoanruf und Cobrowsing.

new WidgetClient(config: WidgetConfig)

Löst einen Fehler aus, wenn widgetKey nicht bereitgestellt wird. Kann sicher in SSR-/Server-Umgebungen aufgerufen werden — die Browser-Umgebungsprüfung wird auf init() verschoben. Siehe Konfiguration für die vollständige WidgetConfig-Referenz.

widget.init(): Promise<void>

Authentifiziert sich mit der Univerx-API, richtet Echtzeit-Kanäle ein und startet Cursor-Tracking. Muss vor jeder anderen Methode aufgerufen werden. Emittiert ready bei Erfolg und setzt den Status auf error bei Fehler.

Löst einen Fehler aus, wenn er außerhalb einer Browser-Umgebung oder mehr als einmal auf derselben Instanz aufgerufen wird.


widget.submitForm(formData: Record<string, unknown>): Promise<void>

Übermittelt Formulardaten vor dem Anruf (z.B. Name des Besuchers, E-Mail, Problemtyp), bevor die Warteschlange betreten wird. Rufen Sie dies auf, nachdem init() abgeschlossen ist und bevor joinQueue() aufgerufen wird.


widget.joinQueue(consents?: Record<string, boolean>): Promise<QueueTicket>

Platziert den Besucher in der Support-Warteschlange. Übergeben Sie alle Zustimmungs-Flags, die von Ihrem Formular vor dem Anruf gesammelt wurden (z.B. terms, recording).

Gibt ein QueueTicket zurück:

interface QueueTicket {
ticket_id: string;
position: number;
}

Löst einen Fehler aus, wenn das Widget bereits in der Warteschlange ist oder wenn der Besucher sich derzeit in einem Anruf befindet oder einem Agenten zugewiesen ist.


widget.leaveQueue(): Promise<void>

Entfernt den Besucher aus der Warteschlange und emittiert queue:left.


widget.getQueuePosition(): number | null

Gibt die aktuelle Warteschlangenposition zurück oder null, wenn der Besucher nicht in einer Warteschlange ist.


widget.endSession(): Promise<void>

Beendet die aktive Videositzung. Stoppt auch Cobrowsing, falls es läuft.


widget.stopCobrowsing(): Promise<void>

Stoppt die Cobrowsing-Sitzung, ohne den Anruf zu beenden.


widget.getState(): WidgetState

Gibt den aktuellen Widget-Status zurück:

type WidgetState =
| "idle"
| "initializing"
| "ready"
| "submitting"
| "queued"
| "assigned"
| "in_call"
| "ended"
| "error";

widget.getCurrentAgent(): Agent | null

Gibt den aktuell zugewiesenen Agenten zurück oder null, wenn keiner zugewiesen wurde.

interface Agent {
id: string;
name: string;
avatar_url?: string;
}

widget.on<K extends keyof EventMap>(event: K, callback: (...args: EventMap[K]) => void): void

Abonniert ein Widget-Event. Siehe Events unten für alle verfügbaren Events.


widget.off<K extends keyof EventMap>(event: K, callback: (...args: EventMap[K]) => void): void

Entfernt einen zuvor registrierten Event-Listener.


widget.executeJitsiCommand(command: string, ...args: unknown[]): void

Führt einen Videoanruf-Befehl auf der aktiven Videokonferenz aus. Häufige Befehle:

BefehlWirkung
toggleAudioMikrofon stummschalten / Stummschaltung aufheben
toggleVideoKamera aktivieren / deaktivieren
hangupKonferenz beenden

widget.destroy(): void

Bereinigt alle Ressourcen: stoppt Cursor-Tracking, schließt Echtzeit-Kanäle, zerstört interne Manager und emittiert destroyed. Rufen Sie dies immer beim Component Unmount auf.

Abonnieren Sie mit widget.on(event, handler) und deabonnieren Sie mit widget.off(event, handler).

EventPayloadBeschreibung
readySDK initialisiert und bereit
destroyeddestroy() wurde aufgerufen und alle Ressourcen wurden bereinigt
token:refreshedSitzungs-Token wurde automatisch erneuert
token:expiredToken-Erneuerung fehlgeschlagen; die Sitzung kann keine authentifizierten Anfragen mehr stellen — neu initialisieren
EventPayloadBeschreibung
queue:joinedQueueTicketBesucher ist der Warteschlange beigetreten
queue:updatenumberWarteschlangenposition hat sich geändert
queue:leftBesucher hat die Warteschlange verlassen
EventPayloadBeschreibung
agent:assignedAgentEin Agent hat die Sitzung akzeptiert
call:readySessionInfoSitzungsinformationen verfügbar; Anruf-UI kann gerendert werden
call:startedVideoanruf ist aktiv
call:endedVideoanruf beendet
EventPayloadBeschreibung
cobrowse:invitationAgent hat Cobrowsing angefordert
cobrowse:consent:requiredCobrowsingConsentHandlersZustimmungsaufforderung sollte dem Besucher angezeigt werden
cobrowse:startedCobrowsing-Sitzung gestartet
cobrowse:stoppedCobrowsing gestoppt, ohne die Sitzung zu beenden
cobrowse:endedCobrowsing-Sitzung beendet
EventPayloadBeschreibung
agent:cursor:moveCursorPositionAgenten-Cursor bewegt
agent:cursor:clickCursorPositionAgent hat geklickt
agent:cursor:visiblebooleanCursor-Sichtbarkeit hat sich geändert
EventPayloadBeschreibung
errorErrorEin unbehandelter Fehler ist aufgetreten