Why arent titles and locations displaying in my .ics file? - icalendar

I am building an .ics file in my web app that emails clients with events.
The ics contents is as follows:
BEGIN:VCALENDAR
BEGIN:VEVENT
UID:a0F8E00000oRFD1UAO
DTSTART:20200409T100000
DTEND:20200409T110000
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
SUMMARY:VNI-073
LOCATION:Location 1, Tower Hill, , United Kingdom
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:a0F8E00000oRFD2UAO
DTSTART:20200409T113000
DTEND:20200409T123000
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
SUMMARY:VNI-074
LOCATION: Location 2, Buckingham Place, SW1E, United Kingdom
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:a0F8E00000oRFD3UAO
DTSTART:20200409T130000
DTEND:20200409T140000
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
SUMMARY:VNI-075
LOCATION:Location 3, 170 Piccadilly, W1J 9EU, United Kingdom
END:VALARM
END:VEVENT
END:VCALENDAR
The title of the event and the location are not added to my calendar entry (see screenshot):

Both your summary and location properties are embedded in the VALARM component (i.e. between the BEGIN:VALARM and END:VALARM) instead of being properties at the VEVENT level
Concretely, instead of
BEGIN:VEVENT
UID:a0F8E00000oRFD1UAO
DTSTART:20200409T100000
DTEND:20200409T110000
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
SUMMARY:VNI-073
LOCATION:Location 1, Tower Hill, , United Kingdom
END:VALARM
END:VEVENT
you want to do
BEGIN:VEVENT
UID:a0F8E00000oRFD1UAO
DTSTART:20200409T100000
DTEND:20200409T110000
SUMMARY:VNI-073
LOCATION:Location 1, Tower Hill, , United Kingdom
BEGIN:VALARM
TRIGGER:-PT1H
ACTION:DISPLAY
END:VALARM
END:VEVENT

Related

edited ics file does not set an event on phone calendar automatically

