ICalendar и обновления событий не работают в Outlook
Я создаю файлы ICalendar (.ics).
Используя поля UID и SEQUENCE, я могу обновлять существующие события в Календаре Google и в Календаре Windows НО НО в MS Outlook 2007 - он просто создает второе событие
Как заставить их работать в Outlook?
Спасибо
Tom
Ответы
Ответ 1
Я продолжал выполнять некоторые тесты и теперь смог получить Outlook для обновления и отмены событий на основе файла .cs.
На самом деле Outlook реагирует на правила, определенные в RFC 2446
В заключение вы должны указать
METHOD:REQUEST
и ORGANIZER:xxxxxxxx
в дополнение к UID
: и SEQUENCE:
Для отмены вы должны указать METHOD:CANCEL
Пример запроса/обновления
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:REQUEST
BEGIN:VEVENT
UID:[email protected]
SEQUENCE:5
DTSTAMP:20081106T154911Z
ORGANIZER:[email protected]
DTSTART:20081113T164907
DTEND:20081115T170000
SUMMARY:TestTraining
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
Отменить пример;
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:CANCEL
BEGIN:VEVENT
UID:[email protected]
SEQUENCE:7
DTSTAMP:20081106T154916Z
ORGANIZER:[email protected]
DTSTART:20081113T164907
SUMMARY:TestTraining
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR
Ответ 2
Я схватил Тома Картера, спрашивающего. У него был рабочий пример с просьбой, за которой последовала аннулирование. То, что я ошибался, было моим МЕТОДОМ внутри моего VEVENT, когда он должен был быть снаружи. Итак, вот рабочее обновление!
Оригинал:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
ORGANIZER:[email protected]
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
Update:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
ORGANIZER:[email protected]
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
Все, что я сделал, это добавить метод запроса (в правильном месте!) и организатор.
Ответ 3
Я использую outlook 2003 (от чтения сообщений, 2007, похоже, ведет себя одинаково), и вам нужно четко различать поведение явного импорта файла в файл ics и неявный импорт, когда файл ics 'double clicked'.
В меню Outlook Файл/Импорт и экспорт... Outlook будет загружать столько записей VEVENT, сколько находится в файле, и без изменения идентификатора UID:, SEQUENCE: или DTSTAMP: значения изменяют это, т.е. если вы изменяете любые данные и повторно импортировать его, вы просто получаете дублированный набор записей.
Если вы дважды щелкните файл ics, он обрабатывает только первую запись VEVENT. Однако он распознает UID и, если DTSTAMP: позже (SEQUENCE может быть таким же, но не ниже), вам будет предложено и оно обновит событие в вашем календаре.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.membership-services.net
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20090126T210000
DTEND:20090126T220000
SUMMARY:Avondale - Thameside Away Game vs Croydon
LOCATION:Whitgift School
DESCRIPTION:http://maps.google.co.uk/maps?f=q&hl=en&geocode=&q=CR2+6YT
UID:AWPC_8
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
BEGIN:VEVENT
DTSTART:20090202T213000
DTEND:20090202T223000
SUMMARY:Avondale - Thameside Home Game vs Orcas
LOCATION:Putney
DESCRIPTION:http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&ie=UTF8&ll=51.4635,-0.2285&spn=0.005,0.009613&t=h&z=17&iwloc=lyrftr:w2t.90,0x48760f04a04b1801:0x49ebf12503a5d5a9,51.463459,-0.228674
UID:AWPC_10
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
END:VCALENDAR
Ответ 4
добавьте это в свой файл ICS
X-WR-RELCALID:MyCal123
где MyCal123 является уникальным идентификатором для вашего календаря.
При добавлении этой строки в файл ICS весь календарь обновляется (после запроса в Outlook). Вам даже не нужно менять DTSTAMP или SEQUENCE или ORGANIZER и METHOD: PUBLISH подходит для обновления. Просто обновите данные о мероприятии, дважды щелкните ICS, и календарь обновится. Обратите внимание, что это также отлично работает, если вы опубликовали календарь и предоставили URL-адрес для просмотра людьми. Им просто нужно нажать обновление после примерно 2 минут, и они также получат обновление.
Спасибо Дэвиду Бьёрнхарту за это: Импорт ICal создает новый календарь Когда открывается файл ics
Ответ 5
Я использую Entourage, поэтому это может не совпадать с поведением, которое вы видите, но я надеюсь, что это поможет.
Используя iCalendar из вашего ответа, Entourage даже не импортирует данные. Используя известный файл, я получил его для импорта, а затем успешно обновил его. Сравнивая два файла, единственные структурные различия заключаются в следующем:
- Мое известное-хорошее не имеет элемента
VERSION
- Мой известный-хороший не имеет элемента
PRODID
- Мой известный-хороший не имеет элемента
STATUS
- Мой известный-хороший не имеет элемента
SEQUENCE
Поскольку поддержка Microsoft для открытых стандартов имеет тенденцию отставать, я бы предложил попробовать без VERSION
info.