我已将ReadWrite的应用程序管理员权限委派给所有用户日历。我正在使用Graph API(测试版)。在Office365中为会议室创建资源。
我尝试使用PATCH /users/{id}/events/{id}
更改正在进行的事件的结束时间(例如,会议提前结束)方法1:在资源邮箱的日历中修补活动
更新资源邮箱事件的开始或结束时间不会传播到该事件的与会者日历。资源邮箱的日历已更新,但该事件对所有与会者保持不变。
E.g。资源邮箱meetingroom@example.com
,其中包含ID为12345
的现有会议。假设会议的开始时间为今天的16:30,结束时间为17:00 UTC。假设当前时间是UTC时间16:50。
$microsoftEvent = json_encode([
'end' => [
'dateTime' => '2017-12-13T16:50:00.0000000',
'timeZone' => 'UTC'
]
], JSON_UNESCAPED_SLASHES);
$returnedEvent = $graph->createRequest("patch", "/users/meetingroom@example.com/events/12345")
->attachBody($microsoftEvent)
->setReturnType(\Microsoft\Graph\Model\Event::class)
->execute();
方法2:在组织者日历中修补活动
假设上面的会议组织者是karel@example.com
,并且该用户日历中的事件ID是通过iCalUId
在{{1}的单独GET中获得的},并且被发现是$filter
。
56789
在这种情况下,组织者的活动会更新,但资源邮箱会回复
$microsoftEvent = json_encode([
'end' => [
'dateTime' => '2017-12-13T16:50:00.0000000',
'timeZone' => 'UTC'
]
], JSON_UNESCAPED_SLASHES);
$returnedEvent = $graph->createRequest("patch", "/users/karel@example.com/events/56789")
->attachBody($microsoftEvent)
->setReturnType(\Microsoft\Graph\Model\Event::class)
->execute();
任何建议都将不胜感激。
答案 0 :(得分:2)
更新资源的事件不会做任何事情,因为资源实际上是与会者,而不是组织者。所以方法1是预期的行为。您必须更新组织者的活动,并且更新将发送给所有与会者,包括资源。
因此,您可以看到资源正在响应“拒绝”#34;因为事件是在过去开始的,所以我不确定你能解决这个问题。听起来像日历代理监视资源并不允许您更改正在进行的事件。