Microsoft EWS Получить доступный конференц-зал - PullRequest
0 голосов
/ 04 декабря 2018

Я занимаюсь разработкой веб-приложения ASP.NET с использованием веб-служб Microsoft Exchange (управляемый API).Моя цель - предоставить список адресов конференц-зала в качестве входных данных и получить информацию о занятости / свободе с сервера Exchange с помощью GetUserAvailability, чтобы я мог предложить пользователю открыть конференц-зал на определенное время встречи.У меня есть рабочий код, но когда я пытаюсь ограничить DetailedSuggestionsWindow продолжительностью собрания, я получаю ошибку:

Длительность, указанная для FreeBusyViewOptions.TimeWindow, недействительна.

Я знаю, что могу расширить временное окно - но тогда я получаю больше данных, чем мне нужно.Кто-нибудь может предоставить способ найти предложенный конференц-зал на определенное время (обычно 30 минут - 2 часа)?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Согласно методу https://docs.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.exchangeservice.getuseravailability

поддерживаются только периоды времени продолжительностью не менее 24 часов, начинающиеся и заканчивающиеся в 12:00.Чтобы ограничить результаты метода более коротким периодом времени, необходимо отфильтровать результаты на клиенте.

Таким образом, вы не можете пропустить желаемое временное окно.Попробуйте удалить участников и запросить наличие только комнат, чтобы получить более полный набор результатов.

0 голосов
/ 04 декабря 2018

Вы можете обратиться по ссылке ниже:

// Create a collection of attendees. 
List<AttendeeInfo> attendees = new List<AttendeeInfo>(); 

attendees.Add(new AttendeeInfo() 
{ 
    SmtpAddress = "mack@contoso.com", 
    AttendeeType = MeetingAttendeeType.Organizer 
}); 

attendees.Add(new AttendeeInfo() 
{ 
    SmtpAddress = "sadie@contoso.com", 
    AttendeeType = MeetingAttendeeType.Required 
}); 

// Specify options to request free/busy information and suggested meeting times.
AvailabilityOptions availabilityOptions = new AvailabilityOptions(); 
availabilityOptions.GoodSuggestionThreshold = 49; 
availabilityOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
availabilityOptions.MaximumSuggestionsPerDay = 2;
// Note that 60 minutes is the default value for MeetingDuration, but setting it explicitly for demonstration purposes.
availabilityOptions.MeetingDuration = 60; 
availabilityOptions.MinimumSuggestionQuality = SuggestionQuality.Good; 
availabilityOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now.AddDays(1), DateTime.Now.AddDays(2));
availabilityOptions.RequestedFreeBusyView = FreeBusyViewType.FreeBusy;

// Return free/busy information and a set of suggested meeting times. 
// This method results in a GetUserAvailabilityRequest call to EWS.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees, 
                                                                 availabilityOptions.DetailedSuggestionsWindow, 
                                                                 AvailabilityData.FreeBusyAndSuggestions, 
                                                                 availabilityOptions); 

Для получения дополнительной информации, пожалуйста, перейдите по этой ссылке:

Получать встречи от коллег через EWS только с «Бесплатно /Занятое время, предмет, местоположение »уровень разрешений

...