使用Microsoft Graph API创建会议后无法获取Teams录制文件的问题
问题描述
调用onlineMeetings/{meeting-id}/recordings接口时返回错误:
No iCalUid found for the meeting. This API is supported only for calendar backed OnlineMeeting.
- 手动创建会议(预约→加入→结束→通过meetingId获取录制)可正常返回结果,因为手动创建的会议会存入日历并生成iCalUid
- 使用Events API创建会议后,调用上述录制接口仍报相同错误
- 使用Graph API v1.0版本,仅通过HTTP测试未使用SDK,其他用户也遇到相同问题
原因分析
v1.0版本的onlineMeetings/{meeting-id}/recordings接口仅支持关联到用户日历的在线会议(即"calendar-backed"会议)。即使通过Events API创建会议,若未正确生成并绑定对应的OnlineMeeting实体与iCalUid,就会触发该错误。
解决步骤
创建Event时内嵌OnlineMeeting配置
创建会议事件时,必须在请求体中包含onlineMeeting对象,指定会议的时间、主题等配置,这样Graph API会自动将会议与日历事件绑定,生成iCalUid。示例请求体:{ "subject": "测试在线会议", "start": { "dateTime": "2024-06-01T10:00:00", "timeZone": "UTC" }, "end": { "dateTime": "2024-06-01T11:00:00", "timeZone": "UTC" }, "location": { "displayName": "在线会议" }, "attendees": [ { "emailAddress": { "address": "attendee@example.com", "name": "参会人" }, "type": "required" } ], "onlineMeeting": { "startDateTime": "2024-06-01T10:00:00Z", "endDateTime": "2024-06-01T11:00:00Z", "subject": "测试在线会议" } }发送POST请求到
/me/events或/users/{user-id}/events,成功创建后,返回的Event对象中会包含onlineMeeting字段,其中的id就是后续调用录制接口需要的meeting-id。使用Event关联的OnlineMeeting ID调用接口
必须使用创建Event返回结果中onlineMeeting.id的值作为参数,调用/onlineMeetings/{meeting-id}/recordings,不能使用其他途径获取的meeting-id。确认会议已启动并完成录制
确保会议已经被至少一名参与者启动,并且确实生成了录制文件后再调用接口,未启动的会议即使关联日历也无法获取录制内容。检查权限范围
调用录制接口需要OnlineMeetingArtifact.Read.All(应用权限)或OnlineMeetingArtifact.Read(委派权限);创建Event需要Calendars.ReadWrite权限,确保权限配置正确。
内容的提问来源于stack exchange,提问作者Harry

