You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Graph API等途径获取所有Teams通话与会议的通话质量数据

Microsoft Graph Teams通话记录全量获取问题复盘

背景

此前研究获取企业内部所有Teams音视频通信质量的方案,遇到运行时异常时使用了旧版的视频创建源码,该问题后续可修复,但并非仅收到部分通知而非全量通知的原因。
尝试通过变更通知获取callRecords时仅部分生效,无法收到全量通知,且端点处理程序的运行时长超过半天(印象中为12、14或16小时)。

预期逻辑与缺失数据

按照规则,所有云通信音视频通话都可以通过https://graph.microsoft.com/beta/communications/callRecords/访问,如果CallRecord属于会议类型,会设置joinWebURL字段,可将该字段加入过滤条件以获取对应的会议数据。
目前缺失的数据包括:

  • 所有在线会议数据
  • 部分群组呼叫、直接路由呼叫数据
  • PSTN呼叫尚未测试

已完成配置

订阅配置

创建的订阅配置如下:

{
  "changeType": "created,updated",
  "notificationUrl": "https://a283-178-27-237-107.ngrok.io/api/notifications",
  "resource": "/communications/callRecords",
  "expirationDateTime": "2021-08-29T11:00:00.0000000Z"
}

每次创建或续订订阅时都使用了最长4230分钟的有效期,也尝试过短有效期+定期续订的方案。

应用权限配置

注册应用的权限配置如下:

// add permissions to registered app
CallRecord-PstnCalls.Read.All
CallRecords.Read.All
Calls.AccessMedia.All
Directory.Read.All
OnlineMeetings.Read.All
OnlineMeetings.ReadWrite.All
Reports.Read.All
User.Read.All
(OnlineMeetings相关权限仅短期添加过)

已经通过PowerShell为该应用配置了应用访问策略。

排查过程

后续尝试通过Teams管理中心的通话记录历史获取CallRecords,但是其中的ID仅对创建会议或呼叫的用户部分生效。
排查中收到了Forbidden、无效令牌等报错,判断应用是按委派权限运行,但实际配置的是应用权限,这也能解释无法获取全量CallRecords的原因:如果为拥有应用权限的应用创建订阅,webhook应该在每次通话时被触发。
当时的核心问题为两个:

  1. 为什么无法收到全量通知?
  2. 如何获取适用于应用权限而非委派权限的有效访问令牌?

问题更新

  • 阶段性更新:后续已可收到全量通知,上述两个核心问题不再相关,但使用Postman访问订阅时,无论怎么尝试都无法获取有效令牌(OAuth2认证、从notificationUrl处理程序复制令牌都试过),判断是应用访问策略的影响,寻找对应的解决方案。
  • 2021年9月15日最终更新:CallRecords功能现在运行正常,问题出在Postman环境配置上。按照官方Postman使用步骤操作,使用应用权限创建订阅后,已经可以收到全量通知。目前全量通知获取功能正常,问题关闭。

内容的提问来源于stack exchange,提问作者ingo_ww

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:36:02