Delen via


Gespreksopname: Snelstartgids voor Bring Your Own Azure Storage

Deze quickstart helpt u aan de slag te gaan met Bring your own Azure Storage for Call Recording. Als u bring your own Azure Storage-functionaliteit wilt gaan gebruiken, moet u bekend zijn met de CALL Recording-API's.

Vereiste: Roltoewijzingen voor beheerde identiteit en op rollen gebaseerd toegangsbeheer (RBAC) instellen

1. Door het systeem toegewezen beheerde identiteit inschakelen voor Azure Communication Services

Diagram van een communicatieserviceresource met beheerde identiteit uitgeschakeld

  1. Open uw Azure Communication Services-resource. Navigeer naar Identiteit aan de linkerkant.
  2. Ingeschakelde door het systeem toegewezen beheerde identiteit en klik op Opslaan.
  3. Zodra dit is voltooid, kunt u de object-principal-id van de zojuist gemaakte identiteit zien.

Diagram met een communicatieserviceresource waarvoor beheerde identiteit is ingeschakeld

  1. Zodra de identiteit is gemaakt, klikt u op Azure-roltoewijzingen om te beginnen met het toevoegen van roltoewijzingen.

2. Roltoewijzing toevoegen

  1. Klik op Roltoewijzing toevoegen

Diagram met een door de communicatieservice beheerde identiteit die roltoewijzing toevoegt

  1. Selecteer in het deelvenster Roltoewijzing toevoegen de volgende waarden
    1. Bereik: Storage
    2. Abonnement: Kies uw abonnement
    3. Resource: Kies uw opslagaccount
    4. Rol: Azure Communication Services heeft 'Inzender voor opslagblobgegevens' nodig om naar uw opslagaccount te kunnen schrijven.

Diagram met een beheerde identiteit voor een communicatieservice die roltoewijzingsgegevens toevoegt

  1. Klik op Opslaan.
  2. Zodra dit is voltooid, ziet u de zojuist toegevoegde roltoewijzing in het venster Azure-roltoewijzing .

Diagram met een roltoewijzing van een door de communicatieservice beheerde identiteit

Opnamesessie starten met externe opslag opgegeven

Gebruik de serveroproep-id die tijdens het starten van de oproep is ontvangen.

Azure Blob Storage gebruiken voor externe opslag

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

Azure Blob Storage gebruiken voor externe opslag

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

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

Melding over geslaagde export

Gebruik een Azure Event Grid-webhook of een andere geactiveerde actie om uw services op de hoogte te stellen wanneer de opgenomen media gereed zijn en worden geëxporteerd naar de externe opslaglocatie.

Raadpleeg dit voorbeeld van het gebeurtenisschema.

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

Mapstructuur voor gespreksopname

Opnamen worden opgeslagen in de volgende indeling, zoals weergegeven in het diagram.

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

Diagram met een mapstructuur voor gespreksopname

Volgende stappen

Raadpleeg voor meer informatie de volgende artikelen: