Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 roles de controles de acceso basado en roles (RBAC) e identidad administrada
1. Habilitación de 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 completada, podrá ver el identificador de entidad de seguridad del 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: almacenamiento
- Suscripción: elija su 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
Para notificar a los servicios cuándo el medio grabado está listo y exportado a la ubicación de almacenamiento externo, use un webhook Azure Event Grid u otra acción desencadenada.
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
}
Notificación y acción para registrar errores de exportación.
Se puede producir un error al exportar el archivo de grabación debido a interrupciones incorrectas de configuración o servicio. En ambos casos, la notificación de error incluye la dirección URL de descarga para obtener grabaciones. Descargue las grabaciones desde la ubicación en la notificación de error en un plazo de 24 horas.
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 obtener más información, consulte los artículos siguientes:
- 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