Веб-службы Exchange получают встречу как MIME - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь получить iCal на приеме EWS (https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-export-items-by-using-ews-in-exchange). В общем, он работает нормально, но что-то идет не так, когда встреча повторяется с измененными вхождениями (исключениями), их MIME-контент, полученный в основном повторяющемся событии, содержит все его измененные вхождения:

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Israel Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1FR;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Slava:mailto:slava@domain.onmicrosoft.com
ATTACH:CID:408BD82990C789226A32C4E6F8D7E592D9DD5960@eurprd01.prod.exchangel
 abs.com
RRULE:FREQ=WEEKLY;UNTIL=20200401T050000Z;INTERVAL=1;BYDAY=WE;WKST=SU
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
SUMMARY;LANGUAGE=en-US:Recurrent 1
DTSTART;TZID=Israel Standard Time:20191009T080000
DTEND;TZID=Israel Standard Time:20191009T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20200401T060210Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:1
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR

И это не так уж сложно чтобы отфильтровать измененные вхождения, поскольку они имеют RECURRENCE-ID, которое различает guish между основным повторяющимся и измененным вхождением. Проблема в том, что когда я пытаюсь передать с помощью EWS все измененные вхождения от этого мастера: https://docs.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.appointment.modifiedoccurrences?view=exchange-ews-api#Microsoft_Exchange_WebServices_Data_Appointment_ModifiedOccurrences и запрашивая MIME для каждого mofified вхождения, приносит MIME, который снова содержит все измененные вхождения для этого мастера, и теперь он очень сложно отфильтровать нерелевантные события, так как я получаю слишком много, например, с 1 главным и 3 измененными всего, я получу с помощью MIME 10 событий (1 мастер и 3 измененных в каждом запросе MIME), и это дубликаты . См. Ниже пример MIME для измененного вхождения (он содержит одно и то же событие дважды, второй раз без некоторых свойств, в то время как первое событие имеет определение RRULE вместе с RECURRENCE-ID, что противоречит iCal RF C)

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Israel Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1FR;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Slava mailto:slava@domain.onmicrosoft.com
ATTACH:CID:C193186C7E6D4769FD7EB28C80DBC92443A1190C@eurprd01.prod.exchangel
 abs.com
DESCRIPTION;LANGUAGE=en-US:\n
RRULE:FREQ=WEEKLY;UNTIL=20200401T050000Z;INTERVAL=1;BYDAY=WE;WKST=SU
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY;LANGUAGE=en-US:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
END:VEVENT
BEGIN:VEVENT
UID:040000008200E00074C5B7101A82E00800000000D263C072E37DD501000000000000000
 01000000021933B3497010A43A59A900692A1BE23
RECURRENCE-ID;TZID=Israel Standard Time:20191023T080000
SUMMARY:Recurrent 1_1
DTSTART;TZID=Israel Standard Time:20191023T080000
DTEND;TZID=Israel Standard Time:20191023T083000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20191112T145232Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2117746898
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR

Есть ли способ получить MIME, который имеет только одно событие для каждой встречи в MIME?

Спасибо

...