问题
I collect the appointments in an Exchange calendar with a SOAP FindItem
call. This returns single events and (custom) occurrences of recurring events.
When processing these I use GetItem
to retrieve the ID of the master event for each occurrence (ItemType
=citOccurrence
). After that is done, I can determine if I still need to store the master event internally (and retrieve all its details), or if I have already done so.
But with many occurrence of the same recurring event (especially with unending ones) in a longer FindItem
period, this means having to do a lot of GetItem
'get master' calls to the server (with the 1st one resulting in 'you must store the master' and all the others in 'you already have this master').
I have looked at the properties returned with BaseShape
AllProperties
and it seems that ConversationId
could be a property that I can use to identify occurrences of the same master event. Sample data for test events:
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Modified occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RrAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaA"/>
<t:Subject>New single event</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAMRNQtffkIdFvs73IVVJObM="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RtAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaG"/>
<t:Subject>Meeting</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAOZVB7gVSTJCtmZMMcXVBfQ="/>
Question: Is ConversationId
a reliable property to use for this?
Notes:
From reading around I get the impression that is primarily used for messages, not appointments.
There is a similar question here but that does not definitively answer mine.
Also, there are some issues retrieving ConversationId under Exchange 2007, but they seem solvable.
(Edited to add) A quick test shows that
ConversationID
,UID
, and evenInstanceIndex
are all candidates. Which is the 'definitive' one?
回答1:
Try iCalUID (I think that is the property, but I could be off a little). If you have a multi-room meeting, the UID will be the same for appointments in both rooms. I've not checked in some time, but I believe it will also be the same for instances of the same master.
来源:https://stackoverflow.com/questions/31611739/exchange-calendar-is-conversationid-a-good-identifier-of-master-events-for-find