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
- Otwórz zasób usług Azure Communication Services. Przejdź do pozycji Tożsamość po lewej stronie.
- Włączono tożsamość zarządzaną przypisaną przez system i kliknij pozycję Zapisz.
- Po zakończeniu możesz zobaczyć identyfikator podmiotu głównego obiektu nowo utworzonej tożsamości.
- Po pomyślnym utworzeniu tożsamości kliknij pozycję Przypisania ról platformy Azure, aby rozpocząć dodawanie przypisań ról.
2. Dodawanie przypisania roli
- Kliknij pozycję "Dodaj przypisanie roli"
- Na panelu "Dodawanie przypisania roli" wybierz następujące wartości
- Zakres: Storage
- Subskrypcja: wybierz subskrypcję
- Zasób: wybierz konto magazynu
- Rola: Usługi Azure Communication Services wymagają "Współautor danych obiektu blob usługi Storage" , aby móc zapisywać dane na koncie magazynu.
- Kliknij pozycję "Zapisz".
- Po zakończeniu w oknie "Przypisanie roli platformy Azure" zostanie wyświetlone nowo dodane przypisanie roli.
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
Następne kroki
Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Pobierz przykładową aplikację do nagrywania wywołań Java
- Dowiedz się więcej o nagrywaniu połączeń
- Dowiedz się więcej o automatyzacji wywołań