Aracılığıyla paylaş


Arama kaydı: Kendi Azure depolama alanınızı getirme hızlı başlangıcı

Bu hızlı başlangıç, Arama Kaydı için Kendi Azure depolama alanınızı getirin özelliğini kullanmaya başlamanızı sağlar. Kendi Azure Depolama işlevselliğinizi getirin işlevini kullanmaya başlamak için Arama Kaydı API'lerini bildiğinizden emin olun.

Ön koşul: Yönetilen Kimlik ve Rol Tabanlı Erişim Denetimleri (RBAC) rol atamalarını ayarlama

1. Azure İletişim Hizmetleri için sistem tarafından atanan yönetilen kimliği etkinleştirme

Yönetilen kimlik devre dışı bırakılmış bir iletişim hizmeti kaynağını gösteren diyagram

  1. Azure İletişim Hizmetleri kaynağınızı açın. Soldaki Kimlik'e gidin.
  2. Sistem Tarafından Atanan Yönetilen Kimlik etkinleştirildi ve Kaydet'e tıklayın.
  3. Tamamlandıktan sonra, yeni oluşturulan kimliğin Nesne sorumlusu kimliğini görebilirsiniz.

Yönetilen kimliğin etkinleştirildiği bir iletişim hizmeti kaynağını gösteren diyagram

  1. Kimlik başarıyla oluşturulduktan sonra Rol atamaları eklemeye başlamak için Azure rol atamaları'na tıklayın.

2. Rol ataması ekleme

  1. "Rol ataması ekle" seçeneğine tıklayın

Rol ataması ekleyen iletişim hizmeti kaynak yönetilen kimliğini gösteren diyagram

  1. "Rol ataması ekle" panelinde aşağıdaki değerleri seçin
    1. Kapsam: Depolama
    2. Abonelik: Aboneliğinizi seçin
    3. Kaynak: Depolama hesabınızı seçin
    4. Rol: Azure İletişim Hizmetleri depolama hesabınıza yazabilmek için "Depolama Blob Veri Katkıda Bulunanı" gerekir.

Rol atama ayrıntılarını ekleyen iletişim hizmeti kaynak yönetilen kimliğini gösteren diyagram

  1. "Kaydet"e tıklayın.
  2. Tamamlandıktan sonra yeni eklenen rol atamasını "Azure rol ataması" penceresinde görürsünüz.

İletişim hizmeti kaynak yönetilen kimlik rolü atama başarısının gösterildiği diyagram

Belirtilen dış depolama alanıyla kaydı başlatma oturumu

Çağrı başlatılırken alınan sunucu çağrı kimliğini kullanın.

Dış depolama için Azure blob depolamayı kullanma

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

Dış depolama için Azure blob depolamayı kullanma

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

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

Başarılı dışarı aktarma bildirimi

Kaydedilen medya hazır olduğunda ve dış depolama konumuna aktarıldığında hizmetlerinizi bilgilendirmek için bir Azure Event Grid web kancası veya tetiklenen başka bir eylem kullanın.

Olay şemasının bu örneğine bakın.

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

Arama Kaydı için Klasör Yapısı

Kayıtlar diyagramda gösterildiği gibi aşağıdaki biçimde depolanır.

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

Arama Kayıt Klasörü yapısını gösteren diyagram

Sonraki adımlar

Daha fazla bilgi için aşağıdaki makaleleri inceleyin: