如何通过Office Graph API实现会议室资源日程的排他预订?
用Office Graph API防止会议室重复预订
可以实现,核心要从会议室资源的预订配置和会议创建时的API调用逻辑两方面入手:
1. 先配置会议室邮箱的冲突拒绝规则
默认情况下部分会议室允许重复预订,你需要先通过Graph API修改资源邮箱的预订设置,强制启用冲突检查:
- 调用
PATCH /users/{room-email}/settings接口,请求体设置如下:
{ "bookingOptions": { "allowConflicts": false, "conflictResolutionPolicy": "none", // 拒绝所有冲突请求 "maximumDurationInMinutes": 1440 // 可选,设置单次预订最长时长 } }
这个配置会让会议室自动拒绝重叠时间段的预订请求。
2. 创建会议时的正确调用方式
在创建会议(POST /me/events或POST /users/{user-id}/events)时,注意两点:
- 确保请求参数中包含
sendUpdates: "sendToAllAndSaveCopy",这样会议室邮箱会收到预订请求并执行冲突检查; - 可选但推荐:创建前先调用
GET /users/{room-email}/calendar/calendarView查询目标时间段内的已有事件,自己先做一次冲突校验,示例请求:
如果返回已有事件,直接提示用户时间段冲突,避免不必要的API调用。GET /users/meetingroom@mytenant.com/calendar/calendarView?startDateTime=2024-05-20T09:00:00Z&endDateTime=2024-05-20T10:00:00Z
3. 处理冲突响应
当会议室检测到冲突时,Graph API会返回400错误,响应体中包含类似以下的冲突提示:
{ "error": { "code": "ErrorConflict", "message": "The meeting request conflicts with another meeting." } }
你需要捕获这个错误,提示用户会议室已被占用。
你之前的问题在于只把会议室作为资源添加到会议中,但没有配置会议室的冲突拒绝规则,所以系统允许重复预订。按上面的步骤配置后,就能确保会议室不会被重复占用。
内容的提问来源于stack exchange,提问作者vilmarci
相关产品推荐
相关产品推荐

