GetUserAvailability Results 在 Exchange Web 服务中显示工作时间以外的结果
GetUserAvailabilityResults shows result outside working hours in Exchange web service
GetUserAvailabilityResults 在 Exchange 网络服务中显示的结果在工作时间之外,尽管我已设置 MaximumNonWorkHoursSuggestionsPerDay = 0
另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability returns null
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@e.edu.sa",
AttendeeType = MeetingAttendeeType.Organizer
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "abc@e.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Good;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.Suggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[0].SmtpAddress);
Console.WriteLine();
//foreach (AttendeeAvailability aa in results.AttendeesAvailability)
//{
// //Console.WriteLine(aa.Result.Date);
// Console.WriteLine(aa.CalendarEvents.Count);
//}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}
在 Exchange 中,每个用户的工作时间是分开维护的。每个用户都可以有自己的工作时间。(虽然这对1个组织的员工来说似乎不合理)
GetUserAvailabilityResults 在工作时间以外提供建议,因为其中一位与会者的工作时间与另一位不同
您不能为用户设置工作时间(据我所知)但是每个用户都可以使用 outlook 更改工作时间
Outlook Change working hour
您可以使用 results.AttendeesAvailability 查看每个与会者的工作时间
如果 AvailabilityData.FreeBusyAndSuggestions 而不是 AvailabilityData.Suggestions,results.AttendeesAvailability 将不会给出 null
用来
以下是修改后的代码
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "shomaail@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required,
ExcludeConflicts = false
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Excellent;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.FreeBusyAndSuggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[1].SmtpAddress);
Console.WriteLine();
foreach (AttendeeAvailability aa in results.AttendeesAvailability)
{
Console.WriteLine("=============================================");
Console.WriteLine(aa.Result.ToString());
Console.WriteLine(aa.ViewType.ToString());
Console.WriteLine(aa.CalendarEvents.Count);
Console.WriteLine(aa.WorkingHours.StartTime);
Console.WriteLine(aa.WorkingHours.EndTime);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek.Count);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[0]);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[aa.WorkingHours.DaysOfTheWeek.Count-1]);
foreach (DayOfTheWeek dow in aa.WorkingHours.DaysOfTheWeek)
{
Console.WriteLine(dow);
}
}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}
GetUserAvailabilityResults 在 Exchange 网络服务中显示的结果在工作时间之外,尽管我已设置 MaximumNonWorkHoursSuggestionsPerDay = 0 另外,我想知道如何获取和设置工作时间。此外,results.AttendeesAvailability returns null
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@e.edu.sa",
AttendeeType = MeetingAttendeeType.Organizer
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "abc@e.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Good;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.Suggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[0].SmtpAddress);
Console.WriteLine();
//foreach (AttendeeAvailability aa in results.AttendeesAvailability)
//{
// //Console.WriteLine(aa.Result.Date);
// Console.WriteLine(aa.CalendarEvents.Count);
//}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}
在 Exchange 中,每个用户的工作时间是分开维护的。每个用户都可以有自己的工作时间。(虽然这对1个组织的员工来说似乎不合理)
GetUserAvailabilityResults 在工作时间以外提供建议,因为其中一位与会者的工作时间与另一位不同
您不能为用户设置工作时间(据我所知)但是每个用户都可以使用 outlook 更改工作时间 Outlook Change working hour
您可以使用 results.AttendeesAvailability 查看每个与会者的工作时间
如果 AvailabilityData.FreeBusyAndSuggestions 而不是 AvailabilityData.Suggestions,results.AttendeesAvailability 将不会给出 null 用来 以下是修改后的代码
private static void GetSuggestedMeetingTimes(ExchangeService service)
{
// Create a list of attendees.
List<AttendeeInfo> attendees = new List<AttendeeInfo>();
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "shomaail@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required,
ExcludeConflicts = false
});
attendees.Add(new AttendeeInfo()
{
SmtpAddress = "vrr@kfupm.edu.sa",
AttendeeType = MeetingAttendeeType.Required
});
AvailabilityOptions meetingOptions = new AvailabilityOptions();
meetingOptions.MeetingDuration = 30;
meetingOptions.MaximumNonWorkHoursSuggestionsPerDay = 0;
meetingOptions.GoodSuggestionThreshold = 49;
meetingOptions.MinimumSuggestionQuality = SuggestionQuality.Excellent;
meetingOptions.DetailedSuggestionsWindow = new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2));
meetingOptions.MaximumSuggestionsPerDay = 48;
// Return a set of of suggested meeting times.
GetUserAvailabilityResults results = service.GetUserAvailability(attendees,
new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)),
AvailabilityData.FreeBusyAndSuggestions,
meetingOptions);
// Console.WriteLine(results.AttendeesAvailability[0].WorkingHours.EndTime);
// Display available meeting times.
Console.WriteLine("Availability for {0} and {1}", attendees[0].SmtpAddress, attendees[1].SmtpAddress);
Console.WriteLine();
foreach (AttendeeAvailability aa in results.AttendeesAvailability)
{
Console.WriteLine("=============================================");
Console.WriteLine(aa.Result.ToString());
Console.WriteLine(aa.ViewType.ToString());
Console.WriteLine(aa.CalendarEvents.Count);
Console.WriteLine(aa.WorkingHours.StartTime);
Console.WriteLine(aa.WorkingHours.EndTime);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek.Count);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[0]);
Console.WriteLine(aa.WorkingHours.DaysOfTheWeek[aa.WorkingHours.DaysOfTheWeek.Count-1]);
foreach (DayOfTheWeek dow in aa.WorkingHours.DaysOfTheWeek)
{
Console.WriteLine(dow);
}
}
foreach (Suggestion suggestion in results.Suggestions)
{
Console.WriteLine(suggestion.Date);
Console.WriteLine();
foreach (TimeSuggestion timeSuggestion in suggestion.TimeSuggestions)
{
Console.WriteLine("Suggested meeting time:" + timeSuggestion.MeetingTime);
Console.WriteLine();
}
}
}