gpt4 book ai didi

java - 如何对可用性检查进行编程并在 Outlook 中创建新 session ?

转载 作者:行者123 更新时间:2023-12-02 06:45:12 24 4
gpt4 key购买 nike

我正在创建一个 Java Web 应用程序来管理一组学生和教师之间的 session 。他们所有人都已经使用 Outlook 来管理他们的电子邮件和个人日历。

我想知道是否可以通过 REST 服务使用 Exchange、Office365 或 Sharepoint Team Calendar 构建我的 Web 应用程序的日程安排功能,以便检查可用性并为学生和其中一名教师创建 session 可用:

SharePoint 2013 REST service

到目前为止,我发现的最有前途的机制是 Microsoft Sharepoint Server 的日历,它的协作功能可以创建 session 并检查用户列表的可用性。缺点是它不支持一对一的 session ,而是支持整个团队的 session (据我所知)。

我的第二个选择是要求小组中的每个人(系里的学生和老师)公开他们的个人日历,以便网络应用程序能够检查学生和老师的空闲时间并发送 session 请求。明显的问题是这种方法带来的隐私/安全问题。

我的最后一个选择(迄今为止不太喜欢,因为感觉就像重新发明轮子)是在网络应用程序中构建专有日历并向每个人发送 iCal 请求。这种方法的明显问题是两个独立日历之间的同步。

此外,这个功能一定是一个相当普遍的需求,所以应该有大量的博客解释如何利用 Exchange/Sharepoint/Office365 来实现它(不考虑其他平台,因为我雇主的基础设施是基于 Microsoft 的) 。然而,到底是太明显了以至于没有人谈论它,还是我没有搜索到正确的地方。有什么建议可以指引我正确的方向吗?

最佳答案

Exchange native 显示 EWS(Exchange Web 服务)中公开的用户日历可用性,您的网络管理员必须配置启用 EWS 的 Exchange 服务器。但你猜怎么着……Office 365(据我所知)启用了 EWS 服务,到期交换是 Office 365 优惠的一部分。

由于 EWS 是普通的 Web 服务,因此您应该在 Java 中使用的任何内容中创建一个“服务 stub ”或代理来创建映射 wsdl 文件的服务引用。

交换 EWS 是我的首选解决方案。

希望这有帮助。

这是引用页面,此链接展示了如何使用 C# 中的服务引用来进行正确的 API 调用。

http://msdn.microsoft.com/en-us/library/exchange/aa494212(v=exchg.140).aspx

static void GetUserAvailability(ExchangeServiceBinding esb)
{
// Identify the time to compare free/busy information.
Duration duration = new Duration();
duration.StartTime = DateTime.Now;
duration.EndTime = DateTime.Now.AddHours(4);

// Identify the options for comparing free/busy information.
FreeBusyViewOptionsType fbViewOptions = new FreeBusyViewOptionsType();
fbViewOptions.TimeWindow = duration;
fbViewOptions.RequestedView = FreeBusyViewType.MergedOnly;
fbViewOptions.RequestedViewSpecified = true;
fbViewOptions.MergedFreeBusyIntervalInMinutes = 35;
fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified = true;

MailboxData[] mailboxes = new MailboxData[1];
mailboxes[0] = new MailboxData();

// Identify the user mailbox to review for free/busy data.
EmailAddress emailAddress = new EmailAddress();

emailAddress.Address = "tplate@contoso.com";
emailAddress.Name = String.Empty;

mailboxes[0].Email = emailAddress;
mailboxes[0].ExcludeConflicts = false;

// Make the request.
GetUserAvailabilityRequestType request = new GetUserAvailabilityRequestType();

// Set the time zone of the request.
request.TimeZone = new SerializableTimeZone();
request.TimeZone.Bias = 480;
request.TimeZone.StandardTime = new SerializableTimeZoneTime();
request.TimeZone.StandardTime.Bias = 0;
request.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
request.TimeZone.StandardTime.DayOrder = 1;
request.TimeZone.StandardTime.Month = 11;
request.TimeZone.StandardTime.Time = "02:00:00";
request.TimeZone.DaylightTime = new SerializableTimeZoneTime();
request.TimeZone.DaylightTime.Bias = -60;
request.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
request.TimeZone.DaylightTime.DayOrder = 2;
request.TimeZone.DaylightTime.Month = 3;
request.TimeZone.DaylightTime.Time = "02:00:00";

// Add the mailboxes to the request.
request.MailboxDataArray = mailboxes;

// Add the view options to the request.
request.FreeBusyViewOptions = fbViewOptions;

try
{
// Send the request and get the response.
GetUserAvailabilityResponseType response = esb.GetUserAvailability(request);

// Access free/busy information.
if (response.FreeBusyResponseArray.Length < 1)
{
throw new Exception("No free/busy response data available.");
}
else
{
foreach (FreeBusyResponseType fbrt in response.FreeBusyResponseArray)
{
if (fbrt.ResponseMessage.ResponseClass == ResponseClassType.Error)
{
Console.WriteLine(string.Format("Error: {0}", fbrt.ResponseMessage.MessageText));
}
else
{
// Show the free/busy stream.
FreeBusyView fbv = fbrt.FreeBusyView;
Console.WriteLine(string.Format("Merged free/busy data: {0}", fbv.MergedFreeBusy));
}
}
}
}
catch (Exception e)
{
// Perform error processing.
Console.WriteLine(e.Message);
Console.ReadLine();
}
}

关于java - 如何对可用性检查进行编程并在 Outlook 中创建新 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com