Grabación de llamadas: Inicio rápido de Bring your own Azure Storage
Este inicio rápido le ayudará a empezar a usar Bring your own Azure Storage para la grabación de llamadas. Para empezar a usar la funcionalidad Bring your own Azure Storage, asegúrese de que conoce las API de grabación de llamadas.
Requisito previo: configuración de asignaciones de rol de control de acceso basado en rol (RBAC) e Identidad administrada
1. Habilitar la identidad administrada asignada por el sistema para Azure Communication Services
- Abra el recurso de Azure Communication Services. Vaya a Identidad a la izquierda.
- Identidad administrada asignada por el sistema habilitada y hacer clic en Guardar.
- Una vez completado, podrá ver el id. de entidad de seguridad de objeto de la identidad recién creada.
- Una vez creada correctamente la identidad, haga clic en Asignaciones de roles de Azure para empezar a agregar asignaciones de roles.
2. Agregar asignación de roles
- Haga clic en "Agregar asignación de roles"
- En el panel "Agregar asignación de roles", seleccione los siguientes valores
- Ámbito: Storage
- Suscripción: elija la suscripción
- Recurso: Elija la cuenta de almacenamiento
- Rol: Azure Communication Services necesita "Colaborador de datos de Blob de almacenamiento" para poder escribir en la cuenta de almacenamiento.
- Haga clic en "Guardar".
- Una vez se haya completado, verá la asignación de roles recién agregada en la ventana "Asignación de roles de Azure".
Iniciar sesión de grabación con el almacenamiento externo especificado
Use el identificador de llamada de servidor recibido durante el inicio de la llamada.
Uso del almacenamiento de blobs de Azure para almacenamiento externo
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
{
//...
ExternalStorage = new BlobStorage(new Uri("<Insert Container / Blob Uri>"))
};
Response<RecordingStateResult> startRecordingWithResponse = await callAutomationClient.GetCallRecording()
.StartRecordingAsync(options: recordingOptions);
Uso del almacenamiento de blobs de Azure para almacenamiento externo
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setExternalStorage(new BlobStorage("<Insert Container / Blob Uri>"));
Response<StartCallRecordingResult> response = callAutomationClient.getCallRecording()
.startRecordingWithResponse(recordingOptions, null);
Notificación sobre la exportación realizada con éxito
Use un webhook de Azure Event Grid u otra acción desencadenada para notificar sus servicios cuando el soporte físico grabado esté listo y exportado a la ubicación de almacenamiento externo.
Consulte este ejemplo del esquema de evento.
{
"id": "string", // Unique guid for event
"topic": "string", // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": "string", // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"storageType": "string", // AzureBlob etc.
"recordingId": "string", // unique id for recording
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": "string", // Document id for the recording chunk
"contentLocation": "string", //Azure Communication Services URL where the content is located
"metadataLocation": "string", // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": "string", // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": "int", // Index providing ordering for this chunk in the entire recording
"endReason": "string", // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": "string", // ISO 8601 date time for the start of the recording
"recordingDurationMs": "int", // Duration of recording in milliseconds
"sessionEndReason": "string" // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": "string", // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": "string", // "1.0"
"metadataVersion": "string", // "1"
"eventTime": "string" // ISO 8601 date time for when the event was created
}
Estructura de carpetas para la grabación de llamadas
Las grabaciones se almacenan en el siguiente formato, como se muestra en el diagrama.
- /YYYYMMDD/callId/first_8_of_recordingId + '-' + unique guid/[chunk-id]-acsmetadata.documentId.json
- /YYYYMMDD/callId/first_8_of_recordingId + '-' + unique guid/[chunk-id]-audiomp3.documentId.mp3
Pasos siguientes
Para más información, consulte los siguientes artículos.
- Descarga de nuestra aplicación de ejemplo de grabación de llamadas de Java
- Más información sobre la grabación de llamadas
- Más información sobre la automatización de llamadas