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

Azure 通信服务通话自动化日志

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

先决条件

Azure 通信服务通过 Azure Monitor 日志Azure Monitor 指标提供监视和分析功能。 每个 Azure 资源都需有自身的诊断设置,其设置定义了以下条件:

  • 发送到设置中所定义目标的日志和指标数据的类别。 可用类别因资源类型而异。

  • 要将日志发送到的一个或多个目标。 当前目标包括 Log Analytics 工作区、Azure 事件中心和 Azure 存储。

    一个诊断设置只能为每个目标定义一种类型。 若要将数据发送到多个目标类型(例如,两个 Log Analytics 工作区),请创建多个设置。 每个资源最多可以有五个诊断设置。

重要

必须在 Azure Monitor 中启用诊断设置,才能将调查的日志数据发送到 Log Analytics 工作区、事件中心或 Azure 存储帐户,以便接收和分析调查数据。 如果不将通话自动化数据发送到其中一个选项,调查数据就不会存储,而且将丢失。

下面说明了如何配置 Azure Monitor 资源,以开始为通信服务实例创建日志和指标。 有关对所有 Azure 资源使用诊断设置的详细文档,请参阅启用诊断设置中的日志记录

在诊断设置名称下,选择“通话自动化操作日志”和“通话自动化事件摘要日志”,启用通话自动化的日志

通话自动化的诊断设置屏幕截图。

资源日志类别

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

  • 使用情况日志:提供与每个计费服务产品相关联的使用情况数据。
  • 通话自动化操作日志:提供有关通话自动化 API 请求的操作信息。 可以使用这些日志来标识故障点,并查询通话中发出的所有请求(通过使用相关 ID 或服务器通话 ID)。
  • 通话自动化媒体摘要日志:提供有关媒体操作结果的信息。 当你使用通话自动化 API 发起媒体请求时,这些日志会以异步方式发送给你。 你可以使用这些日志来帮助识别故障点和用户与应用程序交互方式的可能模式。

使用情况日志架构

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

通话自动化操作日志

properties 说明
TimeGenerated 生成日志的时间戳 (UTC)。
OperationName 与日志记录相关联的操作。
CorrelationID 用于标识通话并关联特定通话事件的标识符。
OperationVersion 如果通过 API 执行 operationName 操作,则 api-version 版本与该操作关联。 如果没有任何 API 对应于此操作,则此版本表示操作的版本,以防与该操作关联的属性将来发生更改。
Category 事件的日志类别。 类别是可以在资源上启用或禁用日志的粒度。 出现在事件的 properties blob 中的属性与日志类别和资源类型中的属性相同。
ResultType 操作的状态。
ResultSignature 操作的子状态。 如果该操作对应于 REST API 调用,则此字段为相应 REST 调用的 HTTP 状态代码。
DurationMs 操作持续时间,以毫秒为单位。
CallerIpAddress 调用方 IP 地址,如果该操作对应于来自具有公开 IP 地址的实体的 API 调用。
Level 事件的严重级别。
URI 请求的 URI。
CallConnectionId 表示通话连接的 ID(如果可用)。 此 ID 对于每个参与者来说都不同,可用于识别他们与通话的连接。
ServerCallId 用于标识通话的唯一 ID。
SDKVersion 请求中使用的 SDK 版本。
SDKType 请求中使用的 SDK 类型。
ParticipantId 用于标识发出请求的通话参与者的 ID。
SubOperationName 用于标识媒体操作的子类型(播放或识别)的名称。
operationID 用于关联异步事件的 ID。

下面是通话自动化操作日志的示例:

[
{
"TimeGenerated [UTC]": "5/25/2023, 5:43:25.746 PM",
"Level": "Informational",
"CorrelationId": "e2a97d52-0cbb-4adf-8c4b-e10f791fb764",
"OperationName": "Play",
"OperationVersion": "3/6/23",
"URI": "ccts-media-synthetics-prod.communication.azure.com",
"ResultType": "Succeeded",
"ResultSignature": "202",
"DurationMs": "82",
"CallerIpAddress": "40.88.50.228",
"CallConnectionId": "401f3500-fcb6-4b84-927e-81cd6372560b",
"ServerCallId": "aHR0cHM6Ly9hcGkuZmxpZ2h0cHJveHkuc2t5cGUuY29tL2FwaS92Mi9jcC9jb252LXVzZWEyLTAxLmNvbnYuc2t5cGUuY29tL2NvbnYvZzRoWlVoS1ZEVUtma19HenRDZ1JTQT9pPTEyJmU9NjM4MjA1NDc4MDg5MzEzMjIz",
"SdkVersion": "",
"SdkType": "unknown",
"SubOperationName": "File",
"OperationId": "5fab0875-3211-4879-8051-c688d0854c4d",
}

通话自动化媒体摘要日志

properties 说明
TimeGenerated 事件的时间戳 (UTC)。
level 事件的严重级别。 必须是 InformationalWarningErrorCritical 之一。 
resourceId 发出事件的资源的 ID。
durationMs 操作持续时间,以毫秒为单位。
callerIpAddress
correlationId Skype 链 ID。 
operationName 此事件表示的操作的名称。
operationVersion
resultType 事件的状态。 典型值包括 CompletedCanceledFailed
resultSignature 操作的子状态。 如果该操作对应于 REST API 调用,则此字段为相应 REST 调用的 HTTP 状态代码。
operationId 用于关联异步事件的操作 ID。
recognizePromptSubOperationName 操作的子类型。 可能的值包括 FileTextToSpeechSSML
playInLoop 如果为播放操作请求了循环,则为 True。 否则为 False
playToParticipant 如果播放操作有目标,则为 True。 如果是全员播放操作,则为 False
interrupted 如果提示中断,则为 True。 否则为 False
resultCode 操作的结果代码。
resultSubcode 操作的结果子代码。
resultMessage 操作的结果消息。

下面是通话自动化媒体摘要日志的示例:

[
{
"TimeGenerated [UTC]": "5/24/2023, 7:57:40.480 PM",
"Level": "Informational",
"CorrelationId": "d149d528-a392-404c-8fcd-69087e9d0802",
"ResultType": "Completed",
"OperationName": "Play",
"OperationId": "7bef24d5-eb95-4ee6-bbab-0b7d45d91288",
"PlayInLoop": "FALSE",
"PlayToParticipant": "TRUE",
"PlayInterrupted": "FALSE",
"RecognizePromptSubOperationName": "",
"ResultCode": "200",
"ResultSubcode": "0",
"ResultMessage": "Action completed successfully."
}

后续步骤