Control de la sesión

Regístrese para recibir devoluciones de llamada de eventos de sesión en tiempo real y supervisar la actividad de su sesión desde el servidor de su aplicación.

Mediante la plataforma OpenTok, los desarrolladores pueden supervisar determinadas actividades de los clientes que utilizan los SDK de cliente de OpenTok, desde su servidor de aplicaciones. Al registrarte para recibir notificaciones mediante la API REST de OpenTok, tu URL de notificación recibirá solicitudes HTTP POST cuando se creen o eliminen sesiones, los clientes se conecten o desconecten, y los clientes publiquen o retiren transmisiones de una sesión en tu proyecto de OpenTok. Además, puede registrar una devolución de llamada para supervisar eventos relacionados con los archivos de OpenTok de su proyecto.

Registro de funciones de devolución de llamada

La información sobre los eventos de la sesión y las actualizaciones del estado del archivo se puede enviar a puntos finales HTTP de tu servidor. Cada vez que se produce una actividad registrada, la infraestructura de OpenTok envía una solicitud HTTP a tu punto final.

Para registrar una devolución de llamada:

  1. Visite su Página de cuenta de Video API de Vonage.

  2. Selecciona el proyecto de OpenTok para el que deseas registrar una llamada de retorno.

  3. Establezca la URL de devolución de llamada en la sección Supervisión de la sesión.

    Devoluciones de llamada seguras: Puedes proteger las solicitudes de devolución de llamada de los webhooks mediante devoluciones de llamada firmadas, utilizando un secreto de firma. Consulta Devoluciones de llamada seguras.

La URL de devolución de llamada del archivo y la URL de devolución de llamada de difusión se configuran por separado de la URL de devolución de llamada para los eventos de sesión. Configura la URL de devolución de llamada del archivo en la sección «Archivo» de tu Página de cuenta de Video API de Vonage.

Importante: El servicio de monitorización de sesiones ya no desactiva el reenvío de eventos en caso de fallos de entrega excesivos (como ocurría en versiones anteriores), ya que se utiliza un mecanismo de reintento y backoff. Ya no recibirás correos electrónicos sobre interrupciones de devolución de llamadas de monitorización de sesiones, puesto que el servicio no se suspenderá ni se desactivará.

Supervisión del inicio y el fin de las sesiones

Cuando los clientes empiezan a utilizar una sesión por primera vez y cuando dejan de utilizarla, sessionCreated y sessionDestroyed se envían a su punto final de devolución de llamada registrado.

Sesión creada

Este evento se envía cuando el primer cliente se conecta a una sesión. Si todos los clientes se desconectan (véase Sesión destruida), los clientes pueden volver a conectarse posteriormente a la misma sesión.

Para cada evento distinto, el servidor envía una solicitud HTTP POST a la URL de devolución de llamada que proporcione. El tipo de contenido de la solicitud es application/json. Los datos de la solicitud son un objeto JSON de la siguiente forma:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionCreated",
  "timestamp": 1470257688309,
  "createdAt": 1470257688309
}

El objeto JSON incluye las siguientes propiedades:

  • sessionId - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "sessionCreated"

  • timestamp - La fecha y hora en que se envió el evento de devolución de llamada

  • createdAt — La marca de tiempo correspondiente al momento en que el primer cliente se conectó a la sesión

Sesión destruida

Este evento se envía cuando se deja de utilizar una sesión:

  • Un minuto después de que todos los participantes se hayan desconectado de la sesión.

  • Cuando una sesión de la Video API caduca, lo cual puede ocurrir al cabo de 8 horas.

  • Cuando un servidor de Video API se apaga inesperadamente.

Una vez enviado este evento, aún se puede volver a utilizar la sesión. Los clientes pueden volver a conectarse a la sesión utilizando el mismo ID de sesión. Sesión creada se enviará un evento de devolución de llamada. Sin embargo, es mejor que los clientes se vuelvan a conectar con un nuevo ID de sesión.

Además, como buena práctica, deberías hacer que los clientes se vuelvan a conectar a nuevas sesiones (utilizando un nuevo ID de sesión) en un plazo de 8 horas desde el Sesión creada evento de devolución de llamada.

Para cada evento distinto, el servidor envía una solicitud HTTP POST a la URL de devolución de llamada que proporcione. El tipo de contenido de la solicitud es application/json. Los datos de la solicitud son un objeto JSON de la siguiente forma:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionDestroyed",
  "timestamp": 1470258896953,
  "createdAt" : 1470258896953,
  "reason" : "clientDisconnected"
}

El objeto JSON incluye las siguientes propiedades:

  • sessionId - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "sessionDestroyed"

  • timestamp - La fecha y hora en que se envió el evento de devolución de llamada

  • createdAt - Fecha en la que se dejó de utilizar esta sesión

  • reason - Se establece en una de las siguientes opciones:

    • "clientDisconnected" - Todos los clientes se han desconectado de la sesión.

    • "forceDisconnected" - Un moderador ha desconectado a los clientes de la sesión. O se ha interrumpido la sesión. O un servidor de Video API se ha cerrado inesperadamente.

    • "mediaIdle" — Se ha desconectado a todos los clientes de la sesión porque no han publicado ni se han suscrito a flujos en las 4 horas siguientes a su conexión.

    • "serverRotation" — Todos los clientes se han desconectado de la sesión debido a la rotación de servidores. Para evitar que los clientes se desconecten durante la rotación de servidores, puede configurarlos para que utilicen la migración de sesiones. Consulte Rotación de servidores y migración de sesiones.

