Share via


Samtalsinspelning: Snabbstart för Bring Your Own Azure Storage

Den här snabbstarten kommer igång med Bring your own Azure Storage for Call Recording. Om du vill börja använda Bring your own Azure Storage-funktioner kontrollerar du att du är bekant med API:erna för samtalsinspelning.

Förutsättningar: Konfigurera rolltilldelningar för hanterade identiteter och rollbaserade åtkomstkontroller (RBAC)

1. Aktivera systemtilldelad hanterad identitet för Azure Communication Services

Diagram som visar en kommunikationstjänstresurs med hanterad identitet inaktiverad

  1. Öppna din Azure Communication Services-resurs. Navigera till Identitet till vänster.
  2. Aktiverad systemtilldelad hanterad identitet och klicka på Spara.
  3. När du är klar kan du se objektobjektets huvudnamns-ID för den nyligen skapade identiteten.

Diagram som visar en kommunikationstjänstresurs med hanterad identitet aktiverad

  1. När identiteten har skapats klickar du på Azure-rolltilldelningar för att börja lägga till rolltilldelningar.

2. Lägg till rolltilldelning

  1. Klicka på "Lägg till rolltilldelning"

Diagram som visar en resurshanterad identitet för kommunikationstjänsten som lägger till rolltilldelning

  1. I panelen Lägg till rolltilldelning väljer du följande värden
    1. Omfång: Storage
    2. Prenumeration: Välj din prenumeration
    3. Resurs: Välj ditt lagringskonto
    4. Roll: Azure Communication Services behöver "Storage Blob Data Contributor" för att kunna skriva till ditt lagringskonto.

Diagram som visar en resurshanterad identitet för kommunikationstjänsten som lägger till information om rolltilldelning

  1. Klicka på Spara.
  2. När du är klar visas den nyligen tillagda rolltilldelningen i fönstret "Azure-rolltilldelning" .

Diagram som visar att en resurshanterad identitetsrolltilldelning för kommunikationstjänsten lyckades

Starta inspelningssessionen med extern lagring angiven

Använd serveranrops-ID:t som togs emot under initieringen av anropet.

Använda Azure Blob Storage för extern lagring

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

Använda Azure Blob Storage för extern lagring

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

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

Meddelande om lyckad export

Använd en Azure Event Grid-webbkrok eller annan utlöst åtgärd för att meddela dina tjänster när det inspelade mediet är klart och exporterat till den externa lagringsplatsen.

Se det här exemplet på händelseschemat.

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

Mappstruktur för samtalsinspelning

Inspelningar lagras i följande format som visas i diagrammet.

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

Diagram som visar en mappstruktur för samtalsinspelning

Nästa steg

Mer information finns i följande artiklar: