如何通过Microsoft Graph API获取指定时间段内会议室的忙闲状态?
获取会议室忙闲状态的Microsoft Graph API方案
当然有!Microsoft Graph API完全支持获取会议室的忙闲状态,刚好能匹配你“传入起止时间,批量获取所有会议室忙闲列表”的需求。下面是具体的实现思路和步骤:
核心API:getSchedule
你需要用到的是**getSchedule**接口,它可以查询指定参与者(包括会议室邮箱)在指定时间段内的忙闲状态。
前提准备
通过你已经用过的findRooms API,你可以获取到每个会议室的emailAddress字段——这个就是会议室的邮箱ID,是调用getSchedule的关键参数。
调用示例
以下是一个典型的POST请求示例,用于批量查询多个会议室的忙闲状态:
POST https://graph.microsoft.com/v1.0/me/calendar/getSchedule Content-Type: application/json { "schedules": [ "conf-room-a@contoso.com", "conf-room-b@contoso.com", "conf-room-c@contoso.com" ], "startTime": { "dateTime": "2024-05-20T09:00:00", "timeZone": "Pacific Standard Time" }, "endTime": { "dateTime": "2024-05-20T17:00:00", "timeZone": "Pacific Standard Time" }, "availabilityViewInterval": 60 }
参数说明
schedules:填入从findRooms获取到的所有会议室邮箱地址数组startTime/endTime:指定查询的起止时间,必须包含时区信息,避免出现时间偏差availabilityViewInterval:可选参数,指定忙闲状态的时间间隔(单位分钟,默认30),比如设为60就会按小时返回状态
权限要求
根据你的调用场景,需要对应的权限:
- 委派权限(Delegated):
Calendars.Read或Calendars.ReadWrite(适用于用户登录的交互场景) - 应用权限(Application):
Calendars.Read或Calendars.ReadWrite(适用于后台服务场景,需要管理员提前同意权限)
注意事项
- 如果你的会议室数量较多,建议分批次调用
getSchedule,避免超过API的请求限制(单请求最多支持查询100个参与者) - 确保应用有权限访问目标会议室的日历信息,部分组织可能会限制外部应用访问会议室日历
- 返回结果中,每个会议室的
availabilityView字段会用字符表示对应时间段的状态(比如F代表繁忙,F代表空闲,T代表暂定等),同时也会返回具体的事件详情
内容的提问来源于stack exchange,提问作者atiwari
相关产品推荐
相关产品推荐

