Ical VALARM没有注册

问题描述 投票:13回答:6

我在最近几天创建了一个构建.ics文件的应用程序(ical)

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

一个ics文件的片段:

BEGIN:VEVENT
UID:[email protected]
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

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

php calendar icalendar
6个回答
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

2
投票

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


1
投票

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

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


1
投票

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

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

行动:显示说明:提醒

并且Outlook 2013中的警报适用于我。

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


0
投票

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

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

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


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#代码供参考。日期时间等

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");
© www.soinside.com 2019 - 2024. All rights reserved.