Gravação de chamada: traga seu próprio início rápido de armazenamento do Azure
Esse 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, Traga sua própria funcionalidade de Armazenamento do Azure; verifique se você está familiarizado com as APIs de Gravação de Chamadas.
Pré-requisito: configuração de atribuições de função RBAC (Controles de Acesso Baseados em Função e Identidade Gerenciada)
1. Habilitar a identidade gerenciada atribuída pelo sistema para os Serviços de Comunicação do Azure
- Abra um recurso dos Serviços de Comunicação do Azure. Navegue até Identidade à esquerda.
- Identidade Gerenciada Atribuída ao Sistema habilitada e clique em Salvar.
- Depois de concluído, você poderá ver a ID da entidade de segurança do objeto da identidade recém-criada.
- Agora que a identidade foi criada com sucesso, 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 valores a seguir
- Escopo: Storage
- Assinatura: Escolha sua assinatura
- Recurso: Escolha sua conta de armazenamento
- Função: Serviços de Comunicação do Azure precisa de "Colaborador de Dados de Blob de Armazenamento" para poder gravar em sua conta de armazenamento.
- Clique em “Salvar”.
- Depois de concluído, 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 a ID de chamada do servidor recebida durante o início da chamada.
Usando o armazenamento de blobs 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 blobs 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 exportação bem-sucedida
Use um web hook da Grade de Eventos do Azure ou outra ação disparada 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 evento.
{
"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 formato a seguir, conforme mostrado no diagrama.
- /YYYYMMDD/callId/first_8_of_recordingId + '-' + unique guid/[chunk-id]-acsmetadata.documentId.json
- /YYYYMMDD/callId/first_8_of_recordingId + '-' + guid exclusivo/[chunk-id]-audiomp3.documentId.mp3
Próximas etapas
Para obter mais informações, consulte os seguintes artigos:
- Baixar nossos aplicativos de exemplo de gravação de chamadas Java
- Saiba mais sobre os Gravação de chamada
- Saiba mais sobre a Automação de Chamadas