Clientseitige Events¶
Die clientseitigen Events, zum Beispiel wenn eine neue TextChat Nachricht eintrifft, werden über den Message Bus
lcapi.messageBus
verteilt. lcapi.messageBus
ist vom Typ EventEmitter
und kann dazu benutzt werden um auf bestimmte Events zu hören aber auch um zwischen zwei Plugins zu kommunizieren.
Wie Sie auf das Event client-offline
hören, können Sie folgendem Beispiel entnehmen:
lcapi.messageBus.on('client-offline', function(event) {
console.log('Client is offline');
});
Weitere Methoden des Message Bus können Sie der nodejs Dokumentation entnehmen.
Im folgenden werden alle Events beschrieben, die über den Message Bus verteilt werden.
client-online¶
Das Event client-online
wird ausgelöst, sobald eine Verbindung zum Server aufgebaut wurde und sich der Benutzer erfolgreich
am Server angemeldet hat. Es besitzt folgende Struktur:
{ contact: <Object>, token: <String> }
- contact
- Das Kontaktobjekt des eingeloggten Benutzers. Die Struktur ist im Anhang Datenstruktur Kontakt - alle Felder beschrieben.
- token
- JWT Token, mit dem Sie sich direkt an den UCServer verbinden können.
client-offline¶
Das Event client-offline
wird ausgelöst, sobald die Verbindung zum Server abbricht und besitzt folgende Struktur:
{ clientStatus: 'offline' }
presence-changed¶
Das Event presence-changed
wird ausgelöst, sobald sich eine Präsenz ändert. Das Event hat folgende Struktur:
{ contact: <Object>, presence: <Object> }
- contact
- Der Kontakt bei dem sich die Präsenz geändert hat. Die Struktur ist im Anhang Datenstruktur Kontakt - alle Felder beschrieben.
- presence
Die aktuelle bzw. neue Präsenz des Kontakts. Die Struktur ist im Anhang Datenstruktur Präsenz beschrieben.
In dieser Datenstruktur ist neben der sichtbaren Präsenz weitere Informationen enthalten, wie zum Beispiel Capabilities, die die Audio/Video Fähigkeiten eines Clients abbilden oder auch die aktuelle Notiz eines Kontakts.
Beispiel um alle Präsenzänderungen in der Konsole anzuzeigen:
lcapi.messageBus.on('presence-changed', function(event) { console.log('Presence for user ' + event.presence.u8sContactId + ' changed to ' + event.presence.state); });
textchat-conversations-loaded¶
Das textchat-conversations-loaded
Event wird ausgelöst sobald alle Konversationen geladen wurden. Ab diesem Moment
können die TextChat Methoden auf eine sichere Art und Weise aufgerufen werden.
Das Event wird nach jedem Login oder Reconnect ausgelöst und kann deshalb öfters auftreten.
Das Event liefert die geladenen Konversationen in einem Array mit folgender Struktur:
[ { asnChatParties: [ { u8sContactURI: <String>, u8sDisplayName: <String> } ], iConversationType: <Number>, lastInteraction: <String> u8sConversationID: <String> u8sConversationName: <String> } ]
- asnChatParties
- Array der Teilnehmer in diesem Chat, mit den Attributen
u8sContactURI
(SIP Adresse des Teilnehmers) undu8sDisplayName
(Name des Teilnehmers).- iConversationType
- Typ der Konversation. Mögliche Werte sind:
1
für 1-to-1 Chats,2
für einen Chatraum,4
für öffentliche Chats. Siehe auch Chattypen für eine Beschreibung der unterschiedlichen Chattypen.- lastInteraction
- Die letzte Interaktion in diesem Chat als ISO 8601 String. Beispiel:
2018-08-31T07:27:45Z
- u8sConversationID
- Die technische ID der Konversation.
- u8sConversationName
- Der Name der Konversation. Das Attribut ist nur in Chaträumen gesetzt.
textchat-conversation-changed¶
Das textchat-conversation-changed
Event wird immer dann ausgelöst wenn, sich eine Konversation ändert. Beispielsweise
wenn sich die letzte Interaktion ändert, oder wenn sich die Teilnehmerliste in einem Chatraum ändert.
Die Datenstruktur des Events entspricht dem Event textchat-conversations-loaded:
{ asnChatParties: [ { u8sContactURI: <String>, u8sDisplayName: <String> } ], iConversationType: <Number>, lastInteraction: <String> u8sConversationID: <String> u8sConversationName: <String> }
textchat-message-sent¶
Das textchat-message-sent
Event wird bei jeder neu verschickten Nachricht ausgelöst.
Das Event besitzt folgende Struktur.
{ u8sConversationID: <String>, u8sMessage: <String> }
- u8sConversationID
Die technische ID der Konversation.
Falls noch keine ID bekannt ist, ist der Wert
undefined
. Beispielsweise bei neuen Konversationen in denen noch keine Nachricht geschrieben wurde.- u8sMessage
- Die Textnachricht die verschickt wurde.
textchat-message-changed¶
Das textchat-message-changed
Event wird bei jeder neuen Nachricht und bei Änderungen an Nachrichten ausgelöst.
Änderungen können zum Beispiel sein, dass eine Nachricht gelesen wurde.
Das Event besitzt folgende Struktur.
{ asnChatConversation: { asnChatParties: <Array>, iChatUserlistModify: <Number>, iConversationType: <Number>, u8sConversationName: <String> }, asnChatMessage: { asnReadTime: <String>, bDeleted: <Boolean>, bRead: <Boolean>, u8sMessage: <String>, journalEntry: <Object> }, asnCreateTime: <String>, iConvSequenceID: <Number>, u8sConversationID: <String>, u8sSenderURI: <String> }
- asnChatConversation
Änderungen an der Konversation. Beispielsweise wenn ein Teilnehmer in einen Chatraum eingetreten ist oder die Konversation initial erstellt wurde. Ist
null
, falls sich nichts an der Konversation geändert hat.
- asnChatParties
- Die Teilnehmer, die in diesem Event geändert wurden, bspw. entfernt wurden.
- iChatUserlistModify
- Flag ob sich die Teilnehmerliste geändert hat.
1
für Teilnehmer hinzugefügt,2
für Teilnehmer entfernt und3
für ein vollständiges Update der Teilnehmerliste.- iConversationType
- Typ der Konversation. Mögliche Werte sind:
1
für 1-to-1 Chats,2
für einen Chatraum,4
für öffentliche Chats. Siehe auch Chattypen für eine Beschreibung der unterschiedlichen Chattypen.- u8sConversationName
- Der Name der Konversation. Das Attribut ist nur in Chaträumen gesetzt.
- asnChatMessage
Die gesendete bzw. empfangene Textnachricht. Ist
null
, wenn sich nur die Konversation geändert hat.
- asnReadTime
- Zeitstempel wann die Nachricht gelesen wurde als ISO 8601 String. Beispiel:
2018-08-31T07:27:45Z
.- bDeleted
- Flag ob die Nachricht gelöscht wurde.
- bRead
- Flag ob die Nachricht gelesen wurde.
- u8sMessage
- Der eigentliche Inhalt der Nachricht.
- journalEntry
- Journal Einträge für bspw. VideoChats. Ist
null
falls es sich um eine Textnachricht handelt.- asnCreateTime
- Zeitstempel wann die Nachricht verfasst wurde als ISO 8601 String. Beispiel:
2018-08-31T07:27:45Z
.- iConvSequenceID
- ID der Nachricht in der Konversation. Die ID ist innerhalb einer Konversation chronologisch aufsteigend, kann jedoch Lücken enthalten.
- u8sSenderURI
- Die SIP Adresse des Absenders.
videochat-started¶
Das Event wird ausgelöst, sobald ein VideoChat initialisiert wurde. D.h. entweder ein eingehender VideoChat signalisiert wurde oder der Benutzer selbst einen VideoChat gestartet hat.
Das Event besitzt folgende Struktur.
{ id: <String>, caller: <String>, callee: <String>, callstate: <Number>, localTracks: <Array>, remoteTracks: <Array> }
- id
- Die technische ID des VideoChats.
- caller
- Die SIP Adresse des Anrufers.
- callee
- Die SIP Adresse des Benutzers der angerufen wird.
- callstate
- Der aktuelle Status des VideoChats, beispielsweise klingelnd oder beendet. Die einzelnen Status sind hier beschrieben: Enum Callstate
- localTracks
- Die lokalen MediaStreamTracks die übertragen werden. Typischerweise ein Audiotrack und ein Videotrack, der die Kamera oder den Bildschirm überträgt.
- remoteTracks
- Die MediaStreamTracks des Gesprächsteilnehmers. Typischerweise ein Audiotrack und ein Videotrack, der die Kamera oder den Bildschirm überträgt.
videochat-state-changed¶
Ändert sich der Status von einem VideoChat, bspw. von verbunden zu beendet, wird dies mit dem Event videochat-state-changed
signalisiert.
Das Event besitzt dieselbe Struktur wie das Event videochat-started.
Die möglichen Status eines VideoChats sind hier beschrieben: Enum Callstate.
videochat-track-changed¶
Ändern sich die MediaStreamTracks, bspw. wenn jemand eine Bildschirmfreigabe startet, wird das videochat-track-changed
Event ausgelöst. Das Event enthält die neuen Tracks und besitzt dieselbe Struktur wie das Event videochat-started.
ui-textchat-model-changed¶
Jedem Extension Point wird mitgeteilt, welche Daten aktuell angezeigt werden. Für den TextChat wird das
ui-textchat-model-changed
Event ausgelöst. Das Event besitzt folgende Struktur.
{ extensionPoint: <String> model: { u8sConversationId: <String>, iConversationType: <Number>, contact: <Object> } }
- extensionPoint
- Der Extension Point bei dem sich die Daten geändert haben. Beispielsweise
agentclient.teamchat.textchat
.- model
Die Daten, die aktuell angezeigt werden. Das Attribut ist
null
, falls keine Daten für diesen Extension Point angezeigt werden,
- u8sConversationId
- Die ID der TextChat Konversation.
- iConversationType
- Typ der Konversation. Mögliche Werte sind:
1
für 1-to-1 Chats,2
für einen Chatraum,4
für öffentliche Chats. Siehe auch Chattypen für eine Beschreibung der unterschiedlichen Chattypen.- contact
- Der Kontakt zu dieser Konveration. Die Struktur ist im Anhang Datenstruktur Kontakt - alle Felder beschrieben.
ui-videochat-model-changed¶
Jedem Extension Point wird mitgeteilt, welche Daten aktuell angezeigt werden. Für den VideoChat wird das
ui-videochat-model-changed
Event ausgelöst. Das Event besitzt folgende Struktur.
{ extensionPoint: <String> model: { avCall: <Object>, u8sConversationId: <String>, iConversationType: <Number>, contact: <Object> } }
- extensionPoint
- Der Extension Point bei dem sich die Daten geändert haben. Beispielsweise
agentclient.teamchat.videochat
.- model
Die Daten, die aktuell angezeigt werden.
- avCall
- Das VideoChat Objekt. Die Struktur ist im Event videochat-started beschrieben. Das Attribut ist
null
, falls kein VideoChat gestartet wurde oder der Extension Point aktuell keine Daten anzeigt.- u8sConversationId
Technische ID der TextChat Konversation.
Das Attribut ist
null
, falls dieser Extension Point aktuell keine Daten anzeigt.- iConversationType
Typ der Konversation. Mögliche Werte sind:
1
für 1-to-1 Chats,2
für einen Chatraum,4
für öffentliche Chats. Siehe auch Chattypen für eine Beschreibung der unterschiedlichen Chattypen.Das Attribut ist
null
, falls dieser Extension Point aktuell keine Daten anzeigt.- contact
Der Kontakt zu dieser Konveration. Die Struktur ist im Anhang Datenstruktur Kontakt - alle Felder beschrieben.
Das Attribut ist
null
, falls dieser Extension Point aktuell keine Daten anzeigt.