List call records API返回200但无通话记录问题排查咨询
排查Microsoft Graph通话记录API返回200但无数据的可能原因
以下是几种常见的排查方向:
参与者ID匹配问题
即使你确认使用了账户内的正确ID,仍需注意:- 确保使用的是通话记录中参与者的原生ID,而非用户的Azure AD Object ID——两者可能不同;
- 检查ID的大小写,部分Graph API字段对大小写敏感,拼写错误会导致筛选失效;
- 先手动在Teams管理中心确认该参与者最近30天确实存在通话记录,排除“真的无数据”的场景。
筛选语法或API版本问题
- 核对筛选表达式
participants_v2/any(p:p/id eq '821809f5-0000-0000-0000-3b5136c0e777')的拼写,比如是否误写为participants(缺少_v2); - 确认v1.0版本的API仍支持
participants_v2字段的筛选——虽然官方文档标注该字段可用,但偶尔会有端点逻辑调整,可尝试去掉筛选直接请求所有记录,验证API本身能否返回数据。
- 核对筛选表达式
权限配置变更
- 检查调用API的身份主体(应用或用户)是否仍持有
CallRecords.Read.All权限:- 应用权限:确认管理员未撤销或缩小权限范围;
- 委派权限:确认当前用户未被限制访问该参与者的通话数据(比如用户被移出相关权限组)。
- 检查调用API的身份主体(应用或用户)是否仍持有
数据延迟或缓存干扰
- 通话记录同步到Graph API存在延迟(通常几小时),如果是最近的通话,可等待一段时间再重试;
- 排查客户端或代理的缓存问题,尝试添加
Cache-Control: no-cache请求头重新发起调用,避免返回旧的空响应。
租户策略或配置变更
- 检查租户的通话记录保留策略,是否最近缩短了保留周期,导致30天内的记录被清理;
- 确认是否启用了数据隐私隔离设置,限制了API对特定通话记录的访问权限。
筛选逻辑的隐含限制
尝试移除筛选条件,获取全量通话记录后在本地过滤该参与者的记录:- 如果本地能找到对应记录,说明是筛选表达式的问题;
- 如果本地也找不到,说明API本身未返回该类数据,需进一步排查租户配置或数据同步问题。
内容的提问来源于stack exchange,提问作者Joe Ted
相关产品推荐
相关产品推荐