I am trying to edit a file that a transport company sent me which automatically set my trip information in my calendar . I want to edit this file so that it can reminds me other events but, when i change the date and send it to myself or another email adress, it doesn't set the event automatically anymore. What is the problem?
Even sending the same file, not even changing the date, gives the same problem.
i tried to read this guide https://www.rfc-editor.org/rfc/rfc5545#page-165 but have not found anything...
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:d0b7191f-b3af-419b-af93-b795f0dde86
PRIORITY:1
DTSTART:20190830T142500
DTEND:20190830T173800
LOCATION:Torino Porta Nuova
DESCRIPTION:Torino Porta Nuova-Albenga;
Treno: Regionale Veloce 10113, pa
rtenza da Torino Porta Nuova Ore: 14:25; arrivo a Albenga
Ore: 17:38
Codi
ce Biglietto: 120303025;
ORGANIZER:CN=ORGANIZER:mailto:webmaster#trenitalia.it
SUMMARY:Viaggio Torino Porta Nuova-Albenga, Treno Regionale
Veloce 10113,
Codice Biglietto 120303025 ,
ATTENDEE;ROLE=REQ-PARTICIPANT;CN=BUYER:mailto:MY_EMAIL_ADRESS_REMOVED_FOR_PRIVACY
ATTENDEE;ROLE=REQ-PARTICIPANT;CN=TRAVELLER:MY_EMAIL_ADRESS_REMOVED_FOR_PRIVACY
END:VEVENT
END:VCALENDAR
I would really appreciate some help.
SOLVED!! the voice "organizer" must be the mail who send the event and you have to write the mail of the receivers to the "attedee" voice (i don't know yet if this is strictly necessary)

Outlook not displaying ical RSVP buttons in email body

Outlook 2016 or Outlook 365 is not recognizing attached ics file. The rsvp buttons are not showing in the email body but it does display correctly in gmail. I am able to download the ics file and import it into outlook.
BEGIN:VCALENDAR
PRODID:-//AroFlo PtyLtd
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
UID:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY2hlZHVsZV9pZCI6MCwic2NoZWRUe
XBlIjoiZXZlbnQiLCJncm91cGlkIjoxLCJvcmdfaWQiOjEzNywiU1ZBUk1DT05UUk9MSUQiOjM
xMTQ5LCJ1c2VyX2lkIjo3MTk1LCJ3b3JrcmVxdWVzdF9pZCI6MCwiZXZlbnRfaWQiOjU3MTUsI
mFsbG9jYXRpb25faWQiOjAsImNvbnRyb2xsaW5nb3JnaWQiOjEzNywidGVtcGxhdGVfaWQiOjA
sInRzX2dyb3VwX2lkIjowfQ.lVNWzJe1VbKsxdRJ2kCpLFUo2Wb1CqJ5Eom1nTgyewc
DTSTAMP:20180513T230757Z
DTSTART:20180514T050000Z
DTEND:20180514T073000Z
ORGANIZER;CN=Bri-Tech:mailto:test#email.com
CREATED:20180513T230757Z
LAST-MODIFIED:20180513T230757Z
SEQUENCE:0
SUMMARY:test event
DESCRIPTION:
X-ALT-DESC;FMTTYPE=text/html:
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP
=TRUE;CN=test user;X-NUM-GUESTS=0:mailto:test1#test.com
PRIORITY:5
CLASS:PUBLIC
CATEGORIES:AroFlo, event
END:VEVENT
END:VCALENDAR
Here is how the MIME email type is constructed
var m = new mail();
m.setSubject( 'event' );
m.setTo( test#email.com );
m.setFrom( "noreply#email.com" );
m.addPart( type="text/calendar", body="#icalFile#");
m.addParam( type="text/calendar", file="invite.ics", content="#icalFile#");
m.send();
Turns out the email MIME type wasn't added correctly. The code below now displays the RSVP buttons correctly.
In ColdFusion addParam() type can set more than one parameter.
m.addParam( type="text/calendar; charset=utf-8; method=REQUEST;"
, file="invite.ics"
, content="#icalFile#");

unable to delete event on google calendar using ics file

i create event on google calendar using ics file successfully but when i'm trying to delete/cancel this event using ics file its not working.
---Create Ics----
BEGIN:VCALENDAR
VERSION:2.0
METHOD:REQUEST
PRODID:-//ClaryIcon/NONSGML OneScreen//EN
BEGIN:VEVENT
DTSTART:20180222T145000Z
DTEND:20180222T145000Z
SUMMARY:testttt
DESCRIPTION:Meeting Invite from OneScreen Hype\nMeeting Owner: ali\nSip Address: Not Supported\nDail in: \n\n
UID:5a8d8747eebadc109c908e11
DTSTAMP:20180221T145048Z
ORGANIZER;CN=ali:mailto:noreply-hype#onescreensolutions.com
END:VEVENT
END:VCALENDAR
---Cancel Ics----
BEGIN:VCALENDAR
VERSION:2.0
METHOD:CANCEL
PRODID:-//ClaryIcon/NONSGML OneScreen//EN
BEGIN:VEVENT
DTSTART:20180221T145152Z
DTEND:20180221T145152Z
SUMMARY:testttt
DESCRIPTION:
UID:5a8d8747eebadc109c908e11
DTSTAMP:20180221T145152Z
ORGANIZER;CN=ali:mailto:noreply-hype#onescreensolutions.com
END:VEVENT
END:VCALENDAR
mainly i use uid to identity specific event
Try adding status:cancelled as per the RFC5545 spec
https://www.rfc-editor.org/rfc/rfc5545#page-93
Not sure but you may also need a SEQUENCE (check spec for exact syntax ) to indicate which is latest modification.

Changes to recurring allday events not sent from iCal

I'm running a sabre CalDAV server and I'm using iCal on Yosemite as a client. Now, I create an allday recurring event in iCal and use the Charles Proxy to check the body of the request, that is sent from iCal. Creating the event it sends correct data:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.10.1//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
CREATED:20160404T203206Z
UID:14C144D6-A872-4D24-91C0-783A9979BB9E
RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1
DTEND;VALUE=DATE:20160409
TRANSP:TRANSPARENT
SUMMARY:Repeat
DTSTART;VALUE=DATE:20160404
DTSTAMP:20160404T203206Z
SEQUENCE:0
BEGIN:VALARM
X-WR-ALARMUID:A807798B-DE16-4E62-86E9-C204A2B80F76
UID:A807798B-DE16-4E62-86E9-C204A2B80F76
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
ACTION:NONE
END:VALARM
END:VEVENT
END:VCALENDAR
The response:
HTTP/1.1 201 Created
Date: Mon, 04 Apr 2016 20:32:19 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1j PHP/5.6.3 mod_perl/2.0.8-dev Perl/v5.16.3
X-Powered-By: PHP/5.6.3
X-Sabre-Version: 3.0.8
Content-Length: 0
ETag: "55c6a353f278653fdd61387395c274df"
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
But if I change a single occurrence of the repeating event and choose to only apply the changes to this occurrence, iCal sends the old calendar-data back to the server without any changes. If I apply the changes to all occurrences, the correct data is sent. If I choose to only apply the changes to future events, it correctly alters the old event and creates a new event for the future occurrences. But then again, no changes on a single occurrence are sent to the server.
This is only happening for allday events. Timed events are working just fine. It also doesn't matter if I create the rrule with "count" or by "until".
If I change a single occurrence and export my calendar from iCal I also get the correct calendar-data, although this data is not sent to the server (different event):
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
X-WR-CALNAME:XXX
X-WR-CALDESC:
X-APPLE-CALENDAR-COLOR:#FF9500
X-WR-TIMEZONE:Europe/Berlin
CALSCALE:GREGORIAN
BEGIN:VEVENT
CREATED:20160405T063102Z
UID:68C23C1E-371C-4799-9139-04F0F8FE6F88
RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=4
DTEND;VALUE=DATE:20160409
TRANSP:TRANSPARENTSUMMARY:hhhhh
DTSTART;VALUE=DATE:20160404
DTSTAMP:20160405T063102Z
SEQUENCE:0
END:VEVENT
BEGIN:VEVENT
CREATED:20160405T063102Z
UID:68C23C1E-371C-4799-9139-04F0F8FE6F88
DTEND;VALUE=DATE:20160421
TRANSP:TRANSPARENT
SUMMARY:hhhhh
DTSTART;VALUE=DATE:20160418
DTSTAMP:20160405T063102Z
SEQUENCE:0
RECURRENCE-ID;VALUE=DATE:20160418
END:VEVENT
END:VCALENDAR
There, I can finally see the vevent with a correct recurrence-id.
Any ideas? Anyone else ran into a similar problem? I have no idea, what could be causing this...
Thanks in advance!
Okay, this must have been a calendar bug. After enabling debugging I found this error:
Apr 6 12:20:11 XXX.local CalendarAgent[229]: [com.apple.calendar.store.log.ICS] [CaliCalTranslator: Event 97323C3B-753D-46E5-830E-E182BEAA5E0D has invalid instance on date 2016-04-11 00:00:00 +0000. Filtering]
I updated calendar from Version 8.0 (2026) to Version 8.0 (2034.9) and now everything is working as expected.

iCalendar creation: RFC 5546 explanation

I am facing several issues related to the creation of an ICS file which has to be compatible with several clients, especially iOS, Gmail, Outlook, Android and Windows Phone. Googling around, I found out the proposed standard from 2009, aka RFC5546. I read through this document and found a point which is very interesting and could potentially solve my issue. Section Methods for VEVENT Calendar Components explains the distinctions between methods REQUEST and PUBLISH. But, there are a couple of points which are not really clear to me:
What should PUBLISH do? Should it add a new calendar? Should it create a new calendar (like in Outlook or iOS) or should add the event in the existing user calendar (like in Gmail or Lightning)? EDIT: note the calendar as a file attached to an e-mail.
Can PUBLISH contain more than one event? From the document and logically, yes, but Gmail then adds only the first event of the list. Lightning adds only one event and then gives a 804a0004 error.
How should REQUEST work? The document states: VEVENT | 1+ | All components MUST have the same UID. which means a calendar may have more than 1 VEVENT but they must have the same UID. Then, how can I client distinguish between those events? And in fact no client I tried is able to distinguish the events generated with the same UID, but they add only the one with highest SEQUENCE. Logically, I don't want to send more than one event per invitation, but the RFC allows me to do that (and in my case study I want to), so how?
With REQUEST, forgetting the statement VEVENT | 1+ | All components MUST have the same UID., so providing a unique UID to each event in the ICS file, Gmail and iOS add all the events contained in the file, while Lightning and Outlook add only the first one. Is there a way to pursue this path or since it should not be allowed I should find another way?
Basically, how do you suggest to proceed to add more events with a single ICS file to the users' calendar for the platforms I mentioned?
Sample ICS for PUBLISH:
BEGIN:VCALENDAR
PRODID:-//prodid//product//IT
VERSION:2.0
METHOD:PUBLISH
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:uid1
DTSTAMP:20130515T121437Z
DTSTART:20130619T205000
DTEND:20130619T215000
DESCRIPTION:Desc 1
SUMMARY:Sum 1
LOCATION:location
ORGANIZER:mailto:organizer#somedomain
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
UID:uid2
DTSTAMP:20130515T121437Z
DTSTART:20130719T205000
DTEND:20130719T215000
DESCRIPTION:Desc 2
SUMMARY:Sum 2
LOCATION:location
ORGANIZER:mailto:organizer#somedomain
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
Sample for REQUEST:
BEGIN:VCALENDAR
PRODID:-//prodid//product//IT
VERSION:2.0
METHOD:REQUEST
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:uid1
DTSTAMP:20130515T121437Z
DTSTART:20130619T205000
DTEND:20130619T215000
DESCRIPTION:Desc 1
SUMMARY:Sum 1
LOCATION:location
ORGANIZER:mailto:organizer#somedomain
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:attendee#email
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
UID:uid2
DTSTAMP:20130515T121437Z
DTSTART:20130719T205000
DTEND:20130719T215000
DESCRIPTION:Desc 2
SUMMARY:Sum 2
LOCATION:location
ORGANIZER:mailto:organizer#somedomain
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:attendee#email
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
About 1) it is not clear how you communicate the events to the client: is it via iMIP (email) or through an HTTP URL ? In any case, there is no right answer to your question: iTIP is about transport of iCalendar data.
About 2) yes, you can have multiple events in a PUBLISH stream
About 3):
iCalendar has a notion of exception for recurring meetings. Those exceptions are represented by a VEVENT with the same UID and a RECURRENCE-ID indicating the particular instance that shall be considered an exception.
As a consequence, a REQUEST can only be used to transmit a single event (only one UID) but this event itself might be expressed as a set of VEVENT: one for the master (e.g. meeting every friday at 10:00) and one for each exception (e.g. except on Friday 12/12 where it will take place at 09:00).
See for example the last event in https://www.rfc-editor.org/rfc/rfc5546#section-4.4.8