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

如何准确获取Microsoft Teams会议(含recurring系列实例)的StartDateTime

问题:精准获取单实例/Recurring会议实例的StartDateTime

背景

  • 已配置Microsoft callTranscript事件通知,完成CAP及应用权限配置
  • 会议录制结束后,会收到Microsoft推送的转录通知,包含UserId、MeetingId、ContentId三个核心字段
  • 当前通过MS Graph API的GET /onlineMeetings/{meetingId}接口获取会议详情

遇到的问题

  • 当会议是recurring series的一个实例时,上述接口返回的StartDateTime和EndDateTime属于系列主会议,而非当前实际召开的实例时间
  • 尝试通过Calendar View接口查询准确时间,但无法可靠关联OnlineMeeting与CalendarView的结果:
    • 解码OnlineMeeting返回的MeetingId后可匹配joinUrl,但CalendarView可能返回多个拥有相同joinUrl的条目
    • 通过会议主题匹配的方式也不可靠(主题可能修改或重复)

解决方案

1. 借助seriesMasterId关联主会议与实例

如果调用GET /onlineMeetings/{meetingId}返回的会议是recurring实例,响应中会包含seriesMasterId字段:

  • 先用该ID调用GET /onlineMeetings/{seriesMasterId}获取系列主会议的信息
  • 再结合转录通知的大致时间(比如会议结束的时间节点),调用Calendar View查询该主会议下的所有实例,筛选出对应时间的条目

2. 扩展Calendar View查询,通过OnlineMeeting ID直接匹配

调用Calendar View时,通过$expand=onlineMeeting参数让每个日历事件携带对应的在线会议信息,再用$filter直接匹配目标MeetingId,精准定位实例:

GET /users/{userId}/calendarView?startDateTime={起始时间范围}&endDateTime={结束时间范围}&$expand=onlineMeeting&$filter=onlineMeeting/id eq '{你的MeetingId}'
  • 时间范围建议设置为会议结束前后1-2天,确保覆盖目标实例的时间区间
  • 返回的日历事件就是对应会议实例的记录,直接取StartDateTime和EndDateTime即可

3. 检查OnlineMeeting接口的实例时间返回

直接调用GET /onlineMeetings/{meetingId}?$select=startDateTime,endDateTime,seriesMasterId,isOnlineMeeting,recurrence,如果该MeetingId本身就是实例ID,部分版本的Graph API会直接返回该实例的准确时间。可通过响应中的recurrence字段判断是否为recurring实例,进一步验证时间有效性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:12:19