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) und u8sDisplayName (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 und 3 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.