Partage via


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 configurez ces fonctionnalités via le Portail Azure.

Le contenu de cet article fait référence aux journaux activés via Azure Monitor (voir également FAQ). Pour activer ces journaux d’activité 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 : fournissez des données d’utilisation associées à chaque offre de service facturée.
  • Journaux récapitulatives de l’enregistrement des appels : fournissez des informations récapitulatives pour les enregistrements d’appels, par exemple :
    • Durée de l’appel.
    • Contenu multimédia (par exemple, audio/vidéo, non mélangé ou transcription).
    • Types de format utilisés pour l’enregistrement (par exemple, WAV ou MP4).
    • Raison pour laquelle l’enregistrement s’est terminé.
  • Enregistrement des journaux des opérations entrantes : fournissez des informations sur les demandes entrantes pour les opérations d’enregistrement des appels. Chaque entrée correspond au résultat d’un appel aux API d’enregistrement d’appel, 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 se terminer en raison d’une défaillance système.

Les journaux de synthèse sont publiés une fois qu’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 le temps d’ingestion des données de 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, au cas où les propriétés associées à l’opération changent à l’avenir.
category Catégorie de journal de l’événement. La catégorie est la granularité à laquelle vous pouvez activer ou désactiver les journaux d’activité sur une ressource. Les propriétés qui apparaissent dans l’objet properties blob d’un événement sont identiques dans une catégorie de journal et 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 applicables aux différents modes de Communication Services.
recordID ID unique d’un enregistrement d’utilisation.
usageType Mode d’utilisation (par exemple, Conversation, PSTN ou NAT).
unitType Type d’unité sur lequel l’utilisation est basée sur 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 récapitulative de l’enregistrement des appels

Nom de la propriété Type de données Description
timeGenerated Date et heure Horodatage (UTC) du moment où le journal a été généré.
operationName Chaîne Opération associée à un enregistrement de journal.
correlationId Chaîne ID utilisé pour mettre en corrélation 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 journaux avec la même catégorie de journal et le même type de ressource ont les mêmes champs de propriété.
resultType Chaîne L’état de l’opération.
level Chaîne Le niveau de gravité de l’opération.
chunkCount Entier 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 et heure Heure à laquelle l’enregistrement a démarré.
contentType Chaîne Contenu de l’enregistrement, tel que l’audio uniquement, l’audio/vidéo ou la transcription.
formatType Chaîne Format de fichier de l’enregistrement.
recordingLength Double Durée de l’enregistrement en secondes.
audioChannelsCount Entier Nombre total de canaux audio dans l’enregistrement.
recordingEndReason Chaîne Raison pour laquelle l’enregistrement s’est terminé.

Appeler l’enregistrement et les exemples de données

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

Un appel peut avoir un enregistrement ou plusieurs enregistrements, selon le nombre de fois qu’un événement d’enregistrement est déclenché.

Par exemple, si un agent démarre un appel sortant sur une ligne enregistrée et que l’appel tombe en raison d’un signal réseau médiocre, callID a une recordingID valeur. Si l’agent appelle le client, le système génère une nouvelle callID instance et une nouvelle recordingID valeur.

Exemple : Appeler l’enregistrement pour un appel à 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 arrête et redémarre l’enregistrement plusieurs fois pendant que l’appel est toujours activé, callID aura de nombreuses recordingID valeurs. Le nombre de valeurs dépend du nombre de fois où les événements d’enregistrement ont été déclenchés.

Exemple : Appeler l’enregistrement pour un appel à de nombreux 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) du moment où le journal a été généré.
callConnectionId ID de la connexion ou de la jambe d’appel, le cas échéant.
callerIpAddress Adresse IP de l’appelant, si l’opération correspond à un appel d’API provenant d’une entité avec une adresse IP 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 Opération associée aux enregistrements de journal.
operationVersion Version de l’API associée à l’opération ou à la version de l’opération (s’il n’existe aucune version de l’API).
resourceId Identificateur unique de la ressource à laquelle l’enregistrement est associé.
resultSignature 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 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": "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"
}

Étapes suivantes