In my work, I occasionally have to deal with various issues with meeting invitations (encoding troubles, wrong time zone, etc.), so I wanted to understand the structure of iCal (iCalendar).
This is not a complete overview of iCalendar features (RFC2445, RFC2446 and RFC2447). You can get acquainted with the most complete functional overview on the following sites: https://www.w3.org/2000/01/foo & https://www.kanzaki.com/docs/ical/
The analysis involved 8 different iCal emails from Microsoft Exchange 2016 + Microsoft Outlook 2016 environment. Microsoft Exchange adds additional "X-MICROSOFT" and "X-MS-OLK" headers to increase Microsoft Outlook functionality. Fully description you can find there.
In the image below, I tried to clearly visualize links between the iCal file parameters and Outlook interface.
In the table below, I presented an analysis of the main parameters of iCal file.
I hope it will help someone.
This is not a complete overview of iCalendar features (RFC2445, RFC2446 and RFC2447). You can get acquainted with the most complete functional overview on the following sites: https://www.w3.org/2000/01/foo & https://www.kanzaki.com/docs/ical/
The analysis involved 8 different iCal emails from Microsoft Exchange 2016 + Microsoft Outlook 2016 environment. Microsoft Exchange adds additional "X-MICROSOFT" and "X-MS-OLK" headers to increase Microsoft Outlook functionality. Fully description you can find there.
In the image below, I tried to clearly visualize links between the iCal file parameters and Outlook interface.
In the table below, I presented an analysis of the main parameters of iCal file.
I hope it will help someone.
Structure | Example | Description | Options | |||
BEGIN:VCALENDAR | ||||||
METHOD: | REQUEST | This property defines the iCalendar object method associated with the calendar object | REQUEST, REPLY, COUNTER | |||
PRODID: | Microsoft Exchange Server 2010 | This property specifies the identifier for the product that created the iCalendar object. | ||||
VERSION: | 2.0 | This property specifies the identifier corresponding to the highest version number or the minimum and maximum range of the iCalendar specification that is required in order to interpret the iCalendar object. | ||||
BEGIN:VTIMEZONE | Provide a grouping of component properties that defines a time zone. | |||||
TZID: | (UTC+03:00) Moscow\, St. Petersburg\, Volgograd | This property specifies the text value that uniquely identifies the "VTIMEZONE" calendar component. | ||||
BEGIN:STANDARD | Standard Time is also known as Winter Time | |||||
DTSTART: | 16010101T000000 | This property specifies when the calendar component begins. | ||||
TZOFFSETFROM: | +0400 | This property specifies the offset which is in use prior to this time zone observance. | ||||
TZOFFSETTO: | +0400 | This property specifies the offset which is in use in this time zone observance. | ||||
END:STANDARD | ||||||
BEGIN:DAYLIGHT | Daylight Saving Time is also known as Advanced Time, Summer Time, or Legal Time in certain countries | |||||
DTSTART: | 16010101T000000 | This property specifies when the calendar component begins. | ||||
TZOFFSETFROM: | +0400 | This property specifies the offset which is in use prior to this time zone observance. | ||||
TZOFFSETTO: | +0400 | This property specifies the offset which is in use in this time zone observance. | ||||
END:DAYLIGHT | ||||||
END:VTIMEZONE | ||||||
BEGIN:VEVENT | ||||||
ORGANIZER; | CN=Administrator:MAILTO:Administrator@domain.com | The property defines the organizer for a calendar component. | ||||
ATTENDEE; | ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=address@mail.ru:MAILTO:address@mail.ru | The property defines an "Attendee" within a calendar component. | ||||
DESCRIPTION; | LANGUAGE=en-US:Description\n | This property provides a more complete description of the calendar component, than that provided by the "SUMMARY" property. | ||||
COMMENT; | - | This property specifies non-processing information intended to provide a comment to the calendar user. | ||||
RRULE: | FREQ=YEARLY;UNTIL=20201209T200000Z;INTERVAL=1;BYMONTHDAY=10;BYMONTH=12 | This property defines a rule or repeating pattern for recurring events, to-dos, or time zone definitions. | UNTIL, COUNT, INTERVAL, BYSECOND, BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY, BYYEARDAY, BYWEEKNO, BYMONTH, BYSETPOS, WKST, FREQ | |||
UID: | 040000008200E0007FGH773920800000000327E94D1B18FD401000000000000000010000000A36FEBC0C360334FB4E7ECA0FCD7CB97 | This property defines the persistent, globally unique identifier for the calendar component. | ||||
SUMMARY; | LANGUAGE=en-US:iCal | Test #1 | This property defines a short summary or subject for the calendar component. | ||||
DTSTART; | TZID="(UTC+03:00) Moscow, St. Petersburg, Volgograd":20181210T090000 | Start date and time of the event | ||||
DTEND; | TZID="(UTC+03:00) Moscow, St. Petersburg, Volgograd":20181210T100000 | End date and time of the event | ||||
CLASS: | PUBLIC | This property defines the access classification for a calendar component. | PRIVATE, PUBLIC | |||
PRIORITY: | 5 | The property defines the relative priority for a calendar component. | ||||
DTSTAMP: | 20181209T112459Z | The property indicates the date/time that the instance of the iCalendar object was created. | ||||
TRANSP: | OPAQUE | This property defines whether an event is transparent or not to busy time searches. | OPAQUE, TRANSPARENT | |||
STATUS: | CONFIRMED | This property defines the overall status or confirmation for the calendar component. | CONFIRMED, TENTATIVE, CANCELLED | |||
SEQUENCE: | 0 | This property defines the revision sequence number of the calendar component within a sequence of revisions. | ||||
LOCATION; | LANGUAGE=en-US:Moscow | The property defines the intended venue for the activity defined by a calendar component. | ||||
X-MICROSOFT-CDO-APPT-SEQUENCE: | 0 | Specifies the sequence number of the meeting request | ||||
X-MICROSOFT-CDO-OWNERAPPTID: | 2116832050 | Provides an identifier for the appointment which is unique in the scope of the organizer's primary calendar | ||||
X-MICROSOFT-CDO-BUSYSTATUS: | TENTATIVE | Specifies the BUSY status of an appointment. | FREE, TENTATIVE, BUSY, OOF | |||
X-MICROSOFT-CDO-INTENDEDSTATUS: | BUSY | Specifies the busy status that the meeting organizer intends the attendee's copy of the meeting to have | ||||
X-MICROSOFT-CDO-ALLDAYEVENT: | FALSE | Specifies whether an appointment is intended to be treated as all-day. | TRUE, FALSE | |||
X-MICROSOFT-CDO-IMPORTANCE: | 1 | Specifies the importance of an appointment. | 0, 1, 2 | |||
X-MICROSOFT-CDO-INSTTYPE: | 0 | Indicates whether the VEVENT represents a non-recurring appointment, a recurring appointment, or an exception to a recurring appointment. | ||||
X-MICROSOFT-DONOTFORWARDMEETING: | FALSE | Specifies whether this meeting can be forwarded. | TRUE, FALSE | |||
X-MICROSOFT-DISALLOW-COUNTER: | FALSE | Specifies whether or not the organizer is willing to receive counter-proposals. | TRUE, FALSE | |||
X-MS-OLK-ORIGINALSTART; | - | Specifies the original start time of a meeting on a counter proposal. | ||||
X-MS-OLK-ORIGINALEND; | - | Specifies the original end time of a meeting on a counter proposal. | ||||
X-MICROSOFT-LOCATIONDISPLAYNAME: | Moscow | The property equal "LOCATION;" field. | ||||
X-MICROSOFT-LOCATIONSOURCE: | None | |||||
BEGIN:VALARM | Provide a grouping of component properties that define an alarm. | |||||
DESCRIPTION: | REMINDER | When the action is "DISPLAY", the alarm MUST also include a "DESCRIPTION" property, which contains the text to be displayed when the alarm is triggered. | ||||
TRIGGER; | RELATED=START:-PT15M | This property specifies when an alarm will trigger. | ||||
ACTION: | DISPLAY | This property defines the action to be invoked when an alarm is triggered. | AUDIO, DISPLAY, EMAIL, PROCEDURE | |||
END:VALARM | ||||||
END:VEVENT | ||||||
END:VCALENDAR |
No comments:
Post a Comment