Journaux d’enregistrement des appels Azure Communication Services
Azure Communication Services offre des fonctionnalités de journalisation que vous pouvez utiliser pour superviser et déboguer votre solution Communication Services. Vous pouvez configurer ces fonctionnalités dans le portail Azure.
Le contenu de cet article fait référence aux journaux activés par le biais d’Azure Monitor (voir aussi le FAQ). Pour activer ces journaux pour Communication Services, consultez Activer la journalisation dans les paramètres de diagnostic.
Catégories de journaux de ressources
Communication Services propose les types de journaux suivants que vous pouvez activer :
- Journaux d’utilisation : Ils fournissent des données d’utilisation associées à chaque offre de service facturée.
- Journaux de synthèse des enregistrements d’appels: Ils fournissent des informations récapitulatives sur les enregistrements d’appels, comme par exemple :
- La durée des appels.
- Les contenus multimédias (par exemple, l’audio/vidéo, non mélangé, ou la transcription).
- Le type de format utilisé pour l’enregistrement (par exemple, WAV ou MP4).
- La raison de l’arrêt de l’enregistrement.
- Journaux des opérations d’enregistrement entrantes : Ils fournissent des informations sur les requêtes entrantes pour les opérations d’enregistrement d’appels. Chaque entrée correspond au résultat d’un appel aux API d’enregistrement des appels, telles que StartRecording, StopRecording, PauseRecording et ResumeRecording.
Un fichier d’enregistrement est généré à la fin d’un appel ou d’une réunion. Un utilisateur ou une application (bot) peut démarrer et arrêter l’enregistrement. L’enregistrement peut également être interrompu en raison d’une défaillance du système.
Les journaux de synthèse sont publiés lorsqu’un enregistrement est prêt à être téléchargé. Les journaux sont publiés dans le temps de latence standard pour les journaux de ressources Azure Monitor. Consultez Temps d’ingestion des données du journal dans Azure Monitor.
Schéma du journal d’utilisation
Propriété | Description |
---|---|
timestamp |
Horodatage (UTC) de la génération du journal. |
operationName |
Opération associée à l’enregistrement de journal. |
operationVersion |
Valeur api-version associée à l’opération, si l’opération operationName a été effectuée via une API. Si aucune API ne correspond à cette opération, la version représente la version de l’opération si les propriétés associées à l’opération viennent à changer. |
category |
Catégorie de journal de l’événement. La catégorie est la précision avec laquelle vous pouvez activer ou désactiver les journaux sur une ressource. Les propriétés qui apparaissent dans le blob properties d’un événement sont les mêmes au sein d’une catégorie de journal et d’un type de ressource. |
correlationID |
ID des événements corrélés. Vous pouvez l’utiliser pour identifier les événements corrélés entre plusieurs tables. |
Properties |
Autres données qui sont applicables aux différents modes de Communication Services. |
recordID |
ID unique d’un enregistrement d’utilisation. |
usageType |
Mode d’utilisation (par exemple, Conversation, RTC ou NAT). |
unitType |
Type d’unité sur lequel l’utilisation est basée pour un mode d’utilisation (par exemple, minutes, mégaoctets ou messages). |
quantity |
Nombre d’unités utilisées ou consommées pour cet enregistrement. |
Schéma du journal de synthèse de l’enregistrement des appels
Nom de la propriété | Type de données | Description |
---|---|---|
timeGenerated |
Date/Heure | Horodatage (UTC) de la génération du journal. |
operationName |
Chaîne | Opération associée à l’enregistrement du journal. |
correlationId |
Chaîne | ID utilisé pour corréler les événements entre les tables. |
recordingID |
Chaîne | ID de l’enregistrement auquel ce journal fait référence. |
category |
Chaîne | Catégorie de journal de l’événement. Les enregistrements avec la même catégorie d’enregistrement et le même type de ressource ont des champs de propriétés identiques. |
resultType |
Chaîne | L’état de l’opération. |
level |
Chaîne | Le niveau de gravité de l’opération. |
chunkCount |
Integer | Nombre total de blocs créés pour l’enregistrement. |
channelType |
Chaîne | Type de canal de l’enregistrement, tel que mixte ou non mélangé. |
recordingStartTime |
Date/Heure | Heure à laquelle l’enregistrement a commencé. |
contentType |
Chaîne | Contenu de l’enregistrement, par exemple audio uniquement, audio/vidéo ou transcription. |
formatType |
Chaîne | Format de fichier de l’enregistrement. |
recordingLength |
Double | Durée de l’enregistrement en secondes. |
audioChannelsCount |
Integer | Nombre total de canaux audio dans l’enregistrement. |
recordingEndReason |
Chaîne | Raison de l’arrêt de l’enregistrement. |
Enregistrement des appels et exemples de données
"operationName": "Call Recording Summary",
"operationVersion": "1.0",
"category": "RecordingSummary",
Un appel peut avoir un ou plusieurs enregistrements, selon le nombre de fois qu’un événement d’enregistrement est déclenché.
Par exemple, si un agent commence un appel sortant sur une ligne enregistrée et que l’appel est interrompu en raison d’un mauvais signal réseau, callID
aura une valeur recordingID
. Si l’agent rappelle le client, le système génère une nouvelle instance callID
ainsi qu’une nouvelle valeur recordingID
.
Exemple : Enregistrement d’un appel pour un enregistrement
"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
}
Si l’agent démarre un enregistrement, puis l’arrête et le redémarre plusieurs fois alors que l’appel est toujours en cours, callID
aura de nombreuses valeurs recordingID
. Le nombre de valeurs dépend du nombre de fois où les événements d’enregistrement ont été déclenchés.
Exemple : Enregistrement d’un appel vers plusieurs enregistrements
{
"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
}
Journaux ACSCallRecordingIncomingOperations
Voici les propriétés :
Propriété | Description |
---|---|
timeGenerated |
Horodatage (UTC) de la génération du journal. |
callConnectionId |
L’ID de la connexion ou du segment d’appel, le cas échéant. |
callerIpAddress |
L’adresse IP de l’appelant, si l’opération correspond à un appel API provenant d’une entité dont l’adresse IP est disponible publiquement. |
correlationId |
ID des événements corrélés. Vous pouvez l’utiliser pour identifier les événements corrélés entre plusieurs tables. |
durationMs |
Durée de l’opération en millisecondes. |
level |
Le niveau de gravité de l’opération. |
operationName |
L’opération associée aux enregistrements du journal. |
operationVersion |
La version de l’API associée à l’opération ou la version de l’opération (s’il n’y a pas de version d’API). |
resourceId |
Un identificateur unique de la ressource à laquelle l’enregistrement est associé. |
resultSignature |
Le sous-état de l’opération. Si cette opération correspond à un appel d’API REST, ce champ est le code d’état HTTP de l’appel REST correspondant. |
resultType |
État de l'opération. |
sdkType |
Type de SDK utilisé dans la demande. |
sdkVersion |
Version du Kit de développement logiciel (SDK). |
serverCallId |
L’ID d’appel du serveur. |
URI |
URI de la requête. |
Voici un exemple :
"properties"
{ "TimeGenerated": "2023-05-09T15:58:30.100Z",
"Level": "Informational",
"CorrelationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"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"
}
Étapes suivantes
- Obtenir des Insights l’enregistrement des appel.
- En savoir plus sur l’Enregistrement des appels.