Ical VALARM not registrering

2020-02-23 09:11发布

I've used the last couple of days creating an application that constructs an .ics file (ical)

It's coded in php, and the base functions work fine (timezones, Vevent's, and so on) but when i add VALARM's into those VEVENT's neither google calendar, nor Outlook 2010 add's the nofifications to their calendar's

a snippet of the ics file:

BEGIN:VEVENT
UID:f2f5672145d92702c71504ceccf77167@dyndns.org
DTSTAMP:20120420T174122Z
DTSTART;TZID=Europe/Berlin:20120416T081000
DTEND;TZID=Europe/Berlin:20120416T091000
LOCATION:A102 - Teori Frh.
SUMMARY:Hold: 2.B Kemi B
DESCRIPTION:Lærer: Jeppe Byrialsen Jensen (JBJ) Noter: Lab øvelser om alkoholers blandbarhed
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Hold: 2.B Kemi B
TRIGGER:-P0DT0H30M0S
END:VALARM
END:VEVENT

EDIT: It seems to work if you import it from a file, but sadly i need to import it from a website.

6条回答
乱世女痞
2楼-- · 2020-02-23 09:18

MS states that Outlook ignores several of the standard alarm settings, see: http://msdn.microsoft.com/en-us/library/ee624781(v=exchg.80).aspx

I found this not to be the case in Outlook 2013. I removed:

ACTION:DISPLAY DESCRIPTION:Reminder

and the alarm works for me in Outlook 2013.

Appears to be a case of MS Outlook not following the RFC5545 standard, nor following their own implementation standard.

查看更多
狗以群分
3楼-- · 2020-02-23 09:22

If someone still got problem with this. Ics with alarm 15 min before event. Tested in outlook 2013.

BEGIN:VCALENDAR
PRODID:-//MyTestProject//EN
VERSION:2.0
BEGIN:VEVENT
SUMMARY;LANGUAGE=sv-se:Room
UID:1af3ef4f-5997-4cf0-bde2-1f8705cfaef1
SEQUENCE:0
BEGIN:VALARM
TRIGGER:-PT15M
DESCRIPTION:Booking
ACTION:DISPLAY
END:VALARM  
CLASS:PUBLIC
DTSTAMP:20190221T132418
DTSTART:20190423T104000
DTEND:20190423T111000  
LOCATION:USA
END:VEVENT
END:VCALENDAR

Also some c# code for reference. DateTime etc.

var icalStringbuilder = new StringBuilder();
    icalStringbuilder.AppendLine("BEGIN:VCALENDAR");
    icalStringbuilder.AppendLine("PRODID:-//MyTestProject//EN");
    icalStringbuilder.AppendLine("VERSION:2.0");

    icalStringbuilder.AppendLine("BEGIN:VEVENT");
    icalStringbuilder.AppendLine("SUMMARY;LANGUAGE=sv-se:Room");
    icalStringbuilder.AppendLine("UID:" + Guid.NewGuid());
    icalStringbuilder.AppendLine("SEQUENCE:0");
    icalStringbuilder.AppendLine("BEGIN:VALARM");
    icalStringbuilder.AppendLine("TRIGGER:-PT15M");
    icalStringbuilder.AppendLine("DESCRIPTION:Booking");
    icalStringbuilder.AppendLine("ACTION:DISPLAY");
    icalStringbuilder.AppendLine("END:VALARM");
    icalStringbuilder.AppendLine("CLASS:PUBLIC");
    icalStringbuilder.AppendLine($"DTSTAMP:{DateTime.UtcNow:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine($"DTSTART:{starttimeDataTimeFormatVariable:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine($"DTEND:{endtimeDataTimeFormatVariable:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine("LOCATION:USA");
    icalStringbuilder.AppendLine("END:VEVENT");
    icalStringbuilder.AppendLine("END:VCALENDAR");
查看更多
姐就是有狂的资本
4楼-- · 2020-02-23 09:22

We had the same problem, but found that example code snippets which use \n at the end of each line need to use \r\n instead.

The iCal validator at http://severinghaus.org/projects/icv/ highlighted this as a warning, despite the iCal files working except for the reminder alarm not being set in Outlook 2010.

Here is an example iCal file which works exactly as expected when opened in Outlook 2010, including setting the reminder to 1 hour (as long as the line breaks are \r\n):

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Keeble Smith//NONSGML GETONCOURT.COM//EN
BEGIN:VEVENT
DTSTART:20130514T190000Z
DTEND:20130514T194000Z
LOCATION:Court 2\, Demo Squash Club
DESCRIPTION:View this court booking on getoncourt.com: http://democlub.getoncourt.com/booking-details/dmo3106
SUMMARY:Squash court booking for John Smith - DMO3106
BEGIN:VALARM
TRIGGER:-PT60M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

Note also the escaped special characters. Ensure you escape the following in TEXT values (not the EOL instance though):

\  to  \\
;  to  \;
,  to  \,
\n to  \\n
查看更多
做个烂人
5楼-- · 2020-02-23 09:28

I'm having the same problem. I exported my calendars created in Google Calendar and the VALARM section looks exactly the same as those I exported. I have a feeling it's an issue on Google's side. I've seen this questions asked 2 or 3 more times on Stack Overflow without an answer.

查看更多
聊天终结者
6楼-- · 2020-02-23 09:29

could you clarify what you mean by "not registering". For instance I copied your code and imported it in google calendar and it clearly shows Reminder : pop-up 30mn in the property of the event.

Is it that you expect to see an item in the calendar where the alarm should take place. I believe this is not what the RFC5545 implies as a behaviour for VALARM.

查看更多
霸刀☆藐视天下
7楼-- · 2020-02-23 09:37

For what it's worth, this is not a bug, per se, but rather a choice the calendar implementers choose that is compatible with the RFC. See http://sourceforge.net/p/dday-ical/discussion/656447/thread/01111137#23c5

I think the fear is that if the action is audio, then the client has to run the attached file (presumably a sound file) when the trigger event occurs. There's no guarantee, though, that the sound file is really a sound file and not something more nefarious.

Now, why it ignores valarms with the action of display, I do not know.

查看更多
登录 后发表回答