How can I add meeting url to .ics file - icalendar

Here is how I tried... I used URL property but in calendar(Microsoft Calendar) it is not reflected
BEGIN:VCALENDAR
VERSION:2.0
PRODID://Elara/lofy/tanare/delp/314sum2015//
BEGIN:VEVENT
UID:uid1#example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe#example.com
DTSTART;TZID=Asia/Kolkata:20201028T170000
DTEND;TZID=Asia/Kolkata:20201028T173000
SUMMARY:ION-Test
DESCRIPTION:Meeting to provide technical review for "Phoenix" design.\nHappy Face Conference Room. Phoenix design team
URL:https://www.webex.com/
END:VEVENT
END:VCALENDAR

The specification describes the URL property in general terms. https://www.rfc-editor.org/rfc/rfc5545#section-3.8.4.6
I suggest check the various meeting scheduling tools and go with that. Arguably the meeting URL is the 'location'. For example ZOOM uses the LOCATION property. https://www.rfc-editor.org/rfc/rfc5545#section-3.8.1.7 EG
LOCATION:https://us04web.zoom.us/j/72974416824?pwd=N2ZNVzJxejR6a1p3TWFSU1U1
eUZwQT09
But then ZOOM also puts html in the DESCRIPTION which is not supported by all applications and not addressed by the specification.

Unfortunately the the DESCRIPTION section is intended to be plain text, so it is not intended to have html url hyperlink. (See the RFC5545 specification)

The URL property is not an arbitrary URL. It's the URL of the event itself. From the spec: https://www.rfc-editor.org/rfc/rfc5545#section-3.8.4.6
This property may be used in a calendar component to convey a location where a more dynamic rendition of the calendar information associated with the calendar component can be found.
If you want to associate a URL with the event, you'll have to put it in the description or location or in an X-property.

Related

.ics File: VALARM for an allday event dosenĀ“t work

I need an ICS-File for a allday event which includes a reminder, one day before the event takes plays.
The ICS-File generates the event without any problem. But the reminder is always set on 18hours, even if the trigger is set on e.g. "-PT15M"....
Can anybody help?
ICS Testfile:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:Karabulut
BEGIN:VEVENT
CATEGORIES:Planing
DTSTART; VALUE=DATE:20200129
SUMMARY: Revenue
METHOD:PUBLISH
CLASS:PUBILC
BEGIN:VCALENDAR
BEGIN:VALARM
TRIGGER:-PT1D
ACTION:DISPLAY
DESCRIPTION:REMINDER
END:VALARM
END:VCALENDAR
END:VEVENT
END:VCALENDAR
This may be the expected behaviour by the receiving application. The 18 hours may be the default set by you or the application.
Many applications do ot let ics files create alarms. I know I would not want the ics file to be creating alarms & notifications for me!
See also
Ical VALARM not registrering and
Sent email with iCal to outlook with valarm reminder and the links in the answers.
The RFC5545 specification See https://www.rfc-editor.org/rfc/rfc5545#page-75 says:
Note: Implementations should carefully consider whether they
accept alarm components from untrusted sources, e.g., when
importing calendar objects from external sources. One
reasonable policy is to always ignore alarm components that the
calendar user has not set herself, or at least ask for
confirmation in such a case.

Add & Delete an appointment / calendar entry via .ics in Outlook Calendar

