Überwachung von Sitzungen
Registrieren Sie sich, um Echtzeit-Sitzungsereignisrückrufe zu erhalten und Ihre Sitzungsaktivitäten von Ihrem Anwendungsserver aus zu überwachen.
Mithilfe der OpenTok-Plattform können Entwickler bestimmte Aktivitäten von Clients, die OpenTok-Client-SDKs verwenden, direkt von ihrem App-Server aus überwachen. Durch die Registrierung für Callbacks über die OpenTok-REST-API erhält Ihre Callback-URL HTTP-POST-Anfragen, wenn Sitzungen erstellt oder beendet werden, sich Clients verbinden oder trennen sowie Clients Streams in einer Sitzung Ihres OpenTok-Projekts veröffentlichen oder deren Veröffentlichung beenden. Darüber hinaus können Sie einen Callback registrieren, um Ereignisse im Zusammenhang mit OpenTok- Archiven für Ihr Projekt zu überwachen.
Registrierung von Rückrufen
Informationen zu Sitzungsereignissen und Statusaktualisierungen des Archivs können alle an HTTP-Endpunkte auf Ihrem Server übermittelt werden. Sobald eine registrierte Aktivität auftritt, wird von der OpenTok-Infrastruktur eine HTTP-Anfrage an Ihren Endpunkt gesendet.
Um einen Rückruf zu registrieren:
-
Besuchen Sie Ihr Vonage Video API Account-Seite.
-
Wählen Sie das OpenTok-Projekt aus, für das Sie einen Callback registrieren möchten.
-
Legen Sie die Callback-URL im Abschnitt Sitzungsüberwachung fest.
Sichere Rückrufe: Sie können Webhook-Rückrufanforderungen mit signierten Rückrufen sichern, unter Verwendung eines Signaturgeheimnisses. Siehe Sichere Rückrufe.
Die Archiv-Callback-URL und die Broadcast-Callback-URL werden separat von der Callback-URL für Sitzungsereignisse festgelegt. Legen Sie die Archiv-Callback-URL im Abschnitt „Archiv“ Ihrer Vonage Video API Account-Seite.
Das ist wichtig: Der Sitzungsüberwachungsdienst deaktiviert nicht mehr die Weiterleitung von Ereignissen bei übermäßigen Zustellungsfehlern (wie es in früheren Versionen der Fall war), da ein Wiederholungs- und Backoff-Mechanismus verwendet wird. Sie erhalten keine E-Mails mehr bei Unterbrechungen des Sitzungsüberwachungs-Callbacks, da der Dienst nicht ausgesetzt oder deaktiviert wird.
Überwachung von Beginn und Ende der Sitzungen
Wenn Kunden zum ersten Mal eine Sitzung nutzen und wenn eine Sitzung nicht mehr genutzt wird, sessionCreated und sessionDestroyed Ereignisse werden an Ihren registrierten Callback-Endpunkt gesendet.
Sitzung erstellt
Dieses Ereignis wird gesendet, wenn der erste Client eine Verbindung zu einer Sitzung herstellt. Wenn alle Clients die Verbindung trennen (siehe Sitzung zerstört), können sich die Clients später wieder mit derselben Sitzung verbinden.
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anforderung an die von Ihnen angegebene Callback-URL. Der Content-Type für die Anfrage ist application/json. Die Daten der Anforderung sind ein JSON-Objekt der folgenden Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "sessionCreated",
"timestamp": 1470257688309,
"createdAt": 1470257688309
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"sessionCreated" -
timestamp- Der Zeitstempel, wann das Rückrufereignis gesendet wurde -
createdAt- Der Zeitstempel für den Zeitpunkt, zu dem der erste Client eine Verbindung zur Sitzung hergestellt hat
Sitzung zerstört
Dieses Ereignis wird gesendet, wenn eine Sitzung nicht mehr verwendet wird:
-
Eine Minute, nachdem alle Teilnehmer die Verbindung zur Sitzung getrennt haben.
-
Wenn eine Video API-Sitzung ausläuft, was nach 8 Stunden der Fall sein kann.
-
Wenn ein Video API-Server unerwartet heruntergefahren wird.
Nachdem dieses Ereignis ausgelöst wurde, können Sie die Sitzung immer noch wieder verwenden. Clients können sich mit der gleichen Sitzungs-ID erneut mit der Sitzung verbinden Sitzung erstellt Callback-Ereignis gesendet wird. Es ist jedoch besser, wenn die Clients die Verbindung unter Verwendung einer neuen Sitzungs-ID wiederherstellen.
Außerdem sollten Sie als bewährte Vorgehensweise dafür sorgen, dass sich Clients innerhalb von 8 Stunden nach dem Sitzung erstellt Rückruf-Ereignis.
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anforderung an die von Ihnen angegebene Callback-URL. Der Content-Type für die Anfrage ist application/json. Die Daten der Anforderung sind ein JSON-Objekt der folgenden Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "sessionDestroyed",
"timestamp": 1470258896953,
"createdAt" : 1470258896953,
"reason" : "clientDisconnected"
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"sessionDestroyed" -
timestamp- Der Zeitstempel, wann das Rückrufereignis gesendet wurde -
createdAt- Der Zeitstempel für das Ende der Nutzung dieser Sitzung -
reason- Diese wird auf eine der folgenden Möglichkeiten eingestellt:-
"clientDisconnected"- Alle Clients haben die Verbindung zu der Sitzung getrennt. -
"forceDisconnected"- Ein Moderator hat die Verbindung zwischen den Clients und der Sitzung unterbrochen. Oder die Sitzung wurde zeitlich begrenzt. Oder ein Video API-Server wurde unerwartet abgeschaltet. -
"mediaIdle"- Alle Clients wurden von der Sitzung getrennt, weil sie innerhalb von 4 Stunden nach der Verbindung keine Streams veröffentlicht oder abonniert haben. -
"serverRotation"— Alle Clients wurden aufgrund einer Serverrotation von der Sitzung getrennt. Sie können verhindern, dass Clients während einer Serverrotation getrennt werden, indem Sie sie so konfigurieren, dass sie die Sitzungsmigration nutzen. Siehe Server-Rotation und Sitzungsmigration.
-
Ereignisse der Sitzungsbenachrichtigung
Die sessionNotification wird gesendet, wenn eine Gruppe von Video API-Servern für eine Ihrer Sitzungen für eine Rotation vorgesehen ist. Dieses Ereignis wird 4 Stunden und 1 Stunde vor der geplanten Rotation gesendet.
Die sessionNotification Ereignis ist eine HTTP-POST-Anforderung, die an die von Ihnen angegebene Rückruf-URL für die Sitzungsüberwachung gesendet wird. Der Content-Type für die Anfrage ist application/json. Die Daten der Anforderung sind ein JSON-Objekt der folgenden Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "sessionNotification",
"reason": "serverRotation",
"timestamp": 1470282888309,
"remainingTime": 3600,
"createdAt": 1470257688309
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"sessionNotification" -
reason- Für ein Server-Rotationsereignis wird dieser Wert auf"serverRotation". (Derzeit ist dies die einzige Art von Sitzungsbenachrichtigung). -
remainingTime- Die verbleibende Zeit, in Sekunden, bis die Server für die Sitzung gewechselt werden. Dieser Wert wird entweder auf 14.400 Sekunden (4 Stunden) oder 3.600 Sekunden (1 Stunde) gesetzt. -
timestamp- Der Zeitstempel, wann das Rückrufereignis gesendet wurde -
createdAt- Der Zeitstempel für den Zeitpunkt, zu dem der erste Client eine Verbindung zur Sitzung hergestellt hat
Siehe Server-Rotation und Sitzungsmigration für weitere Informationen zu Video API Server-Rotationen und wie man die Verbindung zu Clients aufrecht erhält, wenn Server-Rotationen stattfinden.
Überwachung der Verbindungsaktivität
Nach der ordnungsgemäßen Registrierung kann die OpenTok-Infrastruktur HTTP-Anfragen für alle hergestellten (und beendeten) Verbindungen zu allen Sitzungen eines einzelnen Projekts senden. Dies ist besonders nützlich, um die Verfügbarkeit von Benutzern zu verfolgen, ohne dass zusätzliche Verbindungen erforderlich sind oder Berichte direkt vom Endpunkt gesendet werden müssen.
Wenn Kunden erhalten connectionCreated und connectionDestroyed Ereignisse, die
als Reaktion auf das Herstellen und Beenden einer Verbindung anderer Clients zu einer Sitzung auftreten – diese
Ereignisse werden an Ihren registrierten Callback-Endpunkt gesendet.
Verbindung erstellt
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anfrage an die von Ihnen angegebene URL. Der Content-Type der Anfrage lautet „application/json“. Die Daten der Anfrage sind ein JSON-Objekt in folgender Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "connectionCreated",
"timestamp": 1470257688309,
"connection": {
"id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
"createdAt": 1470257688143,
"data": "TOKENDATA"
}
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"connectionCreated" -
timestamp— Millisekunden seit der Unix-Epoche -
connection- Ein Objekt, das die Verbindung definiert und die folgenden Eigenschaften enthält:-
id- Die Verbindungs-ID -
data— Die Verbindungsdaten (siehe Verbindungsdaten ```) -
createdAt— Der Zeitstempel, zu dem dieses Objekt erstellt wurde
-
Verbindung zerstört
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anfrage an die von Ihnen angegebene URL. Der Content-Type der Anfrage lautet „application/json“. Die Daten der Anfrage sind ein JSON-Objekt in folgender Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "connectionDestroyed",
"reason": "clientDisconnected",
"timestamp": 1470258896953,
"connection": {
"id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
"createdAt": 1470257688143,
"data": ""
}
}
Das JSON-Objekt enthält die folgenden Eigenschaften:
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
reason- Für eineconnectionDestroyedEreignis: Dies wird auf einen der folgenden Werte gesetzt:-
"clientDisconnected"— Ein Client hat die Verbindung zur Sitzung getrennt (beispielsweise durch Aufruf der OpenTok.js-Methode `Session.disconnect()` oder durch Schließen des Browsers oder der App). -
"forceDisconnected"— Ein Moderator hat den Client von der Sitzung getrennt (durch Aufruf von OpenTok.jsSession.forceDisconnect()Methode). -
"networkDisconnected"- Die Netzwerkverbindung wurde abrupt beendet (z. B. weil der Client seine Internetverbindung verloren hat). -
"mediaIdle"— Der Client wurde aus einer Sitzung getrennt, da er innerhalb von 4 Stunden nach dem Verbindungsaufbau keine Streams veröffentlicht oder abonniert hat. -
"serverRotation"— Der Client wurde aufgrund einer Serverrotation aus der Sitzung getrennt. Sie können verhindern, dass Clients während einer Serverrotation getrennt werden, indem Sie sie so konfigurieren, dass sie die Sitzungsmigration nutzen. Siehe Server-Rotation und Sitzungsmigration.
-
-
event-"connectionDestroyed" -
timestamp— Millisekunden seit der Unix-Epoche -
connection- Ein Objekt, das die Verbindung definiert und die folgenden Eigenschaften enthält:-
id- Die Verbindungs-ID -
data— Die Verbindungsdaten (siehe Verbindungsdaten ```) -
createdAt— Der Zeitstempel, zu dem dieses Objekt erstellt wurde
-
Überwachung der Ströme
Server-Endpunkte können sich zudem registrieren, um HTTP-Anfragen zu empfangen, die durch Stream- Aktivitäten in allen Sitzungen eines bestimmten Projekts ausgelöst werden. Wenn Streams erstellt und gelöscht werden, enthält die Anfrage Stream- und Verbindungsdaten für den Stream, der das Ereignis ausgelöst hat.
Wenn Kunden erhalten streamCreated und streamDestroyed Ereignisse als
Reaktion darauf, dass andere Clients Daten in einer Sitzung veröffentlichen; diese Ereignisse werden
an Ihren registrierten Callback-Endpunkt gesendet.
Stream erstellt
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anfrage an die von Ihnen angegebene URL. Der Content-Type der Anfrage lautet „application/json“. Die Daten der Anfrage sind ein JSON-Objekt in folgender Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "streamCreated",
"timestamp": 1470258860571,
"stream": {
"id": "63245362-e00e-4834-8371-9397deb3e452",
"connection": {
"id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
"createdAt": 1470257688143,
"data": ""
},
"createdAt": 1470258845416,
"name": "",
"videoType": "camera"
}
}
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"streamCreated" -
timestamp— Millisekunden seit der Unix-Epoche -
stream- Ein Objekt, das den Stream definiert:-
id- Die Stream-ID -
connection— Die mit diesem Stream verbundene Verbindung. Dieses Objekt enthält die folgenden Eigenschaften:-
id- Die Verbindungs-ID -
data— Die Verbindungsdaten (siehe Verbindungsdaten ```) -
createdAt— Der Zeitstempel, zu dem die Verbindung hergestellt wurde
-
-
createdAt— Der Zeitstempel, zu dem der Stream erstellt wurde -
name— Der Name, sofern vorhanden, wurde bei der Initialisierung des mit diesem Stream verbundenen Publishers übergeben -
videoType- Der Typ des auf diesem Stream gesendeten Videos, entweder"camera","screen", oder"custom"(oder undefiniert für einen reinen Audio-Stream).
-
Stream zerstört
Für jedes einzelne Ereignis sendet der Server eine HTTP-POST-Anfrage an die von Ihnen angegebene URL. Der Content-Type der Anfrage lautet „application/json“. Die Daten der Anfrage sind ein JSON-Objekt in folgender Form:
{
"sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
"projectId": "123456",
"event": "streamDestroyed",
"reason": "clientDisconnected",
"timestamp": 1470258896953,
"stream": {
"id": "63245362-e00e-4834-8371-9397deb3e452",
"connection": {
"id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
"createdAt": 1470257688143,
"data": ""
},
"createdAt": 1470258845416,
"name": "",
"videoType": "camera"
}
}
-
sessionId- Die mit diesem Ereignis verknüpfte Sitzungs-ID -
projectId- Die mit diesem Ereignis verbundene Projekt-ID -
event-"streamDestroyed" -
reason- Für einestreamDestroyedEreignis: Dies wird auf einen der folgenden Werte gesetzt:-
"clientDisconnected"— Der Client hat die Verbindung zur Sitzung getrennt (beispielsweise durch Aufruf der OpenTok.js-FunktionSession.disconnect()Methode). -
"forceDisconnected"— Ein Moderator hat den Stream-Anbieter aus der Sitzung ausgeschlossen, indem er die OpenTok.js-Funktion aufgerufen hatSession.forceDisconnect()Methode. -
"forceUnpublished"— Ein Moderator hat den Betreiber des Streams dazu gezwungen, die Übertragung einzustellen, indem er OpenTok.js aufgerufen hatSession.forceUnpublish()Methode. -
"mediaStopped"— Der Nutzer, der den Stream veröffentlicht, hat die Bildschirmfreigabe beendet. Dieser Wert wird nur bei Videostreams mit Bildschirmfreigabe verwendet. -
"networkDisconnected"Die Netzwerkverbindung wurde abrupt unterbrochen (beispielsweise hat der Client seine Internetverbindung verloren). -
"serverRotation"— Der Stream wurde unterbrochen, da die Verbindung des Veröffentlichungs-Clients zu einer Sitzung aufgrund von Rotation der Video API-Server.
-
-
timestamp— Millisekunden seit der Unix-Epoche -
stream- Ein Objekt, das den Stream definiert:-
id- Die Stream-ID -
connection— Die mit diesem Stream verbundene Verbindung. Dieses Objekt enthält die folgenden Eigenschaften:-
id- Die Verbindungs-ID -
data— Die Verbindungsdaten (siehe Verbindungsdaten ```) -
createdAt— Der Zeitstempel, zu dem die Verbindung hergestellt wurde
-
-
createdAt— Der Zeitstempel, zu dem der Stream erstellt wurde -
name— Der Name, sofern vorhanden, wurde bei der Initialisierung des mit diesem Stream verbundenen Publishers übergeben -
videoType- Der Typ des auf diesem Stream gesendeten Videos, entweder"camera","screen", oder"custom"(oder undefiniert für einen reinen Audio-Stream).
-
Überwachung der Archive
Jedes Archiv durchläuft im Laufe seiner Lebensdauer mehrere Statusphasen. Bei jeder Statusaktualisierung erhält ein Server-Endpunkt mit einer Archivstatus-Registrierung eine HTTP-Anfrage. Dies ist besonders nützlich, um die Nachbearbeitung eines Archivs auszulösen oder um erforderliche Verwaltungsaufgaben durchzuführen, nachdem ein Archiv in den persistenten Speicher hochgeladen wurde. Weitere Informationen finden Sie unter Änderungen des Archivstatus Abschnitt des OpenTok-Archivierungs- Entwicklerhandbuchs.
Überwachung von Sendungen
Siehe die Überwachung von Statusänderungen bei Live-Streaming-Übertragungen Abschnitt des Entwicklerhandbuchs zu den Live-Streaming-Übertragungen von OpenTok.
Überwachung des SIP-Anrufverlaufs
Sie können Statusaktualisierungen für SIP-Verbindungen zu einer OpenTok-Sitzung überwachen. Weitere Informationen finden Sie unter Überwachung des Gesprächsverlaufs Abschnitt des OpenTok SIP Interconnect-Entwicklerhandbuchs.
Überwachung von Experience Composer
Sie können Statusaktualisierungen für Experience Composers überwachen. Siehe die Konfigurieren von Rückrufen Abschnitt des Experience Composer-Entwicklerhandbuchs.
Überwachung von Live-Untertiteln
Sie können Statusaktualisierungen für Live-Untertitel überwachen. Siehe die Live-Rückrufe von Untertiteln Abschnitt des Handbuchs für Entwickler von Live-Untertiteln.