Gravação de chamadas: traga seu próprio início rápido de armazenamento do Azure
Este guia de início rápido ajuda você a começar com Traga seu próprio armazenamento do Azure para gravação de chamadas. Para começar a usar a funcionalidade Traga sua própria funcionalidade de Armazenamento do Azure, verifique se você está familiarizado com as APIs de Gravação de Chamadas.
Pré-requisito: Configurando atribuições de função RBAC (Controles de Acesso Baseados em Função) e Identidade Gerenciada
1. Habilitar a identidade gerenciada atribuída ao sistema para os Serviços de Comunicação do Azure
- Abra o recurso dos Serviços de Comunicação do Azure. Navegue até Identidade à esquerda.
- Ative a Identidade Gerenciada Atribuída ao Sistema e clique em Salvar.
- Depois de concluído, você poderá ver a ID principal do objeto da identidade recém-criada.
- Depois que a identidade tiver sido criada com êxito, clique em Atribuições de função do Azure para começar a adicionar atribuições de função.
2. Adicionar atribuição de função
- Clique em "Adicionar atribuição de função"
- No painel "Adicionar atribuição de função", selecione os seguintes valores
- Âmbito: Armazenamento
- Subscrição: Escolha a sua subscrição
- Recurso: escolha sua conta de armazenamento
- Função: os Serviços de Comunicação do Azure precisam de "Colaborador de Dados de Blob de Armazenamento" para poderem escrever na sua conta de armazenamento.
- Clique em "Salvar".
- Depois de concluída, você verá a atribuição de função recém-adicionada na janela "Atribuição de função do Azure".
Iniciar sessão de gravação com armazenamento externo especificado
Use o ID de chamada do servidor recebido durante o início da chamada.
Usando o armazenamento de blob do Azure para armazenamento externo
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);
Usando o armazenamento de blob do Azure para armazenamento externo
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setExternalStorage(new BlobStorage("<Insert Container / Blob Uri>"));
Response<StartCallRecordingResult> response = callAutomationClient.getCallRecording()
.startRecordingWithResponse(recordingOptions, null);
Notificação sobre o êxito da exportação
Use um gancho da Web da Grade de Eventos do Azure ou outra ação acionada para notificar seus serviços quando a mídia gravada estiver pronta e exportada para o local de armazenamento externo.
Consulte este exemplo do esquema de eventos.
{
"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
}
Estrutura de pastas para gravação de chamadas
As gravações são armazenadas no seguinte formato, como mostrado no diagrama.
- /AAAAMMDD/callId/first_8_of_recordingId + '-' + guid exclusivo/[chunk-id]-acsmetadata.documentId.json
- /AAAAMMDD/callId/first_8_of_recordingId + '-' + guid exclusivo/[chunk-id]-audiomp3.documentId.mp3
Próximos passos
Para obter mais informações, consulte os seguintes artigos que podem estar em inglês:
- Faça o download do nosso aplicativo de exemplo de gravação de chamadas Java
- Saiba mais sobre a gravação de chamadas
- Saiba mais sobre a automação de chamadas