Microsoft Graph 调用记录 API 常见问题解答

本主题提供有关 Microsoft Graph 中通话记录 API 的常见问题解答。

什么是 Microsoft Graph 调用记录 API?

Microsoft Graph 通话记录 API 为使用 Microsoft Teams 或 Skype for Business 时在组织内发生的通话和联机会议提供使用情况和诊断见解。 组织(也称为“租户”)可以使用呼叫记录 API 订阅、列出、按呼叫 ID 检索呼叫记录,以及查找参与者的呼叫。 有关详细信息,请参阅 使用 Microsoft Graph 中的调用记录 API

使用呼叫记录 API 需要哪个权限?

应用程序需要 CallRecords.Read.All 权限才能访问 Microsoft Graph 中的呼叫记录。 管理员必须向应用程序授予此权限。 有关详细信息,请参阅 Microsoft Graph 权限参考

是否可以将委托的权限与呼叫记录 API 一起使用?

否,调用记录 API 不支持委派权限。

为什么不能将委托的权限与调用记录 API 一起使用?

无法使用委托权限,因为无法将 CallRecords.Read.All 权限限制为特定呼叫或用户。 应用程序权限是在组织级别而不是单个用户级别授予的。

如何实现使用呼叫记录 API 请求呼叫记录?

若要请求呼叫记录,需要向/communications/callRecords/{id}终结点发出GET请求,其中 {id} 是呼叫的唯一标识符。 请确保具有 CallRecords.Read.All 权限,并包含具有有效持有者令牌的 Authorization 标头。 有关详细信息,请参阅 获取 callRecord 文档

在哪里可以找到组织中发生的呼叫的呼叫 ID?

可通过以下方式查找和收集呼叫 ID:

  • 订阅通知:每当创建新的呼叫记录时,订阅 更改通知源 并接收包含呼叫 ID 的通知。
  • 列出呼叫记录:通过从 List callRecords API 请求来获取呼叫 ID 的列表
  • 手动搜索:如果你有权访问适用于 Microsoft Teams 的 Teams 管理员 中心的呼叫分析,则可以在用户历史记录中手动搜索呼叫 ID。 但是,没有自动化系统可用于从呼叫分析检索所有呼叫 ID。
  • 使用 callChainId::调用完成后,使用callChainId获取调用 API 中的 查找呼叫 ID。 当以编程方式创建调用并且你正在使用 调用资源类型时,请使用此方法。 此外, callChainId 在某些情况下(例如转移呼叫)中,由于体系结构细节,与呼叫记录 ID 不同。 因此,请尽可能使用此列表中的其他方法。

通话记录何时可用?

通常生成呼叫记录的第一个版本,并在通话结束后的 15 分钟内发送通知。 但是,服务可能需要长达 60 分钟才能使呼叫记录可用。 有关详细信息,请参阅 延迟 页。

呼叫记录将保留多长时间?

通话记录将在通话结束后保留 30 天。

是否可以检索超过 30 天的通话记录?

否,调用记录 API 不会返回超过 30 天的调用记录。 对此类记录的请求会导致 404 Not Found 错误响应。

为什么我的第一个通话记录通知被延迟?

通话记录通知可能会延迟,因为服务可能需要长达 60 分钟才能使 第一 个版本的呼叫记录可用。 如果在交付第一个呼叫记录版本时遇到更长的延迟,检查 Teams 管理员门户的“运行状况”选项卡中的呼叫记录 API 团队报告的中断。 此外,还可以向呼叫记录 API 团队开具 支持票证

为什么我的通话记录的后续版本会延迟?

通话记录的后续版本可以在初始延迟 60 分钟后传递。 这意味着,虽然第一个版本在 60 分钟内可用,但由于来自客户端的遥测延迟和其他因素,对呼叫记录的后续更新可能会稍后到达。

为什么通话记录缺少字段?

由于来自客户端的遥测延迟,呼叫记录可能缺少字段。 当新的遥测数据可用时,系统将生成一条包含更新信息的新呼叫记录,递增 version 属性值,并将更新后的呼叫记录发送给你。 如果呼叫记录缺少属性,请等待下一个呼叫记录版本。

但是,请务必注意,根据设计,某些字段可能保持为空,或者因为客户端遥测从未到达,例如媒体流值。

如果缺少关键字段或以前提供的字段,请向呼叫记录 API 团队开具 支持票证

如何列出参加通话的所有参与者?

可以使用以下方法列出所有参加呼叫的参与者:

  1. 列出participants_v2 API

    使用 列表participants_v2 API 收集请求的呼叫 ID 的参与者的完整列表。

  2. 在 callRecords 对象上使用 $expand OData 查询参数展开 participants_v2 属性

    可以调用 GET communications/callRecords/{id}?$expand=participants_v2 来检索高级呼叫详细信息以及参与者列表。

  3. 生成自定义参与者列表

    若要查看所有参与者,请实现自定义解决方案以根据通话记录数据生成参与者列表:

    1. 调用 Get callRecord API 并展开 sessions 属性: GET /communications/callRecords/{id}?$expand=sessions
    2. 对于对等 (P2P) 调用,请从接收sessions列表中的每个session调用中读取 callercallee 属性。 对于会议呼叫,只读 属性 caller
    3. 基于 caller 终结点 标识生成自定义参与者列表。 对于 P2P 调用,还包括 callee 终结点 标识id收集每个参与者所需的 、 displayName和其他属性。

为什么我看不到在调用列表participants_v2 API 时参加了通话的所有参与者?

你可能看不到所有参与者,因为 列表participants_v2 API 支持分页,将响应中的参与者数限制为每页 130 个。 如果通话用户超过 130 个,则第一个呼叫记录响应包含 130 个参与者以及一个 @odata.nextLink 属性。 此属性包括用于调用 API 和接收下一组参与者的 URL。 继续此过程,直到下一个链接为空,这表示不再有要检索的参与者。

为什么为一条通话记录返回重复会话?

通话记录 会话 唯一地表示对等呼叫中的单个用户通信,或者组呼叫或会议中的单个用户服务通信。 但是,在某些通话方案中,单个用户服务通信可能涉及单个会话中的多个服务标识,例如自动助理和呼叫队列之间的虚拟传输。 在这些情况下,会话 ID 可能会重复一次或多次,以便正确表示通信所涉及的每个标识以及相应的通信持续时间。

为什么会收到 404 未找到错误?

以下是可能会遇到错误的一 404 Not Found 些原因:

  • 最近调用:如果呼叫是在最近 60 分钟内进行的,则可能尚未生成呼叫记录。 呼叫结束后等待 60 分钟,然后重试。
  • 旧调用:如果调用时间超过 30 天,则调用记录 API 会根据设计返回错误 404 Not Found
  • 其他问题:如果这两个原因都不适用,检查 Teams 管理员门户的“运行状况”选项卡中调用记录 API 团队报告的任何中断。 此外,还可以向呼叫记录 API 团队开具 支持票证 以获取帮助。