Compartir vía


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

Diagrama que muestra un recurso de servicio de comunicación con la identidad administrada deshabilitada

  1. Abra el recurso de Azure Communication Services. Vaya a Identidad a la izquierda.
  2. Identidad administrada asignada por el sistema habilitada y hacer clic en Guardar.
  3. Una vez completado, podrá ver el id. de entidad de seguridad de objeto de la identidad recién creada.

Diagrama que muestra un recurso de servicio de comunicación con la identidad administrada habilitada

  1. 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

  1. Haga clic en "Agregar asignación de roles"

Diagrama en el que se muestra una identidad administrada de recurso de servicio de comunicación que agrega la asignación de roles

  1. En el panel "Agregar asignación de roles", seleccione los siguientes valores
    1. Ámbito: Storage
    2. Suscripción: elija la suscripción
    3. Recurso: Elija la cuenta de almacenamiento
    4. Rol: Azure Communication Services necesita "Colaborador de datos de Blob de almacenamiento" para poder escribir en la cuenta de almacenamiento.

Diagrama en el que se muestra una identidad administrada de recurso de servicio de comunicación que agrega detalles de asignación de roles

  1. Haga clic en "Guardar".
  2. Una vez se haya completado, verá la asignación de roles recién agregada en la ventana "Asignación de roles de Azure".

Diagrama en el que se muestra la operación realizada con éxito de una asignación de rol de identidad administrada de recurso de servicio de comunicación

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

Diagrama que muestra una estructura de carpeta de grabación de llamadas

Pasos siguientes

Para más información, consulte los siguientes artículos.