使用Office365 Calendar API无法让所有会议室忙碌

时间:2017-02-26 09:32:11

标签: calendar office365 office365api outlook-restapi office365-restapi

尝试获取日历活动,以便用户为参与者和会议室可用的会议选择时间。

我们正在使用Outlook Calendar REST API v2 - findMeetingTimes: https://msdn.microsoft.com/en-us/office/office365/api/calendar-rest-operations#FindMeetingTimes

请求几乎返回所有事件。 由于某些原因,执行请求的用户创建的事件不包含在响应中。这意味着会议室或与会者即使在他们的日历中有活动也似乎是免费的。

这是一个样本请求,只有会议室作为与会者。在为会议室和用户请求事件时,我们会看到同样的问题行为。

https://outlook.office.com/api/v2.0/users('user@companyname.onmicrosoft.com')/findmeetingtimes

{
    "Attendees": [{
        "Type": "Required",
        "EmailAddress": {
            "Name": "Palo Alto meeting room",
            "Address": "paloalto@companyname.onmicrosoft.com"
        }
    }],
    "TimeConstraint": {
        "Timeslots": [{
            "Start": {
                "DateTime": "2017-02-11T22:00:00",
                "TimeZone": "GMT Standard Time"
            },
            "End": {
                "DateTime": "2017-04-29T20:59:59",
                "TimeZone": "GMT Standard Time"
            }
        }]
    },
    "LocationConstraint": {
        "IsRequired": "false",
        "SuggestLocation": "false",
        "Locations": [{
            "ResolveAvailability": "false",
            "DisplayName": "Palo Alto meeting room",
            "LocationEmailAddress": "paloalto@companyname.onmicrosoft.com"
        }]
    },
    "MinimumAttendeePercentage": "0",
    "MaxCandidates": "1000",
    "ReturnSuggestionReasons": "true"
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

好的,所以要澄清,这是我最初错过的关键点:您遇到的问题是经过身份验证的用户使用会议室作为位置预订的约会不会导致条目显示在FindMeetingTimes回复中。 (起初我以为你说它显示为Free!)

这是正确的行为。 FindMeetingTimes并不意味着返回忙/闲结果的详尽列表。相反,它是找到一个潜在的会议时间!该列表基于组织者(经过身份验证的用户)和指定的与会者的可用性。因为组织者和房间都很忙(因为组织者已在房间预约了预约),所以甚至没有提供时间段。当您以另一个用户身份提出请求时,他们就是组织者,并且由于他们当时是免费的,因此该插槽将显示为可能的时间。

所以我可能会误解你要做的事情,但这对你有用。只要您只提供作为可能性返回的时间,就不会发生冲突。