可以通过iCal文件禁用iCalendar事件的闹钟/提醒吗?

问题描述 投票:0回答:5

快速概要:

我开发了一个项目管理系统,通过向销售代表发送 iCal 文件来帮助他们跟踪事件。目前一切都运行良好,但他们不希望弹出提醒。相反,他们只希望这些活动出现在他们的日历上。


注意事项:

不幸的是,让他们更改电子邮件客户端的设置并不是一个可接受的解决方案。


研究:

根据iCalendar规范,可以设置VALARM组件以便定义警报/提醒,但我似乎不知道如何一起禁用警报。

这似乎在 Outlook 2013 中有效,但我不知道为什么:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 15.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20130625T191929Z
DTEND;VALUE=DATE:20130627
DTSTAMP:20130625T174218Z
DTSTART;VALUE=DATE:20130626
LAST-MODIFIED:20130625T191929Z
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:test
TRANSP:TRANSPARENT
UID:040000008200E00074C5B7101A82E00800000000304147C0A971CE01000000000000000
    0100000004A6B73D79A177C4ABFF1E0DCAE7E273F
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//E
    N">\n<HTML>\n<HEAD>\n<META NAME="Generator" CONTENT="MS Exchange Server ve
    rsion 08.00.0681.000">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted f
    rom text/rtf format -->\n\n<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>\n\n</
    BODY>\n</HTML>
X-MICROSOFT-CDO-BUSYSTATUS:FREE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MS-OLK-AUTOFILLLOCATION:TRUE
END:VEVENT
END:VCALENDAR

我遗漏了一些明显的东西吗?

谢谢你。

outlook icalendar
5个回答
1
投票

如果我没记错的话,如果缺少 VALARM 部分,至少某些版本的 Outlook 会将提醒设置为默认值(15 分钟)。您可以将闹钟设置为遥远的将来的日期吗?


1
投票

如果我正确理解你的问题,接收端的客户端会自动添加一个(默认)警报,尽管原始 VEVENT 中没有指定警报。

iCalendar 或 iMIP/iTIP 中无法明确传达任何警报不应与事件关联的信息。就 iMIP/iTIP 而言,在您发送的 VEVENT 中添加警报实际上是一种不好的做法。毕竟,我心目中的最佳闹钟可能不是你的。

就您的示例而言,这可能是由于 TRANSP 属性设置为 TRANPARENT (您不关心它,因为它不会消耗您的时间),但这是一个相当疯狂的猜测。


1
投票

iCalendar 中无法指定 VALARM 组件并将其标记为“禁用”。它要么存在并且处于活动状态,要么根本不存在。

某些客户端(例如 Outlook)没有禁用警报(以及稍后能够重新启用它)的概念。据我所知,唯一支持禁用警报想法的客户端是 Notes,但可能还有其他客户端。

实现此目的的唯一方法是使用并非每个人都支持的 X- 属性,或者简单地删除有问题的 VALARM。

您可以考虑在系统中设置“发送警报”首选项,以便用户可以指示是否希望您发送警报。如果用户选择退出,则只需从您生成的内容中删除 VALARM 组件,然后再将其发送给他们即可。


0
投票

嗯,我也有同样的问题。我创建了一个 .ics 来根据 Excel 中的表格批量导入几十个日历保留。我没有定义 VALARM,但是当使用 mac 日历导入时,它本机继承了它并应用了我的默认警报。比较有和没有设置警报的事件,我发现所有事件都有 VALARM 块,但我标记为无提醒的所有事件都设置了完全相同的触发值。看起来将其值设置为 4/1/1976 的 00:55:45Z 是模棱两可的无警报。 BEGIN:VALARM X-WR-ALARMUID:##### TRIGGER;VALUE=DATE-TIME:19760401T005545Z X-APPLE-DEFAULT-ALARM:TRUE ACTION:NONE END:VALARM

这就是为什么 4/1/1976 哈哈。典型的编程方式,选择的随机日期或名称背后总是有一个原因。有点像Python的名字...
“创始人史蒂夫·乔布斯和史蒂夫·沃兹尼亚克于 1976 年 4 月 1 日创建了苹果电脑,[1] 并于 1977 年 1 月 3 日[2] 在加利福尼亚州库比蒂诺成立了公司。” - 维基百科


0
投票

这是我的第一个默认警报的代码(VALARM 不是造成差异的原因):

BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST (or CANCEL based on your application) BEGIN:VEVENT ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:[email protected] ORGANIZER;CN=\"Name of Organizer\":MAILTO:[email protected] DTSTAMP;TZID=America/Chicago:20240103T170800 DTSTART;TZID=America/Chicago:20240103T170800 DTEND;TZID=America/Chicago:20240103T180800 TRANSP:OPAQUE SEQUENCE:0 STATUS:CONFIRMED (or CANCELLED based on your application) UID:1234 DTSTAMP:20240104T080000Z SUMMARY:Event 1 DESCRIPTION:n/a LOCATION:Dome 1 PRIORITY:5 X-MICROSOFT-CDO-IMPORTANCE:1 CLASS:PUBLIC END:VEVENT END:VCALENDAR

有效的代码:(ATTENDEE;PARTSTAT=
DELEGATED

;CN='与会者姓名';[电子邮件受保护]:MAILTO:[电子邮件受保护]唯一的区别!) BEGIN:VCALENDAR VERSION:2.0 METHOD:REQUEST (or CANCEL based on your application) BEGIN:VEVENT ATTENDEE;PARTSTAT=*DELEGATED*;CN='Attendee Name';[email protected]:MAILTO:[email protected] ORGANIZER;CN=\"Name of Organizer\":MAILTO:[email protected] DTSTAMP;TZID=America/Chicago:20240103T170800 DTSTART;TZID=America/Chicago:20240103T170800 DTEND;TZID=America/Chicago:20240103T180800 TRANSP:OPAQUE SEQUENCE:0 STATUS:CONFIRMED (or CANCELLED based on your application) UID:1234 DTSTAMP:20240104T080000Z SUMMARY:Event 1 DESCRIPTION:n/a LOCATION:Dome 1 PRIORITY:5 X-MICROSOFT-CDO-IMPORTANCE:1 CLASS:PUBLIC END:VEVENT END:VCALENDAR

© www.soinside.com 2019 - 2024. All rights reserved.