Eventos de notificación de sesión

El sessionNotification se envía cuando se programa la rotación de un grupo de servidores de Video API para una de sus sesiones. Este evento se envía 4 horas y 1 hora antes de la rotación programada.

El sessionNotification es una solicitud HTTP POST enviada a la URL de devolución de llamada de monitorización de sesión que proporcione. El tipo de contenido de la solicitud es application/json. Los datos de la solicitud son un objeto JSON de la siguiente forma:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionNotification",
  "reason": "serverRotation",
  "timestamp": 1470282888309,
  "remainingTime": 3600,
  "createdAt": 1470257688309
}

El objeto JSON incluye las siguientes propiedades:

  • sessionId - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "sessionNotification"

  • reason - Para un evento de rotación del servidor, se establece en "serverRotation". (Actualmente, éste es el único tipo de evento de notificación de sesión).

  • remainingTime - El tiempo restante, en segundos, hasta que los servidores para la sesión sean rotados. Se establecerá en 14.400 segundos (4 horas) o 3.600 segundos (1 hora).

  • timestamp - La fecha y hora en que se envió el evento de devolución de llamada

  • createdAt — La marca de tiempo correspondiente al momento en que el primer cliente se conectó a la sesión

Véase Rotación de servidores y migración de sesiones para obtener más información sobre las rotaciones del servidor de la Video API y cómo mantener a los clientes conectados cuando se producen rotaciones del servidor.

Supervisión de la actividad de conexión

Una vez registrada correctamente, la infraestructura de OpenTok puede enviar solicitudes HTTP para todas las conexiones establecidas (y cerradas) en todas las sesiones de un mismo proyecto. Esto resulta especialmente útil para realizar un seguimiento de la disponibilidad de los usuarios sin necesidad de conexiones adicionales ni de que el punto final envíe información directamente.

Cuando los clientes reciben connectionCreated y connectionDestroyed eventos que se producen en respuesta a la conexión y desconexión de otros clientes de una sesión; estos mismos eventos se envían a tu punto final de devolución de llamada registrado.

Conexión creada

Por cada evento distinto, el servidor envía una solicitud HTTP POST a la URL que indiques. El tipo de contenido (Content-Type) de la solicitud es application/json. Los datos de la solicitud son un objeto JSON con el siguiente formato:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "connectionCreated",
    "timestamp": 1470257688309,
    "connection": {
        "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
        "createdAt": 1470257688143,
        "data": "TOKENDATA"
    }
}

El objeto JSON incluye las siguientes propiedades:

  • sessionId - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "connectionCreated"

  • timestamp — Milisegundos desde la época Unix

  • connection - Objeto que define la conexión y contiene las siguientes propiedades:

    • id - ID de conexión

    • data — Los datos de conexión (véase Datos de conexión)

    • createdAt — La marca de tiempo en la que se creó este objeto

Conexión destruida

Por cada evento distinto, el servidor envía una solicitud HTTP POST a la URL que indiques. El tipo de contenido (Content-Type) de la solicitud es application/json. Los datos de la solicitud son un objeto JSON con el siguiente formato:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "connectionDestroyed",
    "reason": "clientDisconnected",
    "timestamp": 1470258896953,
    "connection": {
        "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
        "createdAt": 1470257688143,
        "data": ""
    }
}

El objeto JSON incluye las siguientes propiedades:

  • sessionId - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • reason - Para un connectionDestroyed evento, este se establece en uno de los siguientes valores:

    • "clientDisconnected" — Un cliente se ha desconectado de la sesión (por ejemplo, llamando al método `Session.disconnect()` de OpenTok.js o cerrando el navegador o la aplicación).

    • "forceDisconnected" — Un moderador ha desconectado al cliente de la sesión (mediante la llamada a OpenTok.js Session.forceDisconnect() método).

    • "networkDisconnected" - La conexión de red finalizó de forma abrupta (por ejemplo, el cliente perdió su conexión a Internet).

    • "mediaIdle" — El cliente se ha desconectado de una sesión porque no ha publicado ni se ha suscrito a flujos en las cuatro horas siguientes a la conexión.

    • "serverRotation" — El cliente se ha desconectado de una sesión debido a la rotación de servidores. Para evitar que los clientes se desconecten durante la rotación de servidores, puede configurarlos para que utilicen la migración de sesiones. Consulte Rotación de servidores y migración de sesiones.

  • event - "connectionDestroyed"

  • timestamp — Milisegundos desde la época Unix

  • connection - Objeto que define la conexión y contiene las siguientes propiedades:

    • id - ID de conexión

    • data — Los datos de conexión (véase Datos de conexión)

    • createdAt — La marca de tiempo en la que se creó este objeto

