了解 Microsoft graph /getSchedule Api 功能

Understanding Microsoft graph /getSchedule Api functionality

我正在尝试使用 graph /getSchedule api 检查会议冲突。但是我不太了解请求输入字段 "availabilityViewInterval".

的功能和用法

我的基本要求是传递开始和结束日期时间并查看资源是否可用(free/busy)。 虽然我能够在 /getSchedule Api 中得到它,但不确定请求和响应中的某些字段。

  1. "availabilityViewInterval" :这是一个请求字段,在文档中声明为可选,但是在使用图形客户端时我需要为此传递值。 它接受从 5 到 1440 的整数值,但不确定它的作用以及我应该传递的值是多少?

  2. "availabilityView":这是一个响应字段,returns 是一个字符串值。 但是我无法理解。这个值是什么以及如何计算的?它的意义是什么以及如何利用它?

要求:

ICalendarGetScheduleCollectionPage response = graphClient.users("usrEmailAddress").calendars(calendar.id)
                .getSchedule(schedulesList,endTime,startTime,availabilityViewInterval)
                .buildRequest()
                .post();

下面是我的示例响应(请求中的 availabilityViewInterval 值均为 5,但响应 availabilityView 不同):

**"availabilityView": "22"**,
      "scheduleItems": [
        {
          "isPrivate": false,
          "status": "busy",
          "subject": "Test Meeting again",
          "location": "",
          "start": {
            "dateTime": "2020-06-12T10:58:45.0000000",
            "timeZone": "UTC"
          },
          "end": {
            "dateTime": "2020-06-12T11:08:45.0000000",
            "timeZone": "UTC"
          }
        }
      ],
      "workingHours": {
        "daysOfWeek": [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday"
        ],
        "startTime": "08:00:00.0000000",
        "endTime": "17:00:00.0000000",
        "timeZone": {
          "name": "India Standard Time"
        }

回复 2:

**"availabilityView": "00"**,
      "scheduleItems": [],
      "workingHours": {
        "daysOfWeek": [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday"
        ],
        "startTime": "08:00:00.0000000",
        "endTime": "17:00:00.0000000",
        "timeZone": {
          "name": "India Standard Time"
        }

回复 3:

**"availabilityView": "220000000000"**,
      "scheduleItems": [
        {
          "isPrivate": false,
          "status": "busy",
          "subject": "Test Meeting again",
          "location": "",
          "start": {
            "dateTime": "2020-06-12T10:58:45.0000000",
            "timeZone": "UTC"
          },
          "end": {
            "dateTime": "2020-06-12T11:08:45.0000000",
            "timeZone": "UTC"
          }
        }
      ],
      "workingHours": {
        "daysOfWeek": [
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday"
        ],
        "startTime": "08:00:00.0000000",
        "endTime": "17:00:00.0000000",
        "timeZone": {
          "name": "India Standard Time"
        }

注意:所有请求的开始和结束时间都不同,但 availabilityViewInterval 字段在所有情况下都是 5。

我指的是下面的微软文档:

https://docs.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0&tabs=java

请帮助我理解 "availabilityViewInterval" 在请求中和 "availabilityView" 在响应中的意义和用法。 此外,状态值是否仅为 "free/busy" 或它也可以有任何其他值? 提前致谢

文档说:

Represents the duration of a time slot in an availabilityView in the response. The default is 30 minutes, minimum is 5, maximum is 1440. Optional.

这表示availabilityView中一个时隙的大小。查看示例可能会有所帮助。

这是来自文档的示例请求:

{        
    "schedules": ["adelev@contoso.onmicrosoft.com", "meganb@contoso.onmicrosoft.com"],
    "startTime": {
        "dateTime": "2019-03-15T09:00:00",
        "timeZone": "Pacific Standard Time"
    },
    "endTime": {
        "dateTime": "2019-03-15T18:00:00",
        "timeZone": "Pacific Standard Time"
    },
    "availabilityViewInterval": 60
}

availabilityViewInterval 设置为 60,这意味着返回的 availabilityView 中的每个数字代表 60 分钟的时间块。示例响应显示梅根的值 200220010。 0 = 空闲,1 = 暂定,2 = 忙碌,我们可以将其解码为:

  • 上午 9 点 - 上午 10 点忙碌
  • 上午 10 点 - 上午 11 点免费
  • 上午 11 点 - 中午 12 点免费
  • 12PM - 1PM 忙
  • 下午 1 点 - 2 点忙
  • 下午 2 点 - 3 点免费
  • 下午 3 点 - 4 点免费
  • 暂定下午 4 点 - 5 点
  • 下午 5 点 - 6 点免费

如果您在 availabilityViewInterval 设置为 30 的情况下执行相同的请求,您将返回 availabilityView220000222200001100,每个数字代表 30 分钟的时间块。