Gestión de grabaciones
Esta guía le mostrará cómo gestionar las grabaciones de sus sesiones utilizando la Meetings API.
Activar la grabación
Hay dos formas de habilitar la grabación para una sala de reuniones. Puede Activar la grabación en la interfaz de usuario para permitir a los participantes iniciar / detener la grabación, o configurar la reunión para registrar automáticamente. También puede configurar la grabación para que sólo grabe al propietario de una sala y cualquier pantalla compartida durante la reunión.
Permitir a los participantes iniciar la grabación mediante la interfaz de usuario de la reunión
En primer lugar, puede activar la opción de grabación en la interfaz de usuario de una reunión mediante is_recording_available. Por ejemplo, esta solicitud creará una sala instantánea llamada "Nueva sala de reuniones" que permitirá a los participantes de una sesión activar la grabación:
const credentials = new Auth({
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
applicationId: VONAGE_APPLICATION_ID,
});
const options = {};
const meetingsClient = new Meetings(credentials, options);
await meetingsClient.createRoom({
type: MeetingType.INSTANT,
displayName: "New Meeting Room",
availableFeatures: {
isRecordingAvailable: true,
},
});
var client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
var room = MeetingRoom.builder("New Meeting Room")
.availableFeatures(AvailableFeatures.builder()
.isRecordingAvailable(true)
.build()
)
.build();
client.getMeetingsClient().createRoom(room);
client = Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)
room = client.meetings.rooms.create(
display_name: "New Meeting Room",
available_features: {
is_recording_available: true
}
)
Opciones de grabación preconfiguradas
En recording_options se puede utilizar para activar / desactivar estas opciones:
auto_record: Graba automáticamente todas las sesiones de esta sala. La grabación no se puede detener cuando está ajustada entrue.record_only_owner: Graba sólo la pantalla del propietario o cualquier pantalla compartida del vídeo.
Por ejemplo, esto creará una sala de larga duración que se grabará automáticamente, pero sólo el propietario de la sala y las pantallas compartidas se mostrarán en la grabación:
const credentials = new Auth({
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
applicationId: VONAGE_APPLICATION_ID,
});
const options = {};
const meetingsClient = new Meetings(credentials, options);
const room = await meetingsClient.createRoom({
type: MeetingType.INSTANT,
displayName: ROOM_DISPLAY_NAME,
recordingOptions: {
autoRecord: true,
},
});
var client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
var room = MeetingRoom.builder("New Meeting Room")
.type(RoomType.LONG_TERM)
.expiresAt(EXPIRATION_DATE)
.recordingOptions(RecordingOptions.builder()
.autoRecord(true)
.recordOnlyOwner(true)
.build()
)
.build();
client.getMeetingsClient().createRoom(room);
client = Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)
room = client.meetings.rooms.create(
display_name: "New Meeting Room",
type: "long_term",
expires_at: "2023-11-11T16:00:00.000Z"
recording_options: {
auto_record: true,
record_only_owner: true
}
)
Grabación de devoluciones de llamada
Hay tres llamadas de retorno que recibirá cuando grabe una sesión utilizando la Meetings API. Tenga en cuenta que recording_id y session_idya que se utilizarán para recuperar y gestionar tus grabaciones más adelante.
Grabación iniciada
Notificación de que se ha iniciado la grabación de una sesión.
Grabación Ended
Notificación de que ha finalizado la grabación de una sesión.
Grabación cargada
Notificación de que se ha cargado una grabación de una sesión, a la que se puede acceder a través de la función url.
Recuperar grabaciones
Las grabaciones están asociadas a la sesión en la que se produjeron. Para recuperar o gestionar grabaciones necesitarás
la dirección session_idque se puede encontrar en los callbacks, o el recording_idque puede
ser recuperado mediante el identificador de sesión o puede
también en las devoluciones de llamada.
Nota: las grabaciones se conservan durante 30 días.
Recuperar todas las grabaciones de una sesión
https://api-eu.vonage.com/v1/meetings/sessions/:session_id/recording
Para obtener todas las grabaciones de una sesión, puede enviar una solicitud
sessions mediante la función session_id: Ejemplo de solicitud
const credentials = new Auth({
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
applicationId: VONAGE_APPLICATION_ID,
});
const options = {};
const meetingsClient = new Meetings(credentials, options);
const recordings = await meetingsClient.getSessionRecordings("2_MX40NjMwODczMn5-MTU3NTgyODEwNzQ2MH5OZDJrVmdBRUNDbG5MUzNqNX20yQ1Z-fg");
var client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
var recordings = client.getMeetingsClient().listRecordings(
"2_MX40NjMwODczMn5-MTU3NTgyODEwNzQ2MH5OZDJrVmdBRUNDbG5MUzNqNX20yQ1Z-fg"
);
client = Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)
recordings = client.meetings.sessions.list_recordings(
session_id: "2_MX40NjMwODczMn5-MTU3NTgyODEwNzQ2MH5OZDJrVmdBRUNDbG5MUzNqNX20yQ1Z-fg"
)
Esto devolverá un objeto del tipo Vonage::Meetings::Sessions::ListResponse clase.
Esta clase define un each que le permite iterar a través del método recordings devuelto en la respuesta. Por ejemplo:
recordings.each {|recording| puts recording.id}
# => "49d900c8-372b-4c9e-b682-5601cbdc1f7a"
# => "9f6fe8ae-3458-4a72-b532-8276d5533e97"
La clase también incluye Enumerablepor lo que puede llamar a cualquier método de instancia de ese módulo en el objeto. Por ejemplo:
Ejemplo de respuesta
Recuperar grabación individual
https://api-eu.vonage.com/v1/meetings/recordings/:recording_id
Una vez que tenga el recording_idpuede utilizar la función recordings para recuperar una grabación:
Ejemplo de solicitud
const credentials = new Auth({
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
applicationId: VONAGE_APPLICATION_ID,
});
const options = {};
const meetingsClient = new Meetings(credentials, options);
const recording = await meetingsClient.getRecording(ROOM_ID, "9f6fe8ae-3458-4a72-b532-8276d5533e97");
var client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
var recording = client.getMeetingsClient().getRecording(
UUID.fromString("9f6fe8ae-3458-4a72-b532-8276d5533e97")
);
Esto devolverá un Vonage::Response objeto.
En Vonage::Response de-serializa los datos JSON devueltos en Vonage::Entity y proporciona métodos getter para las propiedades de nivel superior de esos datos JSON, por ejemplo:
recording.started_at # => "2023-06-06T07:15:13.974Z"
recording.status # => "stopped"
Para las propiedades de los datos JSON cuyo valor es un objeto JSON, éste se de-serializa a su vez en un objeto Vonage::Entity con sus propios métodos getter. Por ejemplo, el objeto _links devuelve un Vonage::Entity con un objeto url que a su vez devuelve un Vonage::Entity con un objeto href getter. Puedes encadenar estas invocaciones al método getter para llegar a los datos que necesitas:
Ejemplo de respuesta
Borrar una grabación
[BORRAR]: https://api-eu.vonage.com/v1/meetings/recordings/:recording_id
Puede eliminar una grabación con una acción [ELIMINAR] utilizando las teclas recording_id en el recordings punto final:
Ejemplo de solicitud
const credentials = new Auth({
privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
applicationId: VONAGE_APPLICATION_ID,
});
const options = {};
const meetingsClient = new Meetings(credentials, options);
await meetingsClient.deleteRecording("9f6fe8ae-3458-4a72-b532-8276d5533e97");
var client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
client.getMeetingsClient().deleteRecording(
UUID.fromString("9f6fe8ae-3458-4a72-b532-8276d5533e97")
);
client = Vonage::Client.new(
application_id: ENV["VONAGE_APPLICATION_ID"],
private_key: File.read(ENV["VONAGE_APPLICATION_PRIVATE_KEY_PATH"])
)
client.meetings.recordings.delete(recording_id: "9f6fe8ae-3458-4a72-b532-8276d5533e97")
Cifrado de grabaciones
Todas las grabaciones se almacenan en Amazon S3 y se cifran automáticamente al cargarlas, tal y como se indica en el Documentación de Amazon:
Amazon S3 aplica ahora el cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) como nivel básico de cifrado para cada bucket de Amazon S3. A partir del 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin impacto en el desempeño. El estado de cifrado automático para la configuración de cifrado predeterminada de los buckets de S3 y para las nuevas cargas de objetos está disponible en los logs de AWS CloudTrail, S3 Inventory, S3 Storage Lens, la consola de Amazon S3 y como encabezado de respuesta adicional de la API de Amazon S3 en la interfaz de línea de comandos de AWS y los SDK de AWS. Para obtener más información, consulte Cifrado por defecto FAQ.