Заменить существующую встречу в календаре Outlook - PullRequest
2 голосов
/ 10 февраля 2011

Я делаю какую-то работу с назначением icalndar; это позволило бы делегату просмотреть веб-сайт мероприятия и щелкнуть предоставленную ссылку, чтобы добавить встречу в свой календарь.

У меня есть рабочая сборка, которая сгенерирует вывод в формате ics (в виде физического файла или потока) на основе известного набора информации (дата начала, дата окончания, заголовок и т. Д.).

Пример вывода, который я генерирую для календарной встречи, следующий:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20110210T124703Z
DESCRIPTION:Anything Else\n\nHopefully some useful information would be written here\n
DTEND:20110212T100000Z
DTSTAMP:20110210T124600Z
DTSTART:20110212T090000Z
LAST-MODIFIED:20110210T124703Z
LOCATION:Dummy Location
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:Dummy Meeting
TRANSP:OPAQUE
UID:040000008200E00074C5B7101A82E00800000000B0D1061C57C8CB01000000000000000
    010000000281117EDC1194242B64F0247C54DB401
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\n<HTML>\n<HEAD>\n<META HTTP-EQUIV="Content-Type" CONTENT="text/html\;    charset=Windows-1252">\n<META NAME="Generator" CONTENT="MS Exchange Server
 version 6.5.7654.12">\n<TITLE>Dummy Meeting</TITLE>\n</HEAD>\n<BODY>\n<!-
- Converted from text/plain format -->\n\n<P><FONT SIZE=2>&lt\;h1&gt\;Anyt
hing Else&lt\;/h1&gt\;&lt\;p&gt\;Hopefully some useful information would b
e written here&lt\;/p&gt\;<BR>\n</FONT>\n</P>\n\n</BODY>\n</HTML>
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-IMPORTANCE:1
END:VEVENT
END:VCALENDAR

То, что меня спросили, это; Можно ли изменить встречу, но в следующий раз, когда кто-то запросит напоминание, он обнаружит встречу, уже существующую в своем календаре, и обновит ее вместо создания новой записи?

Поэтому я пытаюсь выяснить, можно ли перезаписать существующую календарную встречу.

Я заметил, что было значение UID, я пытался сохранить это значение таким же, но, похоже, оно не обеспечивает связь между встречами в календаре.

Возможно ли, что действие "Сохранить и закрыть" для встречи в календаре генерирует новый UID, поэтому больше нет ссылки?

Что еще я могу попробовать?

Ответы [ 2 ]

1 голос
/ 08 января 2014

Возможно обновление PUBLISH редактируемых записей. Вам не нужно менять METHOD на REQUEST (и устанавливать RSVP=FALSE на каждый ATTENDEE).

Чтобы новая копия заменила любую существующую, все, что вам нужно сделать, это увеличить значение SEQUENCE. Свойство SEQUENCE в первую очередь предназначено для различения версий записи, в которых изменилось что-то, связанное со временем (например, DTSTART).

Однако RFC 2445 не исключает столкновения SEQUENCE по любой произвольной причине (например, исправление опечатки). Это сделало бы недействительными любые ответы рабочего процесса для записи, так как они были бы для более низких значений SEQUENCE, но в случае PUBLISH рабочего процесса действительно нет; все в одну сторону.

Если вы не вносите какие-либо временные изменения в запись, вы можете просто изменить значение DTSTAMP на более новое. Получатель увидит, что у него уже есть значения UID и SEQUENCE, но более старый DTSTAMP, поэтому он должен просто обновить то, что у него уже есть.

Любой, кто не сможет обновить запись PUBLISH ed, когда были обновлены ее SEQUENCE или DTSTAMP, не понимает стандарт или не смог его правильно реализовать.

1 голос
/ 10 февраля 2011

Можно обновить встречу, но не так, как вы это сделали.Вот что важно:

  • METHOD должно быть REQUEST - событие PUBLISH не будет обновляться, оно будет добавляться снова и снова.REQUEST приглашения на собрание ведут себя по-разному и обновят существующее собрание еще до того, как пользователь его одобрит.Я хотел бы отметить, что если события уже имеют тип Publish, они не могут быть обновлены (по крайней мере, насколько мне известно).
  • Вы должны использовать точно такой же UID.
  • DTSTAMP должно быть больше, чем существующая отметка даты (это должно быть в порядке, если вы создаете ее динамически)
  • Включить ORGANIZER - Outlook может не позволять людям принимать собрание без него (на самом деле не связано,но важно).

У меня есть частичное краткое изложение этого в моем блоге - Отправка запросов на собрания в Outlook через почтовое сообщение ASP.NET , хотя этоотсутствует отправка подтверждения организатору и часовые пояса (которые очень важны, поэтому я слышал).

См. также: RFC 2446 - iTIP , поиск по разделу 1.3 Роли и транзакции ITIP

...