你当前正在访问 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"
}