Udostępnij za pośrednictwem


Nagrywanie połączeń: Przewodnik Szybki start dotyczący funkcji Bring your own Azure Storage

Ten przewodnik Szybki start umożliwia rozpoczęcie pracy z usługą Bring your own Azure Storage for Call Recording. Aby rozpocząć korzystanie z funkcji Bring your own Azure Storage, upewnij się, że znasz interfejsy API nagrywania połączeń.

Wymagania wstępne: Konfigurowanie przypisań ról i tożsamości zarządzanej i kontroli dostępu opartej na rolach (RBAC)

1. Włączanie tożsamości zarządzanej przypisanej przez system dla usług Azure Communication Services

Diagram przedstawiający zasób usługi komunikacyjnej z wyłączoną tożsamością zarządzaną

  1. Otwórz zasób usług Azure Communication Services. Przejdź do pozycji Tożsamość po lewej stronie.
  2. Włączono tożsamość zarządzaną przypisaną przez system i kliknij pozycję Zapisz.
  3. Po zakończeniu możesz zobaczyć identyfikator podmiotu głównego obiektu nowo utworzonej tożsamości.

Diagram przedstawiający zasób usługi komunikacyjnej z włączoną tożsamością zarządzaną

  1. Po pomyślnym utworzeniu tożsamości kliknij pozycję Przypisania ról platformy Azure, aby rozpocząć dodawanie przypisań ról.

2. Dodawanie przypisania roli

  1. Kliknij pozycję "Dodaj przypisanie roli"

Diagram przedstawiający tożsamość zarządzaną zasobu usługi komunikacyjnej z dodawaniem przypisania roli

  1. Na panelu "Dodawanie przypisania roli" wybierz następujące wartości
    1. Zakres: Storage
    2. Subskrypcja: wybierz subskrypcję
    3. Zasób: wybierz konto magazynu
    4. Rola: Usługi Azure Communication Services wymagają "Współautor danych obiektu blob usługi Storage" , aby móc zapisywać dane na koncie magazynu.

Diagram przedstawiający tożsamość zarządzaną zasobu usługi komunikacyjnej z dodawaniem szczegółów przypisania roli

  1. Kliknij pozycję "Zapisz".
  2. Po zakończeniu w oknie "Przypisanie roli platformy Azure" zostanie wyświetlone nowo dodane przypisanie roli.

Diagram przedstawiający powodzenie przypisywania roli tożsamości zarządzanej zasobu usługi komunikacyjnej

Rozpocznij sesję nagrywania z określonym magazynem zewnętrznym

Użyj identyfikatora wywołania serwera odebranego podczas inicjowania wywołania.

Korzystanie z usługi Azure Blob Storage na potrzeby magazynu zewnętrznego

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

Korzystanie z usługi Azure Blob Storage na potrzeby magazynu zewnętrznego

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

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

Powiadomienie dotyczące pomyślnego eksportu

Użyj elementu webhook usługi Azure Event Grid lub innej wyzwolonej akcji, aby powiadomić usługi, gdy zarejestrowany nośnik jest gotowy i wyeksportowany do zewnętrznej lokalizacji magazynu.

Zapoznaj się z tym przykładem schematu zdarzeń.

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

Struktura folderów na potrzeby nagrywania wywołań

Nagrania są przechowywane w następującym formacie, jak pokazano na diagramie.

  • /RRRRMDD/callId/first_8_of_recordingId + '-' + unikatowy identyfikator GUID/[identyfikator fragmentu]-acsmetadata.documentId.json
  • /RRRRMDD/callId/first_8_of_recordingId + '-' + unikatowy identyfikator GUID/[identyfikator fragmentu]-audiomp3.documentId.mp3

Diagram przedstawiający strukturę folderu nagrywania wywołań

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące artykuły: