你当前正在访问 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 执行 operationName 操作,则 api-version 值与该操作关联。 如果没有任何 API 对应于此操作,则此版本表示操作的版本,以防与该操作关联的属性将来发生更改。 |
category |
事件的日志类别。 类别是可以在资源上启用或禁用日志的粒度。 出现在事件的 properties blob 中的属性与日志类别和资源类型中的属性相同。 |
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 地址,如果该操作对应于来自具有公开 IP 地址的实体的 API 调用。 |
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"
}