2014-10-20 128 views
0

我通过REST请求和ADAL库成功检索Exchange Online服务器中的用户电子邮件。我们一直在检索和处理由Outlook,GMail/Google-Calendar,iPad,iPhone和Android设备生成的日历事件电子邮件及其关联的日历事件。检测Office365 REST邮件API中的日历事件邮件项目

我们一直在寻找ClassName属性中的“meeting.request”或“meeting.cancelled”,但这些值在一周前被删除并且没有返回。我们现在一直在寻找一个非空的MeetingMessageType属性(MeetingRequest或MeetingCancelled),但截至今天,这些属性也被删除。这是非常有价值的互操作数据,但我不知道下一步要看哪里。

如何将用户邮箱或共享邮箱中检索到的json Message对象与(Exchange ...)关联的Calendar事件相关联?我们可以处理会议创作,邀请,接受等与我们然后清除消息项目;鉴于查询日历查看新事件和更新事件要密集得多,因为我们当然无法在日历处理日历事件时清除日历事件!

我可以查询关联的消息ID的日历吗?我无法想象这将有可能为每条消息做。

谢谢!

编辑:@Venkat谢谢。邮件项目比新兴的日历事件标准更具可处理性。作为一名Exchange开发人员,我必须问 - 您是否真的需要一个关于如何将邮件绑定事件更好地处理为邮件而不是日历事件的示例?好吧,这很酷,这是一个:

我们正在做的一件事是抄送/密送邮件/ mtg-请求到特定邮箱进行处理(或使用客户端和服务器规则来完成相同的事情)。然后,我们可以轮询各个邮箱,共享邮箱和/或邮箱集合以自动响应或不响应,并且可以移动到特定的日历或不移动,并且可以重定向到特定的用户,也可以在路由期间更改标题信息对于进一步的类别分类与否,以及甚至替换接收者/参加者等等。为了用REST日历请求做同样的事情,我们将失去所有服务器规则自动化,所有客户端规则自动化,程序自动响应,全部头部操作(数据插入/提取)等。我们只是尝试将事件推送到云应用程序,用于某些用户集合,使用共享邮箱重定向到特定的守护程序帐户,这些帐户为我们的用户的特定子集保存日历/客户端。

像其他人一样,我们正在尝试与云应用程序集成。所以我们需要程序分析,数据操作以及推送邮件和日历项目。所以,首先,我们拥有服务器邮件处理规则,客户端/用户邮件规则,邮件头修改(简单的项目数据修改),邮件自动响应控制和盲目收​​件人的巨大优势。日历事件没有得到任何这些东西。另一方面,我们拥有比日历分类法(几乎不存在)更强健的邮件文件夹分类法。对于第三件事,日历事件邮件项目是用户特定的并且具有比共享日历事件更少的持久值。最后,如果我们以任何方式处理邮件项目 - 为什么不至少有事件的eventId?为什么要拿出所有互操作信息?具有eventId完全消除了对日历端点的查询返回多个项目的需求,并且不会添加针对邮件端点的添加查询。

谷歌包括一个附加的ics。即使您从API邮件项目中删除事件项目附件,我也不明白为什么必须删除eventId。通过邮件处理日历事件并不是什么新鲜事,但我们必须在两个对象之间建立数据绑定。就这些。

我的Exchange Server仍然知道邮件项目是什么时间的日历事件。如果我在REST上提出这个问题,它不会告诉我〜。因此,作为一种粗暴的解决方法,我可以设置邮件规则,为所有类型为“会议请求”的传入消息添加一个“api_calendarEvent”类别。然后,在为邮件项目进行REST调用之后,我可以分析类别以手动重新填充类属性。但是为什么从邮件中删除附件,类名,MeetingMessageType和EventId呢?即使我制定了服务器规则将某些邮箱中的某些邮件重新分类为日历事件,并且能够知道何时轮询日历以获取事件详细信息,我是否总能知道要轮询哪个日历以找到该事件?我们需要避免跨多个日历进行盲查,这是为了保留EventId和/或ClassName。然后,我们也会有大量的日历处理自动化,现在已经从API中删除。

谢谢!

+0

嗨Valleyspirit,能否请你解释一下你越基础上,邀请和会议响应邮件什么样的处理?你是否为每个用户保留任何状态?你说查询日历查看新事件和更新事件要密集得多。你能否详细说明一下?了解这些信息将帮助我推荐使用Office 365 REST API的正确方法。谢谢。 – 2014-10-21 21:30:20

+0

@ VenkatAyyadevara-MSFT - 我为你编辑了我的问题。谢谢。 – valleyspirit 2014-10-22 19:17:09

+0

嗨谷歌精灵,我回应,但有一个额外的问题。如果您能通过与Me/Messages集合分开的Me/MeetingMessages集合获取所有会议邀请和响应消息,是否满足您的方案?或者,对于您的情况,与会议相关的消息与其他所有消息一起出现在“我的文件夹/收件箱/消息”源中是否很重要?让我知道如果我的问题不清楚或者您需要更多的上下文。谢谢。 – 2014-10-24 12:46:39

回答

0

感谢您对我评论的详细回复!您的情况是我们希望支持的。作为模式清理的一部分,我们从消息中删除了事件ID和会议消息类型,因为它已包含在每条消息中。对于日历邀请和回复,我们计划添加2个属性: 1.导航到相关事件的链接,因此如果您有日历许可权,您可以单击该事件并对其执行操作。 2.日历响应类型例如会议接受,会议拒绝等等,所以你知道你收到的是什么类型的页面。

我们目前正在进行设计,我们没有确切的时间表来分享。但是,只要我们有这个API可用,我们会立即更新文档。

[UPDATE]我们现在将日历事件邀请和响应作为EventMessage返回,它是M​​essage的子类。该实体包含一个名为MeetingMessageType的属性以及一条到用户日历上相应事件的导航链接。请参阅下面的示例:

{ 
    @odata.context: "https://outlook.office365.com/api/v1.0/$metadata#Users('<snipped>')/Messages/$entity", 
    @odata.type: "#Microsoft.OutlookServices.EventMessage", 
    @odata.id: "https://outlook.office365.com/api/v1.0/Users('<snipped>')/Messages('<snipped>')", 
    @odata.etag: "<snipped>", 
    Id: "<snipped>", 
    ChangeKey: "<snipped>", 
    Categories: [ ], 
    DateTimeCreated: "2015-04-08T14:37:55Z", 
    DateTimeLastModified: "2015-04-08T14:37:55Z", 
    Subject: "<snipped>", 
    BodyPreview: "", 
    Body: { 
    ContentType: "HTML", 
    Content: "<snipped>" 
    }, 
    Importance: "Normal", 
    HasAttachments: false, 
    ParentFolderId: "<snipped>", 
    From: { 
    EmailAddress: { 
     Address: "<snipped>", 
     Name: "<snipped>" 
    } 
    }, 
    Sender: { 
    EmailAddress: { 
     Address: "<snipped>", 
     Name: "<snipped>" 
    } 
    }, 
    ToRecipients: [{ 
    EmailAddress: { 
     Address: "<snipped>", 
     Name: "<snipped>" 
    } 
    }], 
    CcRecipients: [ ], 
    BccRecipients: [ ], 
    ReplyTo: [ ],  
    ConversationId: "<snipped>", 
    DateTimeReceived: "2015-04-08T14:37:55Z", 
    DateTimeSent: "2015-04-08T14:37:48Z", 
    IsDeliveryReceiptRequested: null, 
    IsReadReceiptRequested: false, 
    IsDraft: false, 
    IsRead: false, 
    WebLink: "<snipped>", 
    MeetingMessageType: "MeetingRequest", 
    [email protected]: "https://outlook.office365.com/api/v1.0/Users('<snipped>')/Events('<snipped>')" 
} 

如果您有任何问题或需要更多信息,请让我知道我们的建议更改是否符合您的要求。

感谢,

Venkat

+0

谢谢!是的,真棒。这将返回几乎所有项目范围的功能。我的主要问题是所有日历电子邮件的iPad/iPhone/Android平板电脑/ Android手机/ Gmail的日历/ MS Outlook,无论是创建/更新/删除,都可以使用以下消息属性进行处理:ClassName,EventId和MeetingMessageType。当所有这三个都被删除后,我们的项目进入休眠状态。任何互操作性的数据你都会回来,将是绝对可怕的。我每天都会遵循改进的文档,并请传达这些需求。谢谢! – valleyspirit 2014-11-06 15:22:40

+0

回复:a/Me/MeetingMessages集合:是的,如果这些邮件包含一些类似于日历响应类型和导航链接的数据,这也是完全合理的。谢谢,终点并不太重要,我忘了回应。 – valleyspirit 2014-11-06 16:26:41

+0

嗨valleyspirit,感谢您的反馈!抱歉,延迟回复。我们正在努力以某种您可以使用的形式公开这些信息。敬请期待... – 2014-11-13 13:59:32

相关问题