PART 1
I am working on an .ics file which generates an event/appointment in Outlook:
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
STATUS:TENTATIVE
.....
..........
DESCRIPTION:Absence Request
SEQUENCE:0
END:VEVENT
END:VCALENDAR
The user gets the email with the .ics file attached.
When opened, the user gets the following details:
Screenshot of the ics file
Question:
How to disable the .ics so it does not allow to make multiple entries when the exact appointment (date) does exist?
PART 2
Is it also possible to delete an entry from the Outlook Calendar via the .ics file? I have tried with the following code but it does not work:
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
METHOD:CANCEL
STATUS:CANCELLED
.....
..........
DESCRIPTION:Absence Request
SEQUENCE:1
END:VEVENT
END:VCALENDAR
The cancel meeting button responds but does not actually remove the entry from the Calendar. Yes, the user can go manually and delete it from the calendar - which works fine but thought there may be an option to do via the .ics file.
I also read about the UID having to match the event but this is where I am also lacking of expertise of how to pull it from there.
Any ideas or suggestions ?
Bucki, This is the difference between importing events and subscribing to a calendar (even one with one event only).
When people click on an actual ics file, calendar apps will 'import' the event/s. I think these days some have the smarts to check the UID and not duplicate but many do not. It depends on the app how well they attempt to detect a duplicate. Strictly speaking one is just importing the data into one's own event in a calendar which one can then edit as one pleases.
If an ics URL is sent (not the actual file) most apps will 'subscribe' to the URL. IE: they will create a separate calendar in the individuals calendar app. The app will check for updates on that ics url regularly. In that case the UID and SEQUENCE can be used to indicate a later update. These are not editable by the user.

icalendar Event in QR Code

I am generating a QR Code in InDesign to include in flyers, so that interested people can quickly scan the code and add the event to their calendar. The idea is if they can be reminded of the event, we get more people in the door.
So far, everything is working great...except: I don't know how to format the icalendar event such that I receive RSVP responses from people who scan the code. If the event had to change for whatever reason, I'd like to be able to email the people who scanned it. As I have it structured now, when I test scan the QR code my email address receives an invitation and not the expected RSVP response saying the scanner is attending. I have read the specifications for icalendar, but have come away just as confused because the specs are surprisingly short and thin.
Current ical event:
BEGIN:VEVENT
SUMMARY:Event Title
LOCATION:Venue Name\, Venue Address
DESCRIPTION:Event description
DTSTART:20171115T180000
DTEND:20171115T190000
URL:http://webaddress.org
ATTENDEE;RSVP=TRUE:mailto:myemail#address.org
BEGIN:VALARM
TRIGGER;RELATED=START:-PT120M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
It's the ATTENDEE line that I can't figure out. The spec makes it sound like that would cause the person responding to automatically send an acceptance to the email address that follows, which is mine as the event organizer. That's not what happens, so is there a different component to use to get what I desire?
Thanks!
This is an application concern, not anything to do with the iCalendar spec. I'll drive through your ical text quickly, though:
Your RSVP request is formatted fine.
You don't need the URL line.
You need VERSION:2.0. Some applications (like Apple's Calendar app) can't parse ical text without it.
You need a PRODID.
Depending on the location(s) of your attendees relative to the venue, it might make sense to specify a TZID, or (since it's not a recurring event) express your start and end time in UTC.
In general, you should use an iCalendar library like ical.net or ical4j to build your calendar events. They'll keep you from 1) needing to know the spec, which probably isn't a good use of your time and 2) shooting yourself in the foot because of #1.
The spec makes it sound like that would cause the person responding to automatically send an acceptance to the email address that follows, which is mine as the event organizer.
This is magical thinking: how would that happen? It would have to be handled by an application or operating system. Something that would "know how" to 1) understand ical, and 2) send a web request or an email or do something else.
The spec allows the organizer to indicate a preference with respect to RSVPs, that's all:
Purpose: To specify whether there is an expectation of a favor of a reply from the calendar user specified by the property value.
It's up to the implementer of the software to determine what that means in the application layer: send a web request, send an email, ignore it, etc.
Presumably scanning the QR code does something. How is the ical text loaded? How should it be loaded? By the user's mobile mail client? By the mobile calendar application? Something else? You need to figure out what THAT action should be, and figure out how to trigger or handle it.
My reading of the RFC suggests that a possibly better interpretation of this line:
ATTENDEE;RSVP=TRUE:myemail#address.org
is that you have added a single attendee, that attendee's email address is myemail#address.org, and that attendee is required to RSVP.
As a result, when you add this calendar event to your calendar, the calendar evaluates it and says: "Wait, we haven't even invited myemail#address.org." and then does so.
I actually wouldn't have expected that behavior, and would tend to see it as a bug (side-effect behavior that the user would have no reason to suspect, and which would potentially leak information (like their email address)).
It may help to think of this as you specifying the calendar entry as it will appear on their calendar, as if they created it. As such, they aren't an attendee, they are the organizer.
I think you need to specify a METHOD:REQUEST line per the RFC: https://www.rfc-editor.org/rfc/rfc5545#section-3.7.2 and IETF draft: https://datatracker.ietf.org/doc/html/draft-ietf-calsify-2446bis-09#section-3.2.2
This should change the entry from a static representation of an entry in your calendar to an invitation. You will probably need a few more things per the IETF doc (like a UID).

What to return with a Http 406?

I have reviewed RFC2616. For a "406" it states:
Unless it was a HEAD request, the response SHOULD include an entity containing a list of available entity characteristics and location(s) from which the user or user agent can choose the one most appropriate. The entity format is specified by the media type given in the Content-Type header field. Depending upon the format and the capabilities of the user agent, selection of the most appropriate choice MAY be performed automatically.
But, I'm a little confused about what to return and how. For example, if I have a RESTful'ish resource that can only return JSON, and the accept header specifics that the caller only wants XML, how should I tell him that I can only return JSON?
I think it's safe to respond with a list of the available content types using the Content-Type the resource provides - in your case Json.
It's kind of a "best-effort" approach of the service and it's the responsibility of the client to react to the problem or abandon the request.
For example if you travel abroad (i.e. to Germany) and go to the local butcher. You only speak English and the butcher only speaks German and French. You ask in English for Beef.
Because the butcher doesn't understand you, he responds in German and French asking you to change the language of your request ("Sprechen Sie deutsch?", "Parlez vous Francais?").
Now it's your choice to:
- learn German or French ("Rindfleisch", "Boef")
- try another common language (handsigns, primeval sounds)
- leave and search for a butcher that understands English

Specifying name, description and refresh interval in iCal (ics) format

I'm creating a iCal subscription calendar which is all working as expected; except I can't seem to specify seemingly basic things such as a default name to suggest to the client for the calendar, a description, and how often it should refresh.
I did find this specification revision: https://datatracker.ietf.org/doc/html/draft-daboo-icalendar-extensions-06
It does suggest that I can simply pass in the fields I want. Having done this and with the top of the ics file looking like this:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company//NONSGML Event Calendar//EN
URL:http://my.calendar/url
NAME:My Calendar Name
DESCRIPTION:A description of my calendar
TIMEZONE-ID:Europe/London
REFRESH-INTERVAL;VALUE=DURATION:P1D
COLOR:34:50:105
CALSCALE:GREGORIAN
METHOD:PUBLISH
I'm simply finding that whilst no device/app that I've tried rejects the calendar, they are all ignoring the properties. I've used Outlook 2010, an iPhone on iOS 6, and Google Calendar. Outlook claims to respect some sort of refresh interval in the file, but when I subscribe my calendar - it says it's unspecified.
So the question is are these properties supported, or do I need to specify them as something else for each different client, or am I just plain out of luck?
It turns out the answer was hiding in plain sight. The properties above are a draft proposal at the moment and unsupported by anything I tried. It's probably a good bet to include them in your calendar for the future - but for it to work now as well, do it like this:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company//NONSGML Event Calendar//EN
URL:http://my.calendar/url
NAME:My Calendar Name
X-WR-CALNAME:My Calendar Name
DESCRIPTION:A description of my calendar
X-WR-CALDESC:A description of my calendar
TIMEZONE-ID:Europe/London
X-WR-TIMEZONE:Europe/London
REFRESH-INTERVAL;VALUE=DURATION:PT12H
X-PUBLISHED-TTL:PT12H
COLOR:34:50:105
CALSCALE:GREGORIAN
METHOD:PUBLISH
The actual working properties at the moment being:
X-WR-CALNAME
X-WR-CALDESC
X-WR-TIMEZONE
X-PUBLISHED-TTL
For those using rails gem 'iCalendar' with version 2.3.0. Below is the solution to set custom properties like calendar name.
calendar = Icalendar::Calendar.new
calendar.append_custom_property("X-WR-CALNAME","My Calendar")
Another option with the icalendar Ruby gem:
calendar = Icalendar::Calendar.new
calendar.x_wr_calname = 'Calendar Name'