Seguimiento de los flujos

Los puntos finales del servidor también pueden registrarse para recibir solicitudes HTTP activadas por la actividad de los flujos en todas las sesiones de un proyecto determinado. Cuando se crean y se eliminan flujos, la solicitud contendrá datos del flujo y de la conexión correspondientes al flujo que haya activado el evento.

Cuando los clientes reciben streamCreated y streamDestroyed eventos que se producen en respuesta a la publicación de otros clientes en una sesión; estos mismos eventos se envían a tu punto final de devolución de llamada registrado.

Se ha creado el flujo

Por cada evento distinto, el servidor envía una solicitud HTTP POST a la URL que indiques. El tipo de contenido (Content-Type) de la solicitud es application/json. Los datos de la solicitud son un objeto JSON con el siguiente formato:

{
    "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 - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "streamCreated"

  • timestamp — Milisegundos desde la época Unix

  • stream - Un objeto que define el flujo:

    • id - ID del flujo

    • connection — La conexión asociada a este flujo. Este objeto incluye las siguientes propiedades:

      • id - ID de conexión

      • data — Los datos de conexión (véase Datos de conexión)

      • createdAt — La marca de tiempo en la que se creó la conexión

    • createdAt — El valor de la marca de tiempo en la que se creó el flujo

    • name — El nombre, si lo había, se pasó al inicializarse el editor asociado a este flujo

    • videoType - El tipo de vídeo enviado en este flujo, ya sea "camera", "screen", o "custom" (o indefinido para un flujo sólo de audio).

Corriente destruida

Por cada evento distinto, el servidor envía una solicitud HTTP POST a la URL que indiques. El tipo de contenido (Content-Type) de la solicitud es application/json. Los datos de la solicitud son un objeto JSON con el siguiente formato:

{
    "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 - El ID de sesión asociado a este evento

  • projectId - El ID del proyecto asociado a este evento

  • event - "streamDestroyed"

  • reason - Para un streamDestroyed evento, este se establece en uno de los siguientes valores:

    • "clientDisconnected" — El cliente se ha desconectado de la sesión (por ejemplo, al llamar a OpenTok.js Session.disconnect() método).

    • "forceDisconnected" — Un moderador ha desconectado al emisor de la retransmisión de la sesión, llamando a OpenTok.js Session.forceDisconnect() método.

    • "forceUnpublished" — Un moderador ha obligado al emisor de la retransmisión a dejar de emitirla, llamando a OpenTok.js Session.forceUnpublish() método.

    • "mediaStopped" — El usuario que está transmitiendo ha dejado de compartir la pantalla. Este valor solo se utiliza en las transmisiones de vídeo con pantalla compartida.

    • "networkDisconnected" La conexión a la red se interrumpió de forma repentina (por ejemplo, el cliente perdió la conexión a Internet).

    • "serverRotation" — La transmisión se detuvo porque el cliente de publicación se desconectó de una sesión debido a Rotación de servidores de la Video API.

  • timestamp — Milisegundos desde la época Unix

  • stream - Un objeto que define el flujo:

    • id - ID del flujo

    • connection — La conexión asociada a este flujo. Este objeto incluye las siguientes propiedades:

      • id - ID de conexión

      • data — Los datos de conexión (véase Datos de conexión)

      • createdAt — La marca de tiempo en la que se creó la conexión

    • createdAt — El valor de la marca de tiempo en la que se creó el flujo

    • name — El nombre, si lo había, se pasó al inicializarse el editor asociado a este flujo

    • videoType - El tipo de vídeo enviado en este flujo, ya sea "camera", "screen", o "custom" (o indefinido para un flujo sólo de audio).

Seguimiento de archivos

Cada archivo pasa por varios estados a lo largo de su ciclo de vida. Cada vez que se produce una actualización de estado, un punto final del servidor con un registro del estado del archivo recibirá una solicitud HTTP. Esto resulta especialmente útil para activar el posprocesamiento de un archivo o para llevar a cabo cualquier tarea administrativa necesaria una vez que el archivo se ha subido al almacenamiento persistente. Para obtener más información, consulte el Estado del archivo Cambios sección de la guía para desarrolladores sobre el archivado de OpenTok.

Supervisión de emisiones

Véase el Supervisión de los cambios en el estado de las retransmisiones en directo sección de la guía para desarrolladores de retransmisiones en directo de OpenTok.

Seguimiento del desarrollo de las llamadas SIP

Puedes supervisar las actualizaciones de estado de las conexiones SIP a la sesión de OpenTok. Consulta la Seguimiento del progreso de la llamada sección de la guía para desarrolladores de OpenTok SIP Interconnect.

Supervisión de Experience Composer

Puede supervisar las actualizaciones de estado de los Compositores de Experiencias. Consulte el Configuración de las retrollamadas de la guía del desarrollador de Experience Composer.

Supervisión de subtítulos en directo

Puedes seguir las actualizaciones de estado de los subtítulos en directo. Consulte la Respuestas a las solicitudes de subtítulos en directo sección de la guía para desarrolladores de subtítulos en directo.