Sdílet prostřednictvím


Nahrávání hovorů: Rychlý start přineste si vlastní úložiště Azure

Tento rychlý start vám pomůže začít s používáním vlastního úložiště Azure pro záznam hovorů. Pokud chcete začít používat funkci Přineste si vlastní službu Azure Storage, ujistěte se, že znáte rozhraní API pro nahrávání hovorů.

Předpoklad: Nastavení přiřazení rolí Spravované identity a řízení přístupu na základě role (RBAC)

1. Povolení spravované identity přiřazené systémem pro Azure Communication Services

Diagram znázorňující prostředek komunikační služby se zakázanou spravovanou identitou

  1. Otevřete prostředek Azure Communication Services. Na levé straně přejděte na Identitu .
  2. Povolená spravovaná identita přiřazená systémem a klikněte na Uložit.
  3. Po dokončení uvidíte ID objektového objektu nově vytvořené identity.

Diagram znázorňující prostředek komunikační služby s povolenou spravovanou identitou

  1. Po úspěšném vytvoření identity klikněte na přiřazení rolí Azure a začněte přidávat přiřazení rolí.

2. Přidání přiřazení role

  1. Klikněte na Přidat přiřazení role.

Diagram znázorňující spravovanou identitu prostředku komunikační služby a přidání přiřazení role

  1. Na panelu Přidat přiřazení role vyberte následující hodnoty.
    1. Rozsah: Storage
    2. Předplatné: Zvolte své předplatné.
    3. Prostředek: Volba účtu úložiště
    4. Role: Služba Azure Communication Services potřebuje přispěvatel dat objektů blob úložiště, aby mohl zapisovat do vašeho účtu úložiště.

Diagram znázorňující spravovanou identitu prostředku komunikační služby s přidáním podrobností o přiřazení role

  1. Klikněte na Uložit.
  2. Po dokončení se v okně Přiřazení role Azure zobrazí nově přidané přiřazení role.

Diagram znázorňující úspěšné přiřazení role role spravované identitou prostředku komunikační služby

Zahájení záznamové relace se zadaným externím úložištěm

Použijte ID volání serveru přijaté během zahájení volání.

Použití úložiště objektů blob v Azure pro externí úložiště

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

Použití úložiště objektů blob v Azure pro externí úložiště

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

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

Oznámení o úspěšném exportu

Pomocí webového háku Služby Azure Event Grid nebo jiné aktivované akce upozorněte své služby, když je nahrané médium připravené a exportované do externího úložiště.

Podívejte se na tento příklad schématu událostí.

{
    "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 složek pro záznam hovoru

Nahrávky se ukládají v následujícím formátu, jak je znázorněno v diagramu.

  • /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

Diagram znázorňující strukturu složky záznamu volání

Další kroky

Další informace najdete v následujících článcích: