Ical VALARM没有注册

时间:2012-04-21 13:32:29

标签: php calendar icalendar

我使用过去几天创建构建.ics文件的应用程序(ical)

它是用php编写的,基本功能运行正常(时区,Vevent等),但是当我将VALARM添加到那些VEVENT既没有谷歌日历,也没有Outlook 2010添加其日历的nofifications

ics文件的片段:

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

编辑: 如果你从文件中导入它似乎有效,但遗憾的是我需要从网站导入它。

6 个答案:

答案 0 :(得分:6)

我们遇到了同样的问题,但发现在每行末尾使用\n的示例代码段需要使用\r\n代替。

http://severinghaus.org/projects/icv/处的iCal验证程序将此作为警告突出显示,尽管iCal文件正常工作,但Outlook 2010中未设置提醒警报。

以下是一个示例iCal文件,在Outlook 2010中打开时完全按预期工作,包括将提醒设置为1小时(只要换行符为\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

还请注意转义的特殊字符。确保在TEXT值中转义以下内容(但不是EOL实例):

\  to  \\
;  to  \;
,  to  \,
\n to  \\n

答案 1 :(得分:2)

我遇到了同样的问题。我导出了在Google日历中创建的日历,VALARM部分与我导出的部分完全相同。我觉得这是谷歌方面的一个问题。我已经看到这些问题在Stack Overflow上被问了2到3次而没有答案。

答案 2 :(得分:1)

你可以通过“不注册”澄清你的意思吗?例如,我复制了您的代码并将其导入谷歌日历中,并清楚地显示 提醒:弹出30mn 在事件的财产。

您是否希望在日历中看到应发生警报的项目。我认为这不是RFC5545对VALARM的行为所暗示的。

答案 3 :(得分:1)

MS声明Outlook忽略了几个标准警报设置,请参阅:http://msdn.microsoft.com/en-us/library/ee624781(v=exchg.80).aspx

我发现在Outlook 2013中并非如此。我删除了:

ACTION:DISPLAY 说明:提醒

此警报在Outlook 2013中适用于我。

似乎是MS Outlook没有遵循RFC5545标准,也没有遵循自己的实施标准。

答案 4 :(得分:0)

对于它的价值,这本身并不是一个错误,而是日历实施者选择的与RFC兼容的选择。见http://sourceforge.net/p/dday-ical/discussion/656447/thread/01111137#23c5

我认为担心的是,如果动作是音频,那么当触发事件发生时,客户端必须运行附加文件(可能是声音文件)。但是,不能保证声音文件真的是一个声音文件而不是更邪恶的东西。

现在,为什么它会忽略带有显示动作的标量,我不知道。

答案 5 :(得分:0)

如果仍有问题。事件发生前15分钟带有警报的集成电路。在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

还有一些C#代码供参考。 DateTime等。

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");