Logs de gravação de chamadas dos Serviços de Comunicação do Azure

Os Serviços de Comunicação do Azure oferecem recursos de registro em log que você pode usar para monitorar e depurar sua solução de Serviços de Comunicação. Você configura esses recursos por meio do portal do Azure.

O conteúdo deste artigo refere-se a logs habilitados por meio do Azure Monitor (consulte também Perguntas frequentes). Para habilitar esses logs para os Serviços de Comunicação, consulte Habilitar o registro em log nas configurações de diagnóstico.

Categorias de log de recursos

Os Serviços de Comunicação oferecem os seguintes tipos de logs que você pode habilitar:

  • Logs de uso: forneça dados de uso associados a cada oferta de serviço faturada.
  • Registros de resumo de gravação de chamadas: Forneça informações resumidas para gravações de chamadas, como:
    • Duração da chamada.
    • Conteúdo multimédia (por exemplo, áudio/vídeo, não misturado ou transcrição).
    • Tipos de formato utilizados para a gravação (por exemplo, WAV ou MP4).
    • O motivo pelo qual a gravação terminou.
  • Gravação de logs de operações de entrada: Forneça informações sobre solicitações de entrada para operações de gravação de chamadas. Cada entrada corresponde ao resultado de uma chamada para as APIs de gravação de chamadas, como StartRecording, StopRecording, PauseRecording e ResumeRecording.

Um arquivo de gravação é gerado no final de uma chamada ou reunião. Um usuário ou um aplicativo (bot) pode iniciar e parar a gravação. A gravação também pode terminar devido a uma falha do sistema.

Os logs de resumo são publicados depois que uma gravação está pronta para ser baixada. Os logs são publicados dentro do tempo de latência padrão para logs de recursos do Azure Monitor. Consulte Tempo de ingestão de dados de log no Azure Monitor.

Esquema de log de uso

Property Description
timestamp O carimbo de data/hora (UTC) de quando o log foi gerado.
operationName A operação associada ao registro de log.
operationVersion O api-version valor associado à operação, se a operação foi executada operationName através de uma API. Se nenhuma API corresponder a esta operação, a versão representa a versão da operação, caso as propriedades associadas à operação mudem no futuro.
category A categoria de log do evento. A categoria é a granularidade na qual você pode habilitar ou desabilitar logs em um recurso. As propriedades que aparecem dentro do properties blob de um evento são as mesmas dentro de uma categoria de log e tipo de recurso.
correlationID A ID para eventos correlacionados. Você pode usá-lo para identificar eventos correlacionados entre várias tabelas.
Properties Outros dados aplicáveis a vários modos de Serviços de Comunicação.
recordID A ID exclusiva de um registro de uso.
usageType O modo de uso (por exemplo, Chat, PSTN ou NAT).
unitType O tipo de unidade em que o uso se baseia para um modo de uso (por exemplo, minutos, megabytes ou mensagens).
quantity O número de unidades utilizadas ou consumidas para este registo.

Esquema de log de resumo de gravação de chamadas

Nome da propriedade Tipo de dados Description
timeGenerated DateTime O carimbo de data/hora (UTC) de quando o log foi gerado.
operationName String A operação associada a um registro de log.
correlationId String A ID usada para correlacionar eventos entre tabelas.
recordingID String A ID da gravação a que este log se refere.
category String A categoria de log do evento. Os logs com a mesma categoria de log e tipo de recurso têm os mesmos campos de propriedade.
resultType String O estado da operação.
level String O nível de gravidade da operação.
chunkCount Número inteiro O número total de blocos criados para a gravação.
channelType String O tipo de canal da gravação, como misturado ou não misturado.
recordingStartTime DateTime A hora em que a gravação começou.
contentType String O conteúdo da gravação, como apenas áudio, áudio/vídeo ou transcrição.
formatType String O formato de arquivo da gravação.
recordingLength Duplo A duração da gravação em segundos.
audioChannelsCount Número inteiro O número total de canais de áudio na gravação.
recordingEndReason String O motivo pelo qual a gravação terminou.

Gravação de chamadas e dados de exemplo

"operationName":            "Call Recording Summary",
"operationVersion":         "1.0",
"category":                 "RecordingSummary",

Uma chamada pode ter uma gravação ou várias gravações, dependendo de quantas vezes um evento de gravação é acionado.

Por exemplo, se um agente iniciar uma chamada de saída em uma linha gravada e a chamada cair devido a um sinal de rede ruim, callID terá um recordingID valor. Se o agente chamar de volta o cliente, o sistema gerará uma nova callID instância e um novo recordingID valor.

Exemplo: Gravação de chamadas para uma chamada para uma gravação

"properties"
{  
  "TimeGenerated":"2022-08-17T23:18:26.4332392Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "zzzzzz-cada-4164-be10-0000000000",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuZHBvaW5xxxxxxxxFmNjkwxxxxxxxxxxxxSZXNvdXJjZVNwZWNpZmljSWQiOiJiZGU5YzE3Ni05M2Q3LTRkMWYtYmYwNS0yMTMwZTRiNWNlOTgifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-16T09:07:54.0000000Z",
    "RecordingLength": "73872.94",
    "ChunkCount": 6,
   "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}

Se o agente iniciar uma gravação e, em seguida, para e reinicia a gravação várias vezes enquanto a chamada ainda está ligada, callID terá muitos recordingID valores. O número de valores depende de quantas vezes os eventos de gravação foram acionados.

Exemplo: Gravação de chamadas para uma chamada para muitas gravações


{   
 "TimeGenerated": "2022-08-17T23:55:46.6304762Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "xxxxxxx-cf78-4156-zzzz-0000000fa29cc",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuZHBxxxxxxxxxxxxjkwMC05MmEwLTRlZDYtOTcxYS1kYzZlZTkzNjU0NzciLCJSxxxxxNwZWNpZmljSWQiOiI5ZmY2ZTY2Ny04YmQyLTQ0NzAtYmRkYy00ZTVhMmUwYmNmOTYifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-17T23:55:43.3304762Z",
    "RecordingLength": 3.34,
    "ChunkCount": 1,
    "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}
{
    "TimeGenerated": "2022-08-17T23:55:56.7664976Z",
    "OperationName": "RecordingSummary",
    "Category": "CallRecordingSummary",
    "CorrelationId": "xxxxxxx-cf78-4156-zzzz-0000000fa29cc",
    "ResultType": "Succeeded",
    "Level": "Informational",
    "RecordingId": "eyJQbGF0Zm9ybUVuxxxxxxiOiI4NDFmNjkwMC1mMjBiLTQzNmQtYTg0Mi1hODY2YzE4M2Y0YTEiLCJSZXNvdXJjZVNwZWNpZmljSWQiOiI2YzRlZDI4NC0wOGQ1LTQxNjEtOTExMy1jYWIxNTc3YjM1ODYifQ",
    "RecordingEndReason": "CallEnded",
    "RecordingStartTime": "2022-08-17T23:55:54.0664976Z",
    "RecordingLength": 2.7,
    "ChunkCount": 1,
    "ContentType": "Audio - Video",
    "ChannelType": "mixed",
    "FormatType": "mp4",
    "AudioChannelsCount": 1
}

ACSCallRecordingIncomingLogs de operações

Aqui estão as propriedades:

Property Description
timeGenerated O carimbo de data/hora (UTC) de quando o log foi gerado.
callConnectionId O ID da conexão ou trecho da chamada, se disponível.
callerIpAddress O endereço IP do chamador, se a operação corresponder a uma chamada de API proveniente de uma entidade com um endereço IP disponível publicamente.
correlationId A ID para eventos correlacionados. Você pode usá-lo para identificar eventos correlacionados entre várias tabelas.
durationMs A duração da operação em milissegundos.
level O nível de gravidade da operação.
operationName A operação associada aos registros de log.
operationVersion A versão da API associada à operação ou versão da operação (se não houver nenhuma versão da API).
resourceId Um identificador exclusivo para o recurso ao qual o registro está associado.
resultSignature O substatus da operação. Se essa operação corresponder a uma chamada de API REST, esse campo será o código de status HTTP da chamada REST correspondente.
resultType O estado da operação.
sdkType O tipo de SDK usado na solicitação.
sdkVersion A versão do SDK.
serverCallId O ID de chamada do servidor.
URI O URI da solicitação.

Eis um exemplo:

"properties"
{  "TimeGenerated": "2023-05-09T15:58:30.100Z",
    "Level": "Informational",
    "CorrelationId": "a999f996-b4e1-xxxx-ac04-a59test87d97",
    "OperationName": "ResumeCallRecording",
    "OperationVersion": "2023-03-06",
    "URI": "https://acsresouce.communication.azure.com/calling/recordings/   eyJQbGF0Zm9ybUVuZHBviI0MjFmMTIwMC04MjhiLTRmZGItOTZjYi0...:resume?api-version=2023-03-06",
    "ResultType": "Succeeded",
    "ResultSignature": 202,
    "DurationMs": 130,
    "CallerIpAddress": "127.0.0.1",
    "CallConnectionId": "d5596715-ab0b-test-8eee-575c250e4234",
    "ServerCallId": "aHR0cHM6Ly9hcGk0vjCCCCCCQd2pRP2k9OTMmZT02Mzc5OTQ3xMDAzNDUwMzg...",
    "SdkVersion": "1.0.0-alpha.20220829.1",
    "SdkType": "dotnet"
}

Próximos passos