Поиск времени для проведения собрания в календаре Outlook

В организации или учебном заведении поиск времени и места для проведения собрания часто влечет за собой дополнительные расходы. Приложения Microsoft Graph могут использовать findMeetingTimes для определения любого возможного времени собрания, удовлетворяющего времени, расположению и другим ограничениям.

Действие findMeetingTimes позволяет указать такие условия, как дата и время собрания, длительность, необязательные или обязательные участники и характер действия (activityDomain). В действии учитываются обычные графики работы участников и организаторов и состояние "свободная/занятая", а также предлагается время, подходящее для участников и типа деятельности. Например, предложения для действий, связанных с работой, всегда возникают в рабочее время организатора и участников, а предложения, где доступны необходимые участники, упорядочены выше в списке предлагаемых.

В Microsoft 365 рабочие часы и часовые пояса настраиваются для каждого почтового ящика. Действие findMeetingTimes обрабатывает изменения часовых поясов у организатора и участников. По умолчанию функция findMeetingTimes возвращает предложения в формате UTC. Вы можете использовать следующий заголовок запроса, чтобы предложения findMeetingTimes возвращались в определенном часовом поясе.

Prefer: outlook.timezone="{time-zone-string}}"

Вы можете указать процент (minimumAttendeePercentage) для кворума, чтобы действие findMeetingTimes показывало предложения, только если этот минимальный процент участников может присутствовать. Это особенно полезно при планировании больших собраний.

Если findMeetingTimes не может предложить время собрания, он указывает определенную причину (emptySuggestionsReason), например организатор или обязательный участник, недоступный. Это значение поможет вам лучше настраивать параметры и снова вызывать метод findMeetingTimes.

Примечание.

Примечание. В настоящее время действие findMeetingTimes доступно для рабочих и учебных почтовых ящиков Microsoft 365, но не для личных почтовых ящиков outlook.com.

Пример

В следующем примере показано, как использовать findMeetingTimes для возврата возможного времени для двух пользователей, которые будут встречаться в течение нескольких часов, с учетом расписания занятости и занятости пользователей, а также время, в течение которого участник будет находиться в течение части времени. Так как на этом собрании всего 2 пользователя, для предложений требуется 100 % посещаемости. Ниже показано расписание доступности и доступности пользователей.

Календарь организатора

Календарь работы организатора на 17-21 апреля с отображением времени свободной занятости

Календарь участника

Рабочий календарь участника на 17-21 апреля, показывающий время свободной занятости

В примере выполняется 2 вызова findMeetingTimes:

  1. Первый вызов выглядит в диапазоне дат с 18 по 20 апреля. Так как участник не работает 18-19 апреля, а 20 апреля нет общего доступного времени, первый вызов не возвращает предложений с причиной (emptySuggestionsReason), что участники недоступны.
  2. Второй вызов ищет время для собрания 21 апреля и предлагает провести его с 14:00 до 16:00.

Два вызова findMeetingTimes включают следующие параметры. Все параметрыfindMeetingTimes являются необязательными.

  • attendees: один участник, Samantha Booth, для свойства type которого задано значение required.
  • locationConstraint: предлагать место не нужно.
  • timeConstraint: первый вызов просматривает диапазон времени с 9:00 18 апреля до 17:00 20 апреля, после того как он не может предложить время, второй вызов просматривает диапазон времени с 9:00 до 17:00 21 апреля.
  • meetingDuration: два часа.
  • returnSuggestionReasons: в этом примере требуется показать причину для каждого предложения.
  • minimumAttendeePercentage: 100 %, так как участник должен быть свободен в любое предложенное время.

Первый запрос

Поиск 2-часового интервала 18–20 апреля, в течение которого оба пользователя будут свободны.

POST https://graph.microsoft.com/v1.0/me/findMeetingTimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-type: application/json

{
  "attendees": [
    {
      "type": "required",
      "emailAddress": {
        "name": "Samantha Booth",
        "address": "samanthab@contoso.com"
      }
    }
  ],
  "locationConstraint": {
    "isRequired": false,
    "suggestLocation": false,
    "locations": [
      {
        "resolveAvailability": false,
        "displayName": "Conf room Hood"
      }
    ]
  },
  "timeConstraint": {
    "activityDomain":"work",
    "timeslots": [
      {
        "start": {
          "dateTime": "2017-04-18T09:00:00",
          "timeZone": "Pacific Standard Time"
        },
        "end": {
          "dateTime": "2017-04-20T17:00:00",
          "timeZone": "Pacific Standard Time"
        }
      }
    ]
  },
  "meetingDuration": "PT2H",
  "returnSuggestionReasons": true,
  "minimumAttendeePercentage": 100
}

Первый ответ

В рабочее время 18–20 апреля 2-часовый интервал, в течение которого оба пользователя будут свободны, отсутствует.

HTTP/1.1 200 OK
Content-type: application/json
Preference-Applied: outlook.timezone="Pacific Standard Time"
Content-Length: 184

{
    "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
    "emptySuggestionsReason":"AttendeesUnavailable",
    "meetingTimeSuggestions":[

    ]
}

Второй запрос

Поиск 2-часового интервала 21 апреля.

POST https://graph.microsoft.com/v1.0/me/findMeetingTimes
Prefer: outlook.timezone="Pacific Standard Time"
Content-type: application/json

{
  "attendees": [
    {
      "type": "required",
      "emailAddress": {
        "name": "Samantha Booth",
        "address": "samanthab@contoso.com"
      }
    }
  ],
  "locationConstraint": {
    "isRequired": false,
    "suggestLocation": false,
    "locations": [
      {
        "resolveAvailability": false,
        "displayName": "Conf room Hood"
      }
    ]
  },
  "timeConstraint": {
    "activityDomain":"work",
    "timeslots": [
      {
        "start": {
          "dateTime": "2017-04-21T09:00:00",
          "timeZone": "Pacific Standard Time"
        },
        "end": {
          "dateTime": "2017-04-21T17:00:00",
          "timeZone": "Pacific Standard Time"
        }
      }
    ]
  },
  "meetingDuration": "PT2H",
  "returnSuggestionReasons": true,
  "minimumAttendeePercentage": 100
}

Второй ответ

Второй запрос findMeetingTimes предлагает пользователям провести собрание 21 апреля с 14:00 до 16:00.

HTTP/1.1 200 OK
Content-type: application/json
Preference-Applied: outlook.timezone="Pacific Standard Time"
Content-Length: 714

{
    "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.meetingTimeSuggestionsResult",
    "emptySuggestionsReason":"",
    "meetingTimeSuggestions":[
        {
            "confidence":100.0,
            "organizerAvailability":"free",
            "suggestionReason":"Suggested because it is one of the nearest times when all attendees are available.",
            "meetingTimeSlot":{
                "start":{
                    "dateTime":"2017-04-21T14:00:00.0000000",
                    "timeZone":"Pacific Standard Time"
                },
                "end":{
                    "dateTime":"2017-04-21T16:00:00.0000000",
                    "timeZone":"Pacific Standard Time"
                }
            },
            "attendeeAvailability":[
                {
                    "availability":"free",
                    "attendee":{
                        "type":"required",
                        "emailAddress":{
                            "address":"samanthab@contoso.com"
                        }
                    }
                }
            ],
            "locations":[
                {
                    "displayName":"Conf room Hood"
                }
            ]
        }
    ]
}

Дальнейшие действия

Бывают случаи, когда не все участники могут присутствовать на собрании. Вы можете предложить findMeetingTimes время, если достоверность посещаемости достигает определенного процента, указав необязательный параметр minimumAttendeePercentage . Узнайте больше о достоверности предложения собрания и других параметрах и примените их соответствующим образом для собраний большего размера.

Получив предложения по времени проведения собрания, вы можете:

  1. создать событие и отправить приглашение на собрание;
  2. добавить вложение в событие.

Узнайте больше об интеграции с Календарем Outlook.