Condividi tramite


Registrazione delle chiamate: Guida introduttiva all'archiviazione di Azure personalizzata

Questa guida introduttiva illustra come usare Bring your own Azure Storage for Call Recording. Per iniziare a usare la funzionalità Bring your own Archiviazione di Azure, assicurarsi di avere familiarità con le API di registrazione delle chiamate.

Prerequisito: Configurazione delle assegnazioni di ruolo di Controllo di accesso basate su ruoli e identità gestite

1. Abilitare l'identità gestita assegnata dal sistema per Servizi di comunicazione di Azure

Diagramma che mostra una risorsa del servizio di comunicazione con identità gestita disabilitata

  1. Aprire la risorsa Servizi di comunicazione di Azure. Passare a Identity (Identità) a sinistra.
  2. Abilitata identità gestita assegnata dal sistema e fare clic su Salva.
  3. Al termine, è possibile visualizzare l'ID entità oggetto dell'identità appena creata.

Diagramma che mostra una risorsa del servizio di comunicazione con identità gestita abilitata

  1. Dopo aver creato l'identità, fare clic su Assegnazioni di ruolo di Azure per iniziare ad aggiungere assegnazioni di ruolo.

2. Aggiungere un'assegnazione di ruolo

  1. Fare clic su "Aggiungi assegnazione di ruolo"

Diagramma che mostra un'identità gestita del servizio di comunicazione che aggiunge un'assegnazione di ruolo

  1. Nel pannello "Aggiungi assegnazione di ruolo" selezionare i valori seguenti
    1. Ambito: Storage
    2. Sottoscrizione: scegliere la sottoscrizione in uso
    3. Risorsa: scegliere l'account di archiviazione
    4. Ruolo: Servizi di comunicazione di Azure deve poter scrivere nell'account di archiviazione"Archiviazione Collaboratore dati BLOB.

Diagramma che mostra un'identità gestita del servizio di comunicazione che aggiunge i dettagli dell'assegnazione di ruolo

  1. Fare clic su "Salva".
  2. Al termine, l'assegnazione di ruolo appena aggiunta viene visualizzata nella finestra "Assegnazione di ruolo di Azure".

Diagramma che mostra un'assegnazione di ruolo gestita di identità gestita del servizio di comunicazione riuscita

Avviare la sessione di registrazione con l'archiviazione esterna specificata

Usare l'ID chiamata server ricevuto durante l'avvio della chiamata.

Uso dell'archiviazione BLOB di Azure per l'archiviazione esterna

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

Uso dell'archiviazione BLOB di Azure per l'archiviazione esterna

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

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

Notifica relativa all'esportazione riuscita

Usare un web hook Griglia di eventi di Azure o un'altra azione attivata per notificare ai servizi quando il supporto registrato è pronto ed esportato nel percorso di archiviazione esterno.

Fare riferimento a questo esempio dello schema di eventi.

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

Struttura di cartelle per la registrazione delle chiamate

Le registrazioni vengono archiviate nel formato seguente, come illustrato nel diagramma.

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

Diagramma che mostra una struttura di cartella di registrazione chiamate

Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: