了解Microsoft图形/ getSchedule Api功能

时间:2020-06-14 12:19:37

标签: java microsoft-graph-api microsoft-graph-sdks microsoft-graph-teams microsoft-graph-calendar

我正在尝试使用图形/ getSchedule api检查会议冲突。但是,我不太了解请求输入字段“ availabilityViewInterval”的功能和用法。

我的基本要求是传递开始和结束日期时间,并查看资源是否可用(忙/闲)。 虽然我可以在/ getSchedule Api中获得该信息,但是不确定请求和响应中的某些字段。

  1. “ availabilityViewInterval”:这是一个请求字段,在文档中被声明为可选,但是在使用图形客户端时,我需要为此传递值。 它接受5到1440之间的int值,但不确定它要做什么以及我应该传递什么值?

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

请求

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。

我指的是以下Microsoft文档:

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

请帮助我了解请求中“ availabilityViewInterval”和响应中“ availabilityView”的重要性和用法。 另外,状态值将仅是“忙/闲”还是可以具有其他任何值? 预先感谢

1 个答案:

答案 0 :(得分:2)

文档说:

表示响应中AvailabilityView中的时隙持续时间。默认值为30分钟,最小为5分钟,最大为1440。可选。

这表示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分钟的时间。样本响应显示了Megan的值200220010。 0 =空闲,1 =暂定和2 =忙碌时,我们可以将其解码为:

  • 上午9点-上午10点忙
  • 上午10点-上午11点免费
  • 上午11点-下午12点免费
  • 下午12点-下午1点忙
  • 下午1点-下午2点忙
  • 下午2点-下午3点免费
  • 下午3点-下午4点免费
  • 下午4点-下午5点
  • 下午5点-下午6点免费

如果您在availabilityViewInterval设置为30的情况下执行了相同的请求,则会返回availabilityView的{​​{1}}值,每个数字代表30分钟的时间。