你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 通信服务呼叫录制日志

Azure 通信服务提供的日志记录功能可用于监视和调试通信服务解决方案。 可以通过Azure 门户配置这些功能。

本文中的内容是指通过 Azure Monitor 启用的日志(另 请参阅常见问题解答)。 若要为通信服务启用这些日志,请参阅 在诊断设置中启用日志记录。

资源日志类别

通信服务提供以下类型的日志,你可以启用:

  • 使用情况日志:提供与每个计费服务产品/服务关联的使用情况数据。
  • 呼叫录制摘要日志:提供通话记录的摘要信息,例如:
    • 呼叫持续时间。
    • 媒体内容(例如音频/视频、未对听或听录)。
    • 用于录制的格式类型(例如 WAV 或 MP4)。
    • 录音结束的原因。
  • 录制传入操作日志:提供有关呼叫录制操作传入请求的信息。 每个条目对应于调用录制 API 的结果,例如 StartRecording、StopRecording、PauseRecording 和 ResumeRecording。

录制文件是在通话或会议结束时生成的。 用户或应用(机器人)都可以启动和停止录制。 录制也可能因为系统故障而结束。

记录准备好下载后,将发布摘要日志。 日志在 Azure Monitor 资源日志的标准延迟时间内发布。 请参阅 Azure Monitor 中的日志数据引入时间。

使用情况日志架构

properties 说明
timestamp 生成日志的时间戳 (UTC)。
operationName 与日志记录相关联的操作。
operationVersion api-version如果通过 API 执行了操作,则operationName与操作关联的值。 如果没有 API 对应于此操作,则版本表示操作的版本,以防将来与操作关联的属性发生更改。
category 事件的日志类别。 类别是可以在资源上启用或禁用日志的粒度。 事件 blob 中显示的 properties 属性在日志类别和资源类型中是相同的。
correlationID 关联事件的 ID。 可以使用它来标识多个表之间的关联事件。
Properties 适用于各种通信服务模式的其他数据。
recordID 使用情况记录的唯一 ID。
usageType 使用模式(例如聊天、PSTN 或 NAT)。
unitType 使用单位的类型基于使用模式(例如分钟数、兆字节或消息)。
quantity 此记录使用或消耗的单位数。

呼叫录制摘要日志架构

属性名称 数据类型 描述
timeGenerated DateTime 生成日志时的时间戳(UTC)。
operationName 字符串 与日志记录关联的操作。
correlationId 字符串 用于关联表之间的事件的 ID。
recordingID 字符串 此日志引用的录制的 ID。
category 字符串 事件的日志类别。 具有相同日志类别和资源类型的日志具有相同的属性字段。
resultType 字符串 操作状态。
level 字符串 操作的严重性级别。
chunkCount Integer 为录制创建的区块总数。
channelType 字符串 录制的通道类型,如混合或未对等。
recordingStartTime DateTime 录制开始的时间。
contentType 字符串 录制的内容,如仅音频、音频/视频或听录。
formatType 字符串 录制的文件格式。
recordingLength 双精度 录制的持续时间(以秒为单位)。
audioChannelsCount Integer 录制中的音频通道总数。
recordingEndReason 字符串 录音结束的原因。

呼叫录制和示例数据

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

呼叫可以有一个录制或多个录制,具体取决于触发录制事件的次数。

例如,如果代理在录制的线路上启动出站呼叫,并且由于网络信号不佳而断开呼叫, callID 将具有一个 recordingID 值。 如果代理调用客户,系统将生成一个新 callID 实例和一个新 recordingID 值。

示例:呼叫录制一次呼叫到一个录制

"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
}

如果代理启动录制,然后在呼叫仍处于打开状态时多次停止并重新启动录制, callID 将具有许多 recordingID 值。 值数取决于触发录制事件的次数。

示例:对多个录制的一次呼叫呼叫录制


{   
 "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
}

ACSCallRecordingIncomingOperations 日志

下面是属性:

properties 说明
timeGenerated 生成日志时的时间戳(UTC)。
callConnectionId 呼叫连接或腿部的 ID(如果可用)。
callerIpAddress 如果操作对应于来自具有公开 IP 地址的实体的 API 调用,则调用方 IP 地址。
correlationId 关联事件的 ID。 可以使用它来标识多个表之间的关联事件。
durationMs 操作持续时间,以毫秒为单位。
level 操作的严重性级别。
operationName 与日志记录关联的操作。
operationVersion 与操作或操作版本关联的 API 版本(如果没有 API 版本)。
resourceId 与记录关联的资源的唯一标识符。
resultSignature 操作的子状态。 如果该操作对应于 REST API 调用,则此字段为相应 REST 调用的 HTTP 状态代码。
resultType 操作的状态。
sdkType 请求中使用的 SDK 类型。
sdkVersion SDK 版本。
serverCallId 服务器调用 ID。
URI 请求的 URI。

下面是一个示例:

"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"
}

后续步骤