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

使用Microsoft Graph创建Office 365日历事件时会议室响应状态查询问题

关于Microsoft Graph预订会议室后获取接受状态的解决方案

嘿,我之前做Office 365会议室预订功能的时候也碰到过这个问题,来给你详细说说怎么处理~

首先得明确一点:当你调用user_post_events接口,把会议室作为resource类型的参会者添加到事件中时,这个操作本质是向会议室邮箱发送了一个预订请求,而不是直接完成预订。所以接口返回的即时结果里不会包含会议室是否接受的状态——因为这个状态需要会议室邮箱的规则(自动接受/审批流程)处理后才会生成。

那怎么获取会议室的最终响应呢?有两个常用的方法:

方法一:订阅事件变更通知

你可以通过Microsoft Graph的订阅功能,监听目标事件的状态变化。当会议室邮箱处理了你的预订请求(不管是自动接受还是人工审批通过/拒绝),事件的参会者列表里对应会议室的responseStatus字段会更新。

订阅的大致思路是:

  • 调用POST /subscriptions创建订阅,指定要监听的资源路径(比如/me/events/{event-id}),以及你的通知回调地址
  • 当会议室的响应状态变化时,Graph会向你的回调地址发送通知,你再根据通知里的事件ID去拉取最新的事件详情,就能看到会议室的responseStatus.status(可能是accepted、declined、tentativelyAccepted)

这种方法适合实时性要求高的场景,不用一直轮询。

方法二:主动轮询事件详情

如果你的场景对实时性要求没那么高,或者不想处理回调逻辑,也可以在创建事件后,定期调用查询接口获取事件的最新状态:

  • 调用GET /me/events/{event-id}(或者GET /users/{user-id}/events/{event-id},如果是操作其他用户的事件)
  • 在返回的attendees数组里找到类型为resource的那条记录,查看responseStatus.status字段的值:
    • none:会议室还没处理请求
    • accepted:预订成功
    • declined:预订被拒绝(可能是时间冲突)
    • tentativelyAccepted:暂定接受(部分会议室可能有这个状态)

另外给你提个小建议:你提供的请求示例里缺少start字段和subject字段,这两个都是创建事件的必填项,补全后接口才能正常调用,比如完整的请求体应该是这样的:

{
  "subject": "部门周会预订",
  "start": {
    "dateTime": "2018-05-11T11:10:10",
    "timeZone": "Europe/London"
  },
  "end": {
    "dateTime": "2018-05-11T12:10:10",
    "timeZone": "Europe/London"
  },
  "attendees": [
    {
      "type": "resource",
      "emailAddress": {
        "address": "berlin@yourtenant.onmicrosoft.com"
      }
    }
  ]
}

最后补充一句:如果你的企业租户设置了会议室自动接受请求(大部分公司都是这么配置的),那通常几秒内状态就会更新,轮询个两三次基本就能拿到结果;如果是需要人工审批的特殊会议室,那可能就得等管理员处理后才能拿到状态啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:13