Partager via


Enregistrement des appels : démarrage rapide de la fonctionnalité Apporter votre propre stockage Azure

Ce démarrage rapide vous permet de commencer à utiliser Apporter votre propre stockage pour l’enregistrement des appels. Pour commencer à utiliser la fonctionnalité Apporter votre propre stockage Azure, veillez à vous familiariser avec les API d’enregistrement des appels.

Prérequis : configuration d’attributions de rôles d’identité managée et de contrôle d’accès en fonction du rôle RBAC

1. Activer l’identité managée affectée par le système pour Azure Communication Services

Diagramme montrant une ressource de service de communication avec une identité managée désactivée

  1. Ouvrez votre ressource Azure Communication Services. Accédez à Identité à gauche.
  2. Une identité managée affectée par le système activée, puis cliquez sur Enregistrer.
  3. Une fois terminé, vous pouvez voir l’ID du principal d’objet de l’identité nouvellement créée.

Diagramme montrant une ressource de service de communication avec une identité managée activée

  1. Après la création correcte de l’identité, cliquez sur Attributions de rôles Azure pour commencer à ajouter des attributions de rôles.

2. Ajoutez une attribution de rôle

  1. Cliquez sur « Ajouter une attribution de rôle »

Diagramme montrant une identité managée de ressource de service de communication ajoutant l’attribution de rôle

  1. Dans la page « Ajouter une attribution de rôle », sélectionnez les valeurs suivantes
    1. Étendue : Stockage
    2. Abonnement : choisissez votre abonnement
    3. Ressource : Choisissez votre compte de stockage
    4. Rôle : Azure Communication Services a besoin de « Contributeur aux données blob de stockage » pour pouvoir écrire dans votre compte de stockage.

Diagramme montrant une identité managée de ressource de service de communication ajoutant les détails d’attribution de rôle

  1. Cliquez sur « Save » (Enregistrer).
  2. Une fois terminé, vous voyez l’attribution de rôle qui vient d’être ajoutée dans la fenêtre « Attribution de rôle Azure ».

Diagramme montrant une identité managée de ressource de service de communication du succès de l’attribution de rôle

Démarrer la session d’enregistrement avec le stockage externe spécifié

Utilisez l’ID d’appel du serveur reçu lors du lancement de l’appel.

Utilisation du stockage Blob Azure pour le stockage externe

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);

Utilisation du stockage Blob Azure pour le stockage externe

StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
                .setExternalStorage(new BlobStorage("<Insert Container / Blob Uri>"));

Response<StartCallRecordingResult> response = callAutomationClient.getCallRecording()
.startRecordingWithResponse(recordingOptions, null);

Notification en cas d’exportation réussie

Utilisez un webhook Azure Event Grid, ou une autre action déclenchée, pour avertir vos services lorsque le média enregistré est prêt et qu’il a été exporté vers l’emplacement de stockage externe.

Reportez-vous à cet exemple de schéma d’événement.

{
    "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
}

Structure de dossier pour l’enregistrement d’appel

Les enregistrements sont stockés au format suivant tel qu’illustré dans le diagramme.

  • /YYYYMMDD/callId/first_8_of_recordingId + '-' + guid/[chunk-id]-acsmetadata.documentId.json unique
  • /YYYYMMDD/callId/first_8_of_recordingId + '-' + guid/[chunk-id]-audiomp3.documentId.mp3 unique

Diagramme illustrant une structure de dossier d’enregistrement d’appel

Étapes suivantes

Pour plus d’informations, consultez les articles suivants :