Network Working Group                                     S. Silverberg
Request for Comments: 2446                                    Microsoft
Category: Standards Track                                    S. Mansour
                                                               Netscape
                                                              F. Dawson
                                                                  Lotus
                                                              R. Hopson
                                                        ON Technologies
                                                          November 1998
        
Network Working Group                                     S. Silverberg
Request for Comments: 2446                                    Microsoft
Category: Standards Track                                    S. Mansour
                                                               Netscape
                                                              F. Dawson
                                                                  Lotus
                                                              R. Hopson
                                                        ON Technologies
                                                          November 1998
        

iCalendar Transport-Independent Interoperability Protocol (iTIP) Scheduling Events, BusyTime, To-dos and Journal Entries

iCalendar传输独立互操作性协议(iTIP)调度事件、忙碌时间、待办事项和日志条目

Status of this Memo

本备忘录的状况

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (1998). All Rights Reserved.

版权所有(C)互联网协会(1998年)。版权所有。

Abstract

摘要

This document specifies how calendaring systems use iCalendar objects to interoperate with other calendar systems. It does so in a general way so as to allow multiple methods of communication between systems. Subsequent documents specify interoperable methods of communications between systems that use this protocol.

本文档指定日历系统如何使用iCalendar对象与其他日历系统进行互操作。它以一般方式这样做,以便允许系统之间的多种通信方法。后续文档指定了使用此协议的系统之间的可互操作通信方法。

The document outlines a model for calendar exchange that defines both static and dynamic event, to-do, journal and free/busy objects. Static objects are used to transmit information from one entity to another without the expectation of continuity or referential integrity with the original item. Dynamic objects are a superset of static objects and will gracefully degrade to their static counterparts for clients that only support static objects.

该文档概述了日历交换的模型,该模型定义了静态和动态事件、待办事项、日志和忙/闲对象。静态对象用于将信息从一个实体传输到另一个实体,而不期望与原始项保持连续性或引用完整性。动态对象是静态对象的超集,对于仅支持静态对象的客户端,动态对象将优雅地降级为其静态对应对象。

This document specifies an Internet protocol based on the iCalendar object specification that provides scheduling interoperability between different calendar systems. The Internet protocol is called the "iCalendar Transport-Independent Interoperability Protocol (iTIP)".

本文档指定了基于iCalendar对象规范的Internet协议,该协议提供了不同日历系统之间的调度互操作性。Internet协议称为“iCalendar传输独立互操作性协议(iTIP)”。

iTIP complements the iCalendar object specification by adding semantics for group scheduling methods commonly available in current calendar systems. These scheduling methods permit two or more calendar systems to perform transactions such as publish, schedule, reschedule, respond to scheduling requests, negotiation of changes or cancel iCalendar-based calendar components.

iTIP通过为当前日历系统中常见的组调度方法添加语义来补充iCalendar对象规范。这些调度方法允许两个或多个日历系统执行事务,例如发布、调度、重新调度、响应调度请求、协商更改或取消基于iCalendar的日历组件。

iTIP is defined independent of the particular transport used to transmit the scheduling information. Companion memos to iTIP provide bindings of the interoperability protocol to a number of Internet protocols.

iTIP的定义独立于用于传输调度信息的特定传输。iTIP的配套备忘录提供了互操作性协议与许多Internet协议的绑定。

Table of Contents

目录

   1 INTRODUCTION...................................................5
    1.1 FORMATTING CONVENTIONS .....................................5
    1.2 RELATED DOCUMENTS ..........................................6
    1.3 ITIP ROLES AND TRANSACTIONS ................................6
   2 INTEROPERABILITY MODELS........................................8
    2.1 APPLICATION PROTOCOL .......................................9
      2.1.1 Calendar Entry State ...................................9
      2.1.2 Delegation .............................................9
      2.1.3 Acting on Behalf of other Calendar Users ..............10
      2.1.4 Component Revisions ...................................10
      2.1.5 Message Sequencing ....................................11
   3 APPLICATION PROTOCOL ELEMENTS.................................12
    3.1 COMMON COMPONENT RESTRICTION TABLES .......................13
    3.2 METHODS FOR VEVENT CALENDAR COMPONENTS ....................14
      3.2.1 PUBLISH ...............................................15
      3.2.2 REQUEST ...............................................17
        3.2.2.1 Rescheduling an Event..............................19
        3.2.2.2 Updating or Reconfirmation of an Event.............19
        3.2.2.3 Delegating an Event to another CU..................19
        3.2.2.4 Changing the Organizer.............................20
        3.2.2.5 Sending on Behalf of the Organizer.................20
        3.2.2.6 Forwarding to An Uninvited CU......................20
        3.2.2.7 Updating Attendee Status...........................21
      3.2.3 REPLY .................................................21
      3.2.4 ADD ...................................................23
      3.2.5 CANCEL ................................................25
      3.2.6 REFRESH ...............................................26
      3.2.7 COUNTER ...............................................28
      3.2.8 DECLINECOUNTER ........................................29
    3.3 METHODS FOR VFREEBUSY COMPONENTS ..........................31
      3.3.1 PUBLISH ...............................................32
      3.3.2 REQUEST ...............................................33
      3.3.3 REPLY .................................................34
    3.4 METHODS FOR VTODO COMPONENTS ..............................35
        
   1 INTRODUCTION...................................................5
    1.1 FORMATTING CONVENTIONS .....................................5
    1.2 RELATED DOCUMENTS ..........................................6
    1.3 ITIP ROLES AND TRANSACTIONS ................................6
   2 INTEROPERABILITY MODELS........................................8
    2.1 APPLICATION PROTOCOL .......................................9
      2.1.1 Calendar Entry State ...................................9
      2.1.2 Delegation .............................................9
      2.1.3 Acting on Behalf of other Calendar Users ..............10
      2.1.4 Component Revisions ...................................10
      2.1.5 Message Sequencing ....................................11
   3 APPLICATION PROTOCOL ELEMENTS.................................12
    3.1 COMMON COMPONENT RESTRICTION TABLES .......................13
    3.2 METHODS FOR VEVENT CALENDAR COMPONENTS ....................14
      3.2.1 PUBLISH ...............................................15
      3.2.2 REQUEST ...............................................17
        3.2.2.1 Rescheduling an Event..............................19
        3.2.2.2 Updating or Reconfirmation of an Event.............19
        3.2.2.3 Delegating an Event to another CU..................19
        3.2.2.4 Changing the Organizer.............................20
        3.2.2.5 Sending on Behalf of the Organizer.................20
        3.2.2.6 Forwarding to An Uninvited CU......................20
        3.2.2.7 Updating Attendee Status...........................21
      3.2.3 REPLY .................................................21
      3.2.4 ADD ...................................................23
      3.2.5 CANCEL ................................................25
      3.2.6 REFRESH ...............................................26
      3.2.7 COUNTER ...............................................28
      3.2.8 DECLINECOUNTER ........................................29
    3.3 METHODS FOR VFREEBUSY COMPONENTS ..........................31
      3.3.1 PUBLISH ...............................................32
      3.3.2 REQUEST ...............................................33
      3.3.3 REPLY .................................................34
    3.4 METHODS FOR VTODO COMPONENTS ..............................35
        
      3.4.1 PUBLISH ...............................................35
      3.4.2 REQUEST ...............................................37
        3.4.2.1 REQUEST for Rescheduling a VTODO...................39
        3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO....39
        3.4.2.3 REQUEST for Delegating a VTODO.....................40
        3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User....40
        3.4.2.5 REQUEST Updated Attendee Status....................41
      3.4.3 REPLY .................................................41
      3.4.4 ADD ...................................................43
      3.4.5 CANCEL ................................................44
      3.4.6 REFRESH ...............................................46
      3.4.7 COUNTER ...............................................48
      3.4.8 DECLINECOUNTER ........................................49
    3.5 METHODS FOR VJOURNAL COMPONENTS ...........................50
      3.5.1 PUBLISH ...............................................51
      3.5.2 ADD ...................................................52
      3.5.3 CANCEL ................................................53
    3.6 STATUS REPLIES ............................................55
    3.7 IMPLEMENTATION CONSIDERATIONS .............................57
      3.7.1 Working With Recurrence Instances .....................57
      3.7.2 Attendee Property Considerations ......................58
      3.7.3 X-Tokens ..............................................59
   4 EXAMPLES......................................................59
    4.1 PUBLISHED EVENT EXAMPLES ..................................59
      4.1.1 A Minimal Published Event .............................60
      4.1.2 Changing A Published Event ............................60
      4.1.3 Canceling A Published Event ...........................61
      4.1.4 A Rich Published Event ................................62
      4.1.5 Anniversaries or Events attached to entire days .......63
    4.2 GROUP EVENT EXAMPLES ......................................63
      4.2.1 A Group Event Request .................................64
      4.2.2 Reply To A Group Event Request ........................65
      4.2.3 Update An Event .......................................65
      4.2.4 Countering an Event Proposal ..........................66
      4.2.5 Delegating an Event ...................................68
      4.2.6 Delegate Accepts the Meeting ..........................70
      4.2.7 Delegate Declines the Meeting .........................71
      4.2.8 Forwarding an Event Request ...........................72
      4.2.9 Cancel A Group Event ..................................72
      4.2.10 Removing Attendees ...................................74
      4.2.11 Replacing the Organizer ..............................75
    4.3 BUSY TIME EXAMPLES ........................................76
      4.3.1 Request Busy Time .....................................77
      4.3.2 Reply To A Busy Time Request ..........................77
    4.4 RECURRING EVENT AND TIME ZONE EXAMPLES ....................78
      4.4.1 A Recurring Event Spanning Time Zones .................78
      4.4.2 Modify A Recurring Instance ...........................79
      4.4.3 Cancel an Instance ....................................81
        
      3.4.1 PUBLISH ...............................................35
      3.4.2 REQUEST ...............................................37
        3.4.2.1 REQUEST for Rescheduling a VTODO...................39
        3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO....39
        3.4.2.3 REQUEST for Delegating a VTODO.....................40
        3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User....40
        3.4.2.5 REQUEST Updated Attendee Status....................41
      3.4.3 REPLY .................................................41
      3.4.4 ADD ...................................................43
      3.4.5 CANCEL ................................................44
      3.4.6 REFRESH ...............................................46
      3.4.7 COUNTER ...............................................48
      3.4.8 DECLINECOUNTER ........................................49
    3.5 METHODS FOR VJOURNAL COMPONENTS ...........................50
      3.5.1 PUBLISH ...............................................51
      3.5.2 ADD ...................................................52
      3.5.3 CANCEL ................................................53
    3.6 STATUS REPLIES ............................................55
    3.7 IMPLEMENTATION CONSIDERATIONS .............................57
      3.7.1 Working With Recurrence Instances .....................57
      3.7.2 Attendee Property Considerations ......................58
      3.7.3 X-Tokens ..............................................59
   4 EXAMPLES......................................................59
    4.1 PUBLISHED EVENT EXAMPLES ..................................59
      4.1.1 A Minimal Published Event .............................60
      4.1.2 Changing A Published Event ............................60
      4.1.3 Canceling A Published Event ...........................61
      4.1.4 A Rich Published Event ................................62
      4.1.5 Anniversaries or Events attached to entire days .......63
    4.2 GROUP EVENT EXAMPLES ......................................63
      4.2.1 A Group Event Request .................................64
      4.2.2 Reply To A Group Event Request ........................65
      4.2.3 Update An Event .......................................65
      4.2.4 Countering an Event Proposal ..........................66
      4.2.5 Delegating an Event ...................................68
      4.2.6 Delegate Accepts the Meeting ..........................70
      4.2.7 Delegate Declines the Meeting .........................71
      4.2.8 Forwarding an Event Request ...........................72
      4.2.9 Cancel A Group Event ..................................72
      4.2.10 Removing Attendees ...................................74
      4.2.11 Replacing the Organizer ..............................75
    4.3 BUSY TIME EXAMPLES ........................................76
      4.3.1 Request Busy Time .....................................77
      4.3.2 Reply To A Busy Time Request ..........................77
    4.4 RECURRING EVENT AND TIME ZONE EXAMPLES ....................78
      4.4.1 A Recurring Event Spanning Time Zones .................78
      4.4.2 Modify A Recurring Instance ...........................79
      4.4.3 Cancel an Instance ....................................81
        
      4.4.4 Cancel Recurring Event ................................81
      4.4.5 Change All Future Instances ...........................82
      4.4.6 Add A New Instance To A Recurring Event ...............82
      4.4.7 Add A New Series of Instances To A Recurring Event ....83
      4.4.8 Counter An Instance Of A Recurring Event ..............87
      4.4.9 Error Reply To A Request ..............................88
    4.5 GROUP TO-DO EXAMPLES ......................................89
      4.5.1 A VTODO Request .......................................90
      4.5.2 A VTODO Reply .........................................90
      4.5.3 A VTODO Request for Updated Status ....................91
      4.5.4 A Reply: Percent-Complete .............................91
      4.5.5 A Reply: Completed ....................................92
      4.5.6 An Updated VTODO Request ..............................92
      4.5.7 Recurring VTODOs ......................................92
        4.5.7.1 Request for a Recurring VTODO......................93
        4.5.7.2 Calculating due dates in recurring VTODOs..........93
        4.5.7.3 Replying to an instance of a recurring VTODO.......93
    4.6 JOURNAL EXAMPLES ..........................................94
    4.7 OTHER EXAMPLES ............................................94
      4.7.1 Event Refresh .........................................94
      4.7.2 Bad RECURRENCE-ID .....................................95
   5 APPLICATION PROTOCOL FALLBACKS................................97
    5.1 PARTIAL IMPLEMENTATION ....................................97
      5.1.1 Event-Related Fallbacks ...............................97
      5.1.2 Free/Busy-Related Fallbacks ...........................99
      5.1.3 To-Do-Related Fallbacks ...............................99
      5.1.4 Journal-Related Fallbacks ............................101
    5.2 LATENCY ISSUES ...........................................102
      5.2.1 Cancellation of an Unknown Calendar Component. .......102
      5.2.2 Unexpected Reply from an Unknown Delegate ............103
    5.3 SEQUENCE NUMBER ..........................................103
   6 SECURITY CONSIDERATIONS......................................103
    6.1 SECURITY THREATS .........................................103
      6.1.1 Spoofing the "Organizer" .............................103
      6.1.2 Spoofing the "Attendee" ..............................103
      6.1.3 Unauthorized Replacement of the Organizer ............104
      6.1.4 Eavesdropping ........................................104
      6.1.5 Flooding a Calendar ..................................104
      6.1.6 Procedural Alarms ....................................104
      6.1.7 Unauthorized REFRESH Requests ........................104
    6.2 RECOMMENDATIONS ..........................................104
      6.2.1 Use of [RFC-1847] to secure iTIP transactions ........105
      6.2.2 Implementation Controls ..............................105
   7 ACKNOWLEDGMENTS..............................................106
   8 BIBLIOGRAPHY.................................................106
   9 AUTHORS' ADDRESSES...........................................107
   10 FULL COPYRIGHT STATEMENT....................................109
        
      4.4.4 Cancel Recurring Event ................................81
      4.4.5 Change All Future Instances ...........................82
      4.4.6 Add A New Instance To A Recurring Event ...............82
      4.4.7 Add A New Series of Instances To A Recurring Event ....83
      4.4.8 Counter An Instance Of A Recurring Event ..............87
      4.4.9 Error Reply To A Request ..............................88
    4.5 GROUP TO-DO EXAMPLES ......................................89
      4.5.1 A VTODO Request .......................................90
      4.5.2 A VTODO Reply .........................................90
      4.5.3 A VTODO Request for Updated Status ....................91
      4.5.4 A Reply: Percent-Complete .............................91
      4.5.5 A Reply: Completed ....................................92
      4.5.6 An Updated VTODO Request ..............................92
      4.5.7 Recurring VTODOs ......................................92
        4.5.7.1 Request for a Recurring VTODO......................93
        4.5.7.2 Calculating due dates in recurring VTODOs..........93
        4.5.7.3 Replying to an instance of a recurring VTODO.......93
    4.6 JOURNAL EXAMPLES ..........................................94
    4.7 OTHER EXAMPLES ............................................94
      4.7.1 Event Refresh .........................................94
      4.7.2 Bad RECURRENCE-ID .....................................95
   5 APPLICATION PROTOCOL FALLBACKS................................97
    5.1 PARTIAL IMPLEMENTATION ....................................97
      5.1.1 Event-Related Fallbacks ...............................97
      5.1.2 Free/Busy-Related Fallbacks ...........................99
      5.1.3 To-Do-Related Fallbacks ...............................99
      5.1.4 Journal-Related Fallbacks ............................101
    5.2 LATENCY ISSUES ...........................................102
      5.2.1 Cancellation of an Unknown Calendar Component. .......102
      5.2.2 Unexpected Reply from an Unknown Delegate ............103
    5.3 SEQUENCE NUMBER ..........................................103
   6 SECURITY CONSIDERATIONS......................................103
    6.1 SECURITY THREATS .........................................103
      6.1.1 Spoofing the "Organizer" .............................103
      6.1.2 Spoofing the "Attendee" ..............................103
      6.1.3 Unauthorized Replacement of the Organizer ............104
      6.1.4 Eavesdropping ........................................104
      6.1.5 Flooding a Calendar ..................................104
      6.1.6 Procedural Alarms ....................................104
      6.1.7 Unauthorized REFRESH Requests ........................104
    6.2 RECOMMENDATIONS ..........................................104
      6.2.1 Use of [RFC-1847] to secure iTIP transactions ........105
      6.2.2 Implementation Controls ..............................105
   7 ACKNOWLEDGMENTS..............................................106
   8 BIBLIOGRAPHY.................................................106
   9 AUTHORS' ADDRESSES...........................................107
   10 FULL COPYRIGHT STATEMENT....................................109
        

1 Introduction

1导言

This document specifies how calendaring systems use iCalendar objects to interoperate with other calendar systems. In particular, it specifies how to schedule events, to-dos, or daily journal entries. It further specifies how to search for available busy time information. It does so in a general way so as to allow multiple methods of communication between systems. Subsequent documents specify transport bindings between systems that use this protocol.

本文档指定日历系统如何使用iCalendar对象与其他日历系统进行互操作。特别是,它指定了如何安排事件、待办事项或每日日记账分录。它进一步指定了如何搜索可用的繁忙时间信息。它以一般方式这样做,以便允许系统之间的多种通信方法。后续文档指定使用此协议的系统之间的传输绑定。

This protocol is based on messages sent from an originator to one or more recipients. For certain types of messages, a recipient may reply, in order to update their status and may also return transaction/request status information. The protocol supports the ability for the message originator to modify or cancel the original message. The protocol also supports the ability for recipients to suggest changes to the originator of a message. The elements of the protocol also define the user roles for its transactions.

此协议基于发起者向一个或多个收件人发送的消息。对于某些类型的邮件,收件人可以回复以更新其状态,还可以返回事务/请求状态信息。协议支持消息发起人修改或取消原始消息的能力。该协议还支持收件人向消息的原始发件人建议更改的功能。协议的元素还定义了其事务的用户角色。

1.1 Formatting Conventions
1.1 格式约定

In order to refer to elements of the calendaring and scheduling model, core object or interoperability protocol defined in [iCAL] and [iTIP] several formatting conventions have been utilized.

为了参考日历和调度模型的元素,使用了[iCAL]和[iTIP]中定义的核心对象或互操作性协议,使用了几种格式约定。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this document are to be interpreted as described in [RFC-2119].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC-2119]中所述进行解释。

Calendaring and scheduling roles are referred to in quoted-strings of text with the first character of each word in upper case. For example, "Organizer" refers to a role of a "Calendar User" (CU) within the scheduling protocol defined by [iTIP]. Calendar components defined by [iCAL] are referred to with capitalized, quoted-strings of text. All calendar components start with the letter "V". For example, "VEVENT" refers to the event calendar component, "VTODO" refers to the to-do calendar component and "VJOURNAL" refers to the daily journal calendar component. Scheduling methods defined by [iTIP] are referred to with capitalized, quoted-strings of text. For example, "REQUEST" refers to the method for requesting a scheduling calendar component be created or modified, "REPLY" refers to the method a recipient of a request uses to update their status with the "Organizer" of the calendar component.

日历和日程安排角色在带引号的文本字符串中引用,每个单词的第一个字符用大写字母表示。例如,“组织者”是指[iTIP]定义的调度协议中的“日历用户”(CU)角色。[iCAL]定义的日历组件是指带有大写引号的文本字符串。所有日历组件都以字母“V”开头。例如,“VEVENT”指的是事件日历组件,“VTODO”指的是待办日历组件,“VJOURNAL”指的是每日日志日历组件。[iTIP]定义的调度方法使用大写、带引号的文本字符串引用。例如,“请求”指的是请求创建或修改日程安排日历组件的方法,“回复”指的是请求接收者使用日历组件的“组织者”更新其状态的方法。

Properties defined by [iCAL] are referred to with capitalized, quoted-strings of text, followed by the word "property". For example, "ATTENDEE" property refers to the iCalendar property used to convey the calendar address of a "Calendar User". Property parameters

[iCAL]定义的属性是指带有大写引号的文本字符串,后跟“属性”一词。例如,“ATTENDEE”属性指用于传递“日历用户”日历地址的iCalendar属性。特性参数

defined by this memo are referred to with lower case, quoted-strings of text, followed by the word "parameter". For example, "value" parameter refers to the iCalendar property parameter used to override the default data type for a property value. Enumerated values defined by this memo are referred to with capitalized text, either alone or followed by the word "value".

本备忘录中定义的参数用小写、带引号的文本字符串表示,后跟“参数”一词。例如,“值”参数是指用于替代特性值的默认数据类型的iCalendar特性参数。本备忘录定义的枚举值用大写文本表示,单独或后跟“值”一词。

In tables, the quoted-string text is specified without quotes in order to minimize the table length.

在表格中,为了最小化表格长度,指定带引号的字符串文本时不带引号。

1.2 Related Documents
1.2 相关文件

Implementers will need to be familiar with several other memos that, along with this one, describe the Internet calendaring and scheduling standards. This document, [iTIP], specifies an interoperability protocol for scheduling between different implementations. The related documents are:

实施者需要熟悉其他几个备忘录,这些备忘录与本备忘录一起描述了互联网日历和日程安排标准。本文档[iTIP]指定了不同实现之间调度的互操作性协议。有关文件包括:

[iCAL] - specifies the objects, data types, properties and property parameters used in the protocols, along with the methods for representing and encoding them;

[IC]-指定协议中使用的对象、数据类型、属性和属性参数,以及表示和编码它们的方法;

[iMIP] specifies an Internet email binding for [iTIP].

[iMIP]为[iTIP]指定Internet电子邮件绑定。

This memo does not attempt to repeat the specification of concepts or definitions from these other memos. Where possible, references are made to the memo that provides for the specification of these concepts or definitions.

本备忘录不试图重复其他备忘录中的概念或定义说明。在可能的情况下,参考备忘录,其中规定了这些概念或定义的规范。

1.3 ITIP Roles and Transactions
1.3 ITIP角色和事务

ITIP defines methods for exchanging [iCAL] objects for the purposes of group calendaring and scheduling between "Calendar Users" (CUs). CUs take on one of two roles in iTIP. The CU who initiates an exchange takes on the role of "Organizer". For example, the CU who proposes a group meeting is the "Organizer". The CUs asked to participate in the group meeting by the "Organizer" take on the role of "Attendee". Note that "role" is also a descriptive parameter to the _ATTENDEE_ property. Its use is to convey descriptive context to an "Attendee" such as "chair", "req-participant" or "non-participant" and has nothing to do with the calendaring workflow.

ITIP定义了用于交换[iCAL]对象的方法,以便在“日历用户”(CU)之间进行组日历和调度。CU在iTIP中扮演两个角色之一。发起交流的CU承担“组织者”的角色。例如,提议召开小组会议的CU是“组织者”。CUs要求“组织者”以“与会者”的身份参加小组会议。请注意,“角色”也是_ATTENDEE_属性的一个描述性参数。其用途是向“与会者”传达描述性上下文,如“主席”、“req参与者”或“非参与者”,与日历工作流无关。

The ITIP methods are listed below and their usage and semantics are defined in section 3 of this document.

ITIP方法如下所示,其用法和语义在本文档第3节中进行了定义。

   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Used to publish a calendar entry to one or more  |
   |                | Calendar Users. There is no interactivity        |
   |                | between the publisher and any other calendar     |
   |                | user. An example might include a baseball team   |
   |                | publishing its schedule to the public.           |
   |                |                                                  |
   | REQUEST        | Used to schedule a calendar entry with other     |
   |                | Calendar Users. Requests are interactive in that |
   |                | they require the receiver to respond using       |
   |                | the Reply methods. Meeting Requests, Busy        |
   |                | Time requests and the assignment of VTODOs to    |
   |                | other Calendar Users are all examples.           |
   |                | Requests are also used by the "Organizer" to     |
   |                | update the status of a calendar entry.           |
   |                |                                                  |
   | REPLY          | A Reply is used in response to a Request to      |
   |                | convey "Attendee" status to the "Organizer".     |
   |                | Replies are commonly used to respond to meeting  |
   |                | and task requests.                               |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing         |
   |                | VEVENT, VTODO, or VJOURNAL.                      |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | VEVENT, VTODO, or VJOURNAL.                      |
   |                |                                                  |
   | REFRESH        | The Refresh method is used by an "Attendee" to   |
   |                | request the latest version of a calendar entry.  |
   |                |                                                  |
   | COUNTER        | The Counter method is used by an "Attendee" to   |
   |                | negotiate a change in the calendar entry.        |
   |                | Examples include the request to change a         |
   |                | proposed Event time or change the due date for a |
   |                | VTODO.                                           |
   |                |                                                  |
   | DECLINE-       | Used by the "Organizer" to decline the proposed  |
   | COUNTER        | counter-proprosal.                               |
   +================+==================================================+
        
   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Used to publish a calendar entry to one or more  |
   |                | Calendar Users. There is no interactivity        |
   |                | between the publisher and any other calendar     |
   |                | user. An example might include a baseball team   |
   |                | publishing its schedule to the public.           |
   |                |                                                  |
   | REQUEST        | Used to schedule a calendar entry with other     |
   |                | Calendar Users. Requests are interactive in that |
   |                | they require the receiver to respond using       |
   |                | the Reply methods. Meeting Requests, Busy        |
   |                | Time requests and the assignment of VTODOs to    |
   |                | other Calendar Users are all examples.           |
   |                | Requests are also used by the "Organizer" to     |
   |                | update the status of a calendar entry.           |
   |                |                                                  |
   | REPLY          | A Reply is used in response to a Request to      |
   |                | convey "Attendee" status to the "Organizer".     |
   |                | Replies are commonly used to respond to meeting  |
   |                | and task requests.                               |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing         |
   |                | VEVENT, VTODO, or VJOURNAL.                      |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | VEVENT, VTODO, or VJOURNAL.                      |
   |                |                                                  |
   | REFRESH        | The Refresh method is used by an "Attendee" to   |
   |                | request the latest version of a calendar entry.  |
   |                |                                                  |
   | COUNTER        | The Counter method is used by an "Attendee" to   |
   |                | negotiate a change in the calendar entry.        |
   |                | Examples include the request to change a         |
   |                | proposed Event time or change the due date for a |
   |                | VTODO.                                           |
   |                |                                                  |
   | DECLINE-       | Used by the "Organizer" to decline the proposed  |
   | COUNTER        | counter-proprosal.                               |
   +================+==================================================+
        

Group scheduling in iTIP is accomplished using the set of "request" and "response" methods described above. The following table shows the methods broken down by who can send them.

iTIP中的组调度是使用上述一组“请求”和“响应”方法完成的。下表显示了按谁可以发送这些方法细分的方法。

   +================+==================================================+
   | Originator     | Methods                                          |
   |================+==================================================|
   | Organizer      | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER    |
   |                |                                                  |
   | Attendee       | REPLY, REFRESH, COUNTER                          |
   |                | REQUEST only when delegating                     |
   +================+==================================================+
        
   +================+==================================================+
   | Originator     | Methods                                          |
   |================+==================================================|
   | Organizer      | PUBLISH, REQUEST, ADD, CANCEL, DECLINECOUNTER    |
   |                |                                                  |
   | Attendee       | REPLY, REFRESH, COUNTER                          |
   |                | REQUEST only when delegating                     |
   +================+==================================================+
        

Note that for some calendar component types, the allowable methods are a subset of the above set.

请注意,对于某些日历组件类型,允许的方法是上述集合的子集。

2 Interoperability Models

2互操作性模型

There are two distinct protocols relevant to interoperability: an "Application Protocol" and a "Transport Protocol". The Application Protocol defines the content of the iCalendar objects sent between sender and receiver to accomplish the scheduling transactions listed above. The Transport Protocol defines how the iCalendar objects are sent between the sender and receiver. This document focuses on the Application Protocol. Binding documents such as [iMIP] focus on the Transport Protocol.

有两个与互操作性相关的不同协议:“应用程序协议”和“传输协议”。应用程序协议定义发送方和接收方之间发送的iCalendar对象的内容,以完成上面列出的调度事务。传输协议定义了如何在发送方和接收方之间发送iCalendar对象。本文档重点介绍应用程序协议。像[iMIP]这样的具有约束力的文档侧重于传输协议。

The connection between Sender and Receiver in the diagram below refers to the Application Protocol. The iCalendar objects passed from the Sender to the Receiver are presented in Section 3, Application Protocol Elements.

下图中发送方和接收方之间的连接指的是应用程序协议。第3节“应用程序协议元素”中介绍了从发送方传递到接收方的iCalendar对象。

   +----------+                      +----------+
   |          |        iTIP          |          |
   |  Sender  |<-------------------->| Receiver |
   |          |                      |          |
   +----------+                      +----------+
        
   +----------+                      +----------+
   |          |        iTIP          |          |
   |  Sender  |<-------------------->| Receiver |
   |          |                      |          |
   +----------+                      +----------+
        

There are several variations of this diagram in which the Sender and Receiver take on various roles of a "Calendar User Agent" (CUA) or a "Calendar Service" (CS).

此图有几种变体,其中发送方和接收方扮演“日历用户代理”(CUA)或“日历服务”(CS)的各种角色。

The architecture of iTIP is depicted in the diagram below. An application written to this specification may work with bindings for the store-and-forward transport, the real time transport, or both. Also note that iTIP could be bound to other transports.

iTIP的体系结构如下图所示。根据本规范编写的应用程序可以使用存储转发传输、实时传输或两者的绑定。还请注意,iTIP可以绑定到其他传输。

   +------------------------------------------+
   |                   iTIP                   |
   +------------------------------------------+
   |Real-time | Store-and-Fwd | Other         |
   |Transport | Transport     | Transports... |
   +------------------------------------------+
        
   +------------------------------------------+
   |                   iTIP                   |
   +------------------------------------------+
   |Real-time | Store-and-Fwd | Other         |
   |Transport | Transport     | Transports... |
   +------------------------------------------+
        
2.1 Application Protocol
2.1 应用协议

In the iTIP model, a calendar entry is created and managed by an "Organizer". The "Organizer" interacts with other CUs by sending one or more of the iTIP messages listed above. "Attendees" use the "REPLY" method to communicate their status. "Attendees" do not make direct changes to the master calendar entry. They can, however, use the "COUNTER" method to suggest changes to the "Organizer". In any case, the "Organizer" has complete control over the master calendar entry.

在iTIP模型中,日历条目由“组织者”创建和管理。“组织者”通过发送上面列出的一条或多条iTIP消息与其他CU进行交互。“与会者”使用“回复”方法传达其状态。“与会者”不会直接更改主日历条目。但是,他们可以使用“计数器”方法建议对“组织者”进行更改。在任何情况下,“组织者”都可以完全控制主日历条目。

2.1.1 Calendar Entry State
2.1.1 日历条目状态

There are two distinct states relevant to calendar entries: the overall state of the entry and the state associated with an "Attendee" to that entry.

日历条目有两种不同的状态:条目的整体状态和与该条目的“与会者”关联的状态。

The state of an entry is defined by the "STATUS" property and is controlled by the "Organizer." There is no default value for the "STATUS" property. The "Organizer" sets the "STATUS" property to the appropriate value for each calendar entry.

条目的状态由“STATUS”属性定义,并由“Organizer”控制。“STATUS”属性没有默认值。“组织者”为每个日历条目将“状态”属性设置为适当的值。

The state of a particular "Attendee" relative to an entry is defined by the "partstat" parameter in the "ATTENDEE" property for each "Attendee". When an "Organizer" issues the initial entry, "Attendee" status is unknown. The "Organizer" specifies this by setting the "partstat" parameter to "NEEDS-ACTION". Each "Attendee" modifies their "ATTENDEE" property "partstat" parameter to an appropriate value as part of a "REPLY" message sent back to the "Organizer".

特定“与会者”相对于条目的状态由每个“与会者”的“与会者”属性中的“partstat”参数定义。当“组织者”发布初始条目时,“与会者”状态未知。“组织者”通过将“partstat”参数设置为“NEEDS-ACTION”来指定这一点。作为发送回“组织者”的“回复”消息的一部分,每个“与会者”将其“与会者”属性“partstat”参数修改为适当的值。

2.1.2 Delegation
2.1.2 代表团

Delegation is defined as the process by which an "Attendee" grants another CU (or several CUs) the right to attend on their behalf. The "Organizer" is made aware of this change because the delegating "Attendee" informs the "Organizer". These steps are detailed in the REQUEST method section.

委派被定义为“与会者”授予另一个CU(或多个CU)代表其出席的权利的过程。“组织者”知道此更改,因为委派“与会者”通知“组织者”。这些步骤在“请求方法”部分中有详细说明。

2.1.3 Acting on Behalf of other Calendar Users
2.1.3 代表其他日历用户行事

In many organizations one user will act on behalf of another to organize and/or respond to meeting requests. ITIP provides two mechanisms that support these activities.

在许多组织中,一个用户将代表另一个用户组织和/或响应会议请求。ITIP提供了两种支持这些活动的机制。

First, the "Organizer" is treated as a special entity, separate from "Attendees". All responses from "Attendees" flow to the "Organizer", making it easy to separate a calendar user organizing a meeting from calendar users attending the meeting. Additionally, iCalendar provides descriptive roles for each "Attendee". For instance, a role of "chair" may be ascribed to one or more "Attendees". The "chair" and the "Organizer" may or may not be the same calendar user. This maps well to scenarios where an assistant may manage meeting logistics for another individual who chairs a meeting.

首先,“组织者”被视为一个特殊实体,与“与会者”分开。“与会者”的所有响应都会流到“组织者”中,这样就可以很容易地将组织会议的日历用户与参加会议的日历用户区分开来。此外,iCalendar还为每个“与会者”提供描述性角色。例如,“主席”的角色可归因于一个或多个“与会者”。“主席”和“组织者”可能是也可能不是同一日历用户。这很好地映射到助理可能为主持会议的另一个人管理会议后勤的场景。

Second, a "sent-by" parameter may be specified in either the "Organizer" or "Attendee" properties. When specified, the "sent-by" parameter indicates that the responding CU acted on behalf of the specified "Attendee" or "Organizer".

其次,可以在“组织者”或“与会者”属性中指定“发送人”参数。指定时,“发送人”参数表示响应CU代表指定的“与会者”或“组织者”行事。

2.1.4 Component Revisions
2.1.4 组件修订

The "SEQUENCE" property is used by the "Organizer" to indicate revisions to the calendar component. The rules for incrementing the "SEQUENCE" number are defined in [iCAL]. For clarity, these rules are paraphrased here in terms of how they are applied in [iTIP]. For a given "UID" in a calendar component:

“组织者”使用“序列”属性来指示对日历组件的修订。[iCAL]中定义了递增“序列”号的规则。为清楚起见,此处根据这些规则在[iTIP]中的应用方式对其进行了解释。对于日历组件中的给定“UID”:

. For the "PUBLISH" and "REQUEST" methods, the "SEQUENCE" property value is incremented according to the rules defined in [iCAL].

. 对于“发布”和“请求”方法,“序列”属性值根据[iCAL]中定义的规则递增。

. The "SEQUENCE" property value MUST be incremented each time the "Organizer" uses the "ADD" or "CANCEL" methods.

. 每次“组织者”使用“添加”或“取消”方法时,“序列”属性值必须递增。

. The "SEQUENCE" property value MUST NOT be incremented when using "REPLY", "REFRESH", "COUNTER", "DECLINECOUNTER", or when sending a delegation "REQUEST".

. 使用“回复”、“刷新”、“计数器”、“DECLINECOUNTER”或发送委托“请求”时,不得增加“序列”属性值。

In some circumstances the "Organizer" may not have received responses to the final revision sent out. In this situation, the "Organizer" may wish to send an update "REQUEST", and set "RSVP=TRUE" for all "Attendees", so that current responses can be collected.

在某些情况下,“组织者”可能没有收到对发出的最终修订的回复。在这种情况下,“组织者”可能希望发送更新“请求”,并为所有“与会者”设置“RSVP=TRUE”,以便收集当前响应。

The value of the "SEQUENCE" property contained in a response from an "Attendee" may not always match the "Organizer's" revision. Implementations may choose to have the CUA indicate to the CU that the response is to an entry that has been revised and allow the CU to decide whether or not to accept the response.

“与会者”响应中包含的“序列”属性的值可能并不总是与“组织者”的修订版匹配。实施可以选择让CUA向CU指示响应是针对已修改的条目的,并允许CU决定是否接受响应。

2.1.5 Message Sequencing
2.1.5 消息排序

CUAs that handle the [iTIP] application protocol must often correlate a component in a calendar store with a component received in the [iTIP] message. For example, an event may be updated with a later revision of the same event. To accomplish this, a CUA must correlate the version of the event already in its calendar store with the version sent in the [iTIP] message. In addition to this correlation, there are several factors that can cause [iTIP] messages to arrive in an unexpected order. That is, an "Organizer" could receive a reply to an earlier revision of a component AFTER receiving a reply to a later revision.

处理[iTIP]应用程序协议的CUA通常必须将日历存储中的组件与[iTIP]消息中接收到的组件相关联。例如,可以使用同一事件的更高版本更新事件。为此,CUA必须将其日历存储中已存在的事件版本与[iTIP]消息中发送的版本相关联。除了这种相关性之外,还有几个因素会导致[iTIP]消息以意外的顺序到达。也就是说,“组织者”可以在收到对更高版本的回复后收到对组件早期版本的回复。

To maximize interoperability and to handle messages that arrive in an unexpected order, use the following rules:

要最大限度地提高互操作性并处理以意外顺序到达的消息,请使用以下规则:

1. The primary key for referencing a particular iCalendar component is the "UID" property value. To reference an instance of a recurring component, the primary key is composed of the "UID" and the "RECURRENCE-ID" properties.

1. 引用特定iCalendar组件的主键是“UID”属性值。要引用定期组件的实例,主键由“UID”和“RECURRENCE-ID”属性组成。

2. The secondary key for referencing a component is the "SEQUENCE" property value. For components where the "UID" is the same, the component with the highest numeric value for the "SEQUENCE" property obsoletes all other revisions of the component with lower values.

2. 引用组件的辅助键是“序列”属性值。对于“UID”相同的组件,“SEQUENCE”属性具有最高数值的组件将淘汰具有较低值的组件的所有其他版本。

3. "Attendees" send "REPLY" messages to the "Organizer". For replies where the "UID" property value is the same, the value of the "SEQUENCE" property indicates the revision of the component to which the "Attendee" is replying. The reply with the highest numeric value for the "SEQUENCE" property obsoletes all other replies with lower values.

3. “与会者”向“组织者”发送“回复”消息。对于“UID”属性值相同的回复,“SEQUENCE”属性的值表示“Attendee”正在回复的组件的版本。对于“SEQUENCE”属性,具有最高数值的回复将废弃所有其他具有较低值的回复。

4. In situations where the "UID" and "SEQUENCE" properties match, the "DTSTAMP" property is used as the tie-breaker. The component with the latest "DTSTAMP" overrides all others. Similarly, for "Attendee" responses where the "UID" property values match and the "SEQUENCE" property values match, the response with the latest "DTSTAMP" overrides all others.

4. 在“UID”和“SEQUENCE”属性匹配的情况下,“DTSTAMP”属性将用作连接断路器。具有最新“DTSTAMP”的组件将覆盖所有其他组件。类似地,对于“与会者”响应,“UID”属性值匹配,“SEQUENCE”属性值匹配,具有最新“DTSTAMP”的响应将覆盖所有其他响应。

Hence, CUAs must persist the following component properties: "UID", "RECURRENCE-ID", "SEQUENCE", and "DTSTAMP". Furthermore, for each "ATTENDEE" property of a component CUAs must persist the "SEQUENCE" and "DTSTAMP" property values associated with the "Attendee's" response.

因此,CUAs必须保留以下组件属性:“UID”、“RECURRENCE-ID”、“SEQUENCE”和“DTSTAMP”。此外,对于组件的每个“ATTENDEE”属性,CUAs必须保留与“ATTENDEE”响应关联的“SEQUENCE”和“DTSTAMP”属性值。

3 Application Protocol Elements

3应用程序协议元素

ITIP messages are "text/calendar" MIME entities that contain calendaring and scheduling information. The particular type of [iCAL] message is referred to as the "method type". Each method type is identified by a "METHOD" property specified as part of the "text/calendar" content type. The table below shows various combinations of calendar components and the method types that this memo supports.

ITIP消息是包含日历和日程安排信息的“文本/日历”MIME实体。[iCAL]消息的特定类型称为“方法类型”。每个方法类型都由一个“方法”属性标识,该属性指定为“文本/日历”内容类型的一部分。下表显示了此备忘录支持的日历组件和方法类型的各种组合。

   +=================================================+
   |         | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
   |=================================================|
   |Publish  |  Yes   |  Yes  |  Yes     |   Yes     |
   |Request  |  Yes   |  Yes  |  No      |   Yes     |
   |Refresh  |  Yes   |  Yes  |  No      |   No      |
   |Cancel   |  Yes   |  Yes  |  Yes     |   No      |
   |Add      |  Yes   |  Yes  |  Yes     |   No      |
   |Reply    |  Yes   |  Yes  |  No      |   Yes     |
   |Counter  |  Yes   |  Yes  |  No      |   No      |
   |Decline- |        |       |          |           |
   |Counter  |  Yes   |  Yes  |  No      |   No      |
   +=================================================+
        
   +=================================================+
   |         | VEVENT | VTODO | VJOURNAL | VFREEBUSY |
   |=================================================|
   |Publish  |  Yes   |  Yes  |  Yes     |   Yes     |
   |Request  |  Yes   |  Yes  |  No      |   Yes     |
   |Refresh  |  Yes   |  Yes  |  No      |   No      |
   |Cancel   |  Yes   |  Yes  |  Yes     |   No      |
   |Add      |  Yes   |  Yes  |  Yes     |   No      |
   |Reply    |  Yes   |  Yes  |  No      |   Yes     |
   |Counter  |  Yes   |  Yes  |  No      |   No      |
   |Decline- |        |       |          |           |
   |Counter  |  Yes   |  Yes  |  No      |   No      |
   +=================================================+
        

Each method type is defined in terms of its associated components and properties. Some components and properties are required, some are optional and others are excluded. The restrictions are expressed in this document using a simple "restriction table". The first column indicates the name of a component or property. Properties of the iCalendar object are not indented. Properties of a component are indented. The second column contains "MUST" if the component or property must be present, "MAY" if the component or property is optional, and "NOT" if the component or property must not be present. Entries in the second column sometimes contain comments for further clarification.

每个方法类型都是根据其关联的组件和属性定义的。一些组件和属性是必需的,一些是可选的,其他则被排除在外。本文件使用简单的“限制表”表示限制。第一列指示组件或属性的名称。iCalendar对象的属性不缩进。组件的属性是缩进的。如果组件或属性必须存在,则第二列包含“必须”;如果组件或属性是可选的,则包含“可能”;如果组件或属性不能存在,则包含“不”。第二列中的条目有时包含进一步澄清的注释。

3.1 Common Component Restriction Tables
3.1 通用组件限制表

The restriction table below applies to properties of the iCalendar object. That is, the properties at the outermost scope. The presence column uses the following values to assert whether a property is required, is optional and the number of times it may appear in the iCalendar object.

下面的限制表适用于iCalendar对象的属性。即,位于最外层范围的属性。“状态”列使用以下值来断言属性是否为必需、是否为可选以及它在iCalendar对象中出现的次数。

   Presence Value       Description
   --------------------------------------------------------------
   1                 One instance MUST be present
   1+                At least one instance MUST be present
   0                 Instances of this property Must NOT be present
   0+                Multiple instances MAY be present
   0 or 1            Up to 1 instance of this property MAY be present
   ---------------------------------------------------------------
        
   Presence Value       Description
   --------------------------------------------------------------
   1                 One instance MUST be present
   1+                At least one instance MUST be present
   0                 Instances of this property Must NOT be present
   0+                Multiple instances MAY be present
   0 or 1            Up to 1 instance of this property MAY be present
   ---------------------------------------------------------------
        

The tables also call out "X-PROPERTY" and "X-COMPONENT" to show where vendor-specific properties and components can appear. The tables do not lay out the restrictions of property parameters. Those restrictions are defined in [iCAL].

这些表还调出了“X属性”和“X组件”,以显示特定于供应商的属性和组件可以出现的位置。这些表没有列出特性参数的限制。这些限制在[iCAL]中有定义。

   Component/Property  Presence
   ------------------- ----------------------------------------------
   CALSCALE            0 or 1
   PRODID              1
   VERSION             1       Value MUST be "2.0"
   X-PROPERTY          0+
        
   Component/Property  Presence
   ------------------- ----------------------------------------------
   CALSCALE            0 or 1
   PRODID              1
   VERSION             1       Value MUST be "2.0"
   X-PROPERTY          0+
        

DateTime values MAY refer to a "VTIMEZONE" component. The property restrictions in the table below apply to any "VTIMEZONE" component in an ITIP message.

日期时间值可能引用“VTIMEZONE”组件。下表中的属性限制适用于ITIP消息中的任何“VTIMEZONE”组件。

   Component/Property  Presence
   ------------------- ----------------------------------------------
   VTIMEZONE           0+      MUST be present if any date/time refers
                               to timezone
       DAYLIGHT        0+      MUST be one or more of either STANDARD or
                               DAYLIGHT
          COMMENT      0 or 1
          DTSTART      1       MUST be local time format
          RDATE        0+      if present RRULE MUST NOT be present
          RRULE        0+      if present RDATE MUST NOT be present
          TZNAME       0 or 1
          TZOFFSET     1
          TZOFFSETFROM 1
          TZOFFSETTO   1
        
   Component/Property  Presence
   ------------------- ----------------------------------------------
   VTIMEZONE           0+      MUST be present if any date/time refers
                               to timezone
       DAYLIGHT        0+      MUST be one or more of either STANDARD or
                               DAYLIGHT
          COMMENT      0 or 1
          DTSTART      1       MUST be local time format
          RDATE        0+      if present RRULE MUST NOT be present
          RRULE        0+      if present RDATE MUST NOT be present
          TZNAME       0 or 1
          TZOFFSET     1
          TZOFFSETFROM 1
          TZOFFSETTO   1
        

X-PROPERTY 0+ LAST-MODIFIED 0 or 1 STANDARD 0+ MUST be one or more of either STANDARD or DAYLIGHT COMMENT 0 or 1 DTSTART 1 MUST be local time format RDATE 0+ if present RRULE MUST NOT be present RRULE 0+ if present RDATE MUST NOT be present TZNAME 0 or 1 TZOFFSETFROM 1 TZOFFSETTO 1 X-PROPERTY 0+ TZID 1 TZURL 0 or 1 X-PROPERTY 0+

X属性0+上次修改的0或1标准0+必须是标准或日光注释0或1 DTSTART 1必须是本地时间格式RDATE 0+如果存在RRULE必须不存在RRULE 0+如果存在RDATE必须不存在TZNAME 0或1 TZOFFSETFROM 1 TZOFFSETTO 1 X属性0+TZID 1 TZURL 0或1 X属性0+

The property restrictions in the table below apply to any "VALARM" component in an ITIP message.

下表中的属性限制适用于ITIP消息中的任何“VALARM”组件。

   Component/Property  Presence
   ------------------- ----------------------------------------------
   VALARM              0+
       ACTION          1
       ATTACH          0+
       DESCRIPTION     0 or 1
       DURATION        0 or 1  if present REPEAT MUST be present
       REPEAT          0 or 1  if present DURATION MUST be present
       SUMMARY         0 or 1
       TRIGGER         1
       X-PROPERTY      0+
        
   Component/Property  Presence
   ------------------- ----------------------------------------------
   VALARM              0+
       ACTION          1
       ATTACH          0+
       DESCRIPTION     0 or 1
       DURATION        0 or 1  if present REPEAT MUST be present
       REPEAT          0 or 1  if present DURATION MUST be present
       SUMMARY         0 or 1
       TRIGGER         1
       X-PROPERTY      0+
        
3.2 Methods for VEVENT Calendar Components
3.2 VEVENT日历组件的方法

This section defines the property set restrictions for the method types that are applicable to the "VEVENT" calendar component. Each method is defined using a table that clarifies the property constraints that define the particular method.

本节定义了适用于“VEVENT”日历组件的方法类型的属性集限制。每个方法都使用一个表来定义,该表澄清了定义特定方法的属性约束。

The following summarizes the methods that are defined for the "VEVENT" calendar component.

下面总结了为“VEVENT”日历组件定义的方法。

   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post notification of an event. Used primarily as |
   |                | a method of advertising the existence of an      |
   |                | event.                                           |
   |                |                                                  |
   | REQUEST        | Make a request for an event. This is an explicit |
   |                | invitation to one or more "Attendees". Event     |
   |                | Requests are also used to update or change an    |
   |                | existing event. Clients that cannot handle       |
   |                | REQUEST may degrade the event to view it as an   |
   |                | PUBLISH.                                         |
   |                |                                                  |
   | REPLY          | Reply to an event request. Clients may set their |
   |                | status ("partstat") to ACCEPTED, DECLINED,       |
   |                | TENTATIVE, or DELEGATED.                         |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing event.  |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | event.                                           |
   |                |                                                  |
   | REFRESH        | A request is sent to an "Organizer" by an        |
   |                | "Attendee" asking for the latest version of an   |
   |                | event to be resent to the requester.             |
   |                |                                                  |
   | COUNTER        | Counter a REQUEST with an alternative proposal,  |
   |                | Sent by an "Attendee" to the "Organizer".        |
   |                |                                                  |
   | DECLINECOUNTER | Decline a counter proposal. Sent to an           |
   |                | "Attendee" by the "Organizer".                   |
   +================+==================================================+
        
   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post notification of an event. Used primarily as |
   |                | a method of advertising the existence of an      |
   |                | event.                                           |
   |                |                                                  |
   | REQUEST        | Make a request for an event. This is an explicit |
   |                | invitation to one or more "Attendees". Event     |
   |                | Requests are also used to update or change an    |
   |                | existing event. Clients that cannot handle       |
   |                | REQUEST may degrade the event to view it as an   |
   |                | PUBLISH.                                         |
   |                |                                                  |
   | REPLY          | Reply to an event request. Clients may set their |
   |                | status ("partstat") to ACCEPTED, DECLINED,       |
   |                | TENTATIVE, or DELEGATED.                         |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing event.  |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | event.                                           |
   |                |                                                  |
   | REFRESH        | A request is sent to an "Organizer" by an        |
   |                | "Attendee" asking for the latest version of an   |
   |                | event to be resent to the requester.             |
   |                |                                                  |
   | COUNTER        | Counter a REQUEST with an alternative proposal,  |
   |                | Sent by an "Attendee" to the "Organizer".        |
   |                |                                                  |
   | DECLINECOUNTER | Decline a counter proposal. Sent to an           |
   |                | "Attendee" by the "Organizer".                   |
   +================+==================================================+
        
3.2.1 PUBLISH
3.2.1 出版

The "PUBLISH" method in a "VEVENT" calendar component is an unsolicited posting of an iCalendar object. Any CU may add published components to their calendar. The "Organizer" MUST be present in a published iCalendar component. "Attendees" MUST NOT be present. Its expected usage is for encapsulating an arbitrary event as an iCalendar object. The "Organizer" may subsequently update (with another "PUBLISH" method), add instances to (with an "ADD" method), or cancel (with a "CANCEL" method) a previously published "VEVENT" calendar component.

“VEVENT”日历组件中的“PUBLISH”方法是对iCalendar对象的主动发布。任何CU都可以将发布的组件添加到其日历中。“组织者”必须出现在已发布的iCalendar组件中。“与会者”不得出席。它的预期用途是将任意事件封装为iCalendar对象。“组织者”可以随后更新(使用另一个“发布”方法)、向(使用“添加”方法)或取消(使用“取消”方法)先前发布的“VEVENT”日历组件添加实例。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST equal "PUBLISH"
VEVENT              1+
     DTSTAMP        1
     DTSTART        1
     ORGANIZER      1
     SUMMARY        1       Can be null.
     UID            1
     RECURRENCE-ID  0 or 1  only if referring to an instance of a
                            recurring calendar component.  Otherwise
                            it MUST NOT be present.
     SEQUENCE       0 or 1  MUST be present if value is greater than
                            0, MAY be present if 0
     ATTACH         0+
     CATEGORIES     0 or 1  This property may contain a list of
                            values
     CLASS          0 or 1
     COMMENT        0 or 1
     CONTACT        0+
     CREATED        0 or 1
     DESCRIPTION    0 or 1  Can be null
     DTEND          0 or 1  if present DURATION MUST NOT be present
     DURATION       0 or 1  if present DTEND MUST NOT be present
     EXDATE         0+
     EXRULE         0+
     GEO            0 or 1
     LAST-MODIFIED  0 or 1
     LOCATION       0 or 1
     PRIORITY       0 or 1
     RDATE          0+
     RELATED-TO     0+
     RESOURCES      0 or 1 This property MAY contain a list of values
     RRULE          0+
     STATUS         0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
     TRANSP         0 or 1
     URL            0 or 1
     X-PROPERTY     0+
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST equal "PUBLISH"
VEVENT              1+
     DTSTAMP        1
     DTSTART        1
     ORGANIZER      1
     SUMMARY        1       Can be null.
     UID            1
     RECURRENCE-ID  0 or 1  only if referring to an instance of a
                            recurring calendar component.  Otherwise
                            it MUST NOT be present.
     SEQUENCE       0 or 1  MUST be present if value is greater than
                            0, MAY be present if 0
     ATTACH         0+
     CATEGORIES     0 or 1  This property may contain a list of
                            values
     CLASS          0 or 1
     COMMENT        0 or 1
     CONTACT        0+
     CREATED        0 or 1
     DESCRIPTION    0 or 1  Can be null
     DTEND          0 or 1  if present DURATION MUST NOT be present
     DURATION       0 or 1  if present DTEND MUST NOT be present
     EXDATE         0+
     EXRULE         0+
     GEO            0 or 1
     LAST-MODIFIED  0 or 1
     LOCATION       0 or 1
     PRIORITY       0 or 1
     RDATE          0+
     RELATED-TO     0+
     RESOURCES      0 or 1 This property MAY contain a list of values
     RRULE          0+
     STATUS         0 or 1 MAY be one of TENTATIVE/CONFIRMED/CANCELLED
     TRANSP         0 or 1
     URL            0 or 1
     X-PROPERTY     0+
        

ATTENDEE 0 REQUEST-STATUS 0

与会者0请求-状态0

VALARM 0+ VFREEBUSY 0 VJOURNAL 0

VALARM 0+VFREEBUSY 0 VJOURNAL 0

VTODO 0 VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTODO 0 VTIMEZONE 0++

3.2.2 REQUEST
3.2.2 要求

The "REQUEST" method in a "VEVENT" component provides the following scheduling functions:

“VEVENT”组件中的“请求”方法提供以下调度功能:

     .  Invite "Attendees" to an event;
     .  Reschedule an existing event;
     .  Response to a REFRESH request;
     .  Update the details of an existing event, without rescheduling it;
     .  Update the status of "Attendees" of an existing event, without
        rescheduling it;
     .  Reconfirm an existing event, without rescheduling it;
     .  Forward a "VEVENT" to another uninvited CU.
     .  For an existing "VEVENT" calendar component, delegate the role of
        "Attendee" to another CU;
     .  For an existing "VEVENT" calendar component, changing the role of
        "Organizer" to another CU.
        
     .  Invite "Attendees" to an event;
     .  Reschedule an existing event;
     .  Response to a REFRESH request;
     .  Update the details of an existing event, without rescheduling it;
     .  Update the status of "Attendees" of an existing event, without
        rescheduling it;
     .  Reconfirm an existing event, without rescheduling it;
     .  Forward a "VEVENT" to another uninvited CU.
     .  For an existing "VEVENT" calendar component, delegate the role of
        "Attendee" to another CU;
     .  For an existing "VEVENT" calendar component, changing the role of
        "Organizer" to another CU.
        

The "Organizer" originates the "REQUEST". The recipients of the "REQUEST" method are the CUs invited to the event, the "Attendees". "Attendees" use the "REPLY" method to convey attendance status to the "Organizer".

“组织者”发起“请求”。“请求”方法的接收者是被邀请参加活动的CU,即“与会者”。“与会者”使用“回复”方法向“组织者”传达出席状态。

The "UID" and "SEQUENCE" properties are used to distinguish the various uses of the "REQUEST" method. If the "UID" property value in the "REQUEST" is not found on the recipient's calendar, then the "REQUEST" is for a new "VEVENT" calendar component. If the "UID" property value is found on the recipient's calendar, then the "REQUEST" is for a rescheduling, an update, or a reconfirm of the "VEVENT" calendar component.

“UID”和“SEQUENCE”属性用于区分“REQUEST”方法的各种用途。如果在收件人的日历上找不到“请求”中的“UID”属性值,则“请求”是针对新的“VEVENT”日历组件的。如果在收件人的日历上找到“UID”属性值,则“请求”用于重新安排、更新或重新确认“VEVENT”日历组件。

For the "REQUEST" method, multiple "VEVENT" components in a single iCalendar object are only permitted when for components with the same "UID" property. That is, a series of recurring events may have instance-specific information. In this case, multiple "VEVENT" components are needed to express the entire series.

对于“REQUEST”方法,只有当组件具有相同的“UID”属性时,才允许在单个iCalendar对象中使用多个“VEVENT”组件。也就是说,一系列重复发生的事件可能具有特定于实例的信息。在这种情况下,需要多个“VEVENT”组件来表示整个系列。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
-----------------------------------------------------------------
METHOD              1       MUST be "REQUEST"
VEVENT              1+      All components MUST have the same UID
    ATTENDEE        1+
    DTSTAMP         1
    DTSTART         1
    ORGANIZER       1
    SEQUENCE        0 or 1  MUST be present if value is greater than 0,
                            MAY be present if 0
    SUMMARY         1       Can be null
    UID             1
        
Component/Property  Presence
-----------------------------------------------------------------
METHOD              1       MUST be "REQUEST"
VEVENT              1+      All components MUST have the same UID
    ATTENDEE        1+
    DTSTAMP         1
    DTSTART         1
    ORGANIZER       1
    SEQUENCE        0 or 1  MUST be present if value is greater than 0,
                            MAY be present if 0
    SUMMARY         1       Can be null
    UID             1
        

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DTEND 0 or 1 if present DURATION MUST NOT be present DURATION 0 or 1 if present DTEND MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PRIORITY 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ REQUEST-STATUS 0+ RESOURCES 0 or 1 This property MAY contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED TRANSP 0 or 1 URL 0 or 1 X-PROPERTY 0+

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1可以为空DTEND 0或1如果当前持续时间不能为当前持续时间0或1如果当前DTEND不能为当前持续时间EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1优先级0或1RDATE 0+RECURRENCE-ID 0或1仅当引用定期日历组件的实例时。否则它就不能出现。相关-与0+请求-状态0+资源0或1此属性可能包含值列表RRLE 0+状态0或1可能是暂定/确认传输0或1 URL 0或1 X属性0之一+

VALARM 0+ VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0++

VFREEBUSY 0 VJOURNAL 0 VTODO 0

VFREEBUSY 0 VJOURNAL 0 VTODO 0

3.2.2.1 Rescheduling an Event
3.2.2.1 重新安排活动

The "REQUEST" method may be used to reschedule an event. A rescheduled event involves a change to the existing event in terms of its time or recurrence intervals and possibly the location or description. If the recipient CUA of a "REQUEST" method finds that the "UID" property value already exists on the calendar, but that the "SEQUENCE" (or "DTSTAMP") property value in the "REQUEST" method is greater than the value for the existing event, then the "REQUEST" method describes a rescheduling of the event.

“请求”方法可用于重新安排事件。重新安排的事件涉及更改现有事件的时间或重复间隔,以及可能的位置或描述。如果“REQUEST”方法的接收方CUA发现日历上已经存在“UID”属性值,但“REQUEST”方法中的“SEQUENCE”(或“DTSTAMP”)属性值大于现有事件的值,则“REQUEST”方法描述事件的重新调度。

3.2.2.2 Updating or Reconfirmation of an Event
3.2.2.2 事件的更新或再确认

The "REQUEST" method may be used to update or reconfirm an event. An update to an existing event does not involve changes to the time or recurrence intervals, and might not involve a change to the location or description for the event. If the recipient CUA of a "REQUEST" method finds that the "UID" property value already exists on the calendar and that the "SEQUENCE" property value in the "REQUEST" is the same as the value for the existing event, then the "REQUEST" method describes an update of the event details, but no rescheduling of the event.

“请求”方法可用于更新或重新确认事件。对现有事件的更新不涉及时间或重复间隔的更改,也可能不涉及事件位置或描述的更改。如果“请求”方法的收件人CUA发现日历上已经存在“UID”属性值,并且“请求”中的“序列”属性值与现有事件的值相同,则“请求”方法描述事件详细信息的更新,但不重新安排事件。

The update "REQUEST" method is the appropriate response to a "REFRESH" method sent from an "Attendee" to the "Organizer" of an event.

更新“请求”方法是对事件“参与者”发送给“组织者”的“刷新”方法的适当响应。

The "Organizer" of an event may also send unsolicited "REQUEST" methods. The unsolicited "REQUEST" methods may be used to update the details of the event without rescheduling it, to update the "partstat" parameter of "Attendees", or to reconfirm the event.

活动的“组织者”也可以发送未经请求的“请求”方法。非请求的“请求”方法可用于在不重新安排的情况下更新事件的详细信息,更新“与会者”的“partstat”参数,或重新确认事件。

3.2.2.3 Delegating an Event to another CU
3.2.2.3 将事件委派给另一个CU

Some calendar and scheduling systems allow "Attendees" to delegate their presence at an event to another calendar user. ITIP supports this concept using the following workflow. Any "Attendee" may delegate their right to participate in a calendar VEVENT to another CU. The implication is that the delegate participates in lieu of the original "Attendee"; NOT in addition to the "Attendee". The delegator MUST notify the "Organizer" of this action using the steps outlined below. Implementations may support or restrict delegation as they see fit. For instance, some implementations may restrict a delegate from delegating a "REQUEST" to another CU.

某些日历和日程安排系统允许“与会者”将其在活动中的出席情况委派给其他日历用户。ITIP使用以下工作流支持此概念。任何“与会者”均可将其参加日历活动的权利委托给其他CU。这意味着代表代替原来的“与会者”参与;不在“与会者”之外。授权人必须按照以下步骤通知“组织者”。实现可以支持或限制他们认为合适的委托。例如,一些实现可能会限制委托将“请求”委托给另一个CU。

The "Delegator" of an event forwards the existing "REQUEST" to the "Delegate". The "REQUEST" method MUST include an "ATTENDEE" property with the calendar address of the "Delegate". The "Delegator" MUST also send a "REPLY" method to the "Organizer" with the "Delegator's" "ATTENDEE" property "partstat" parameter value set to "delegated". In addition, the "delegated-to" parameter MUST be included with the calendar address of the "Delegate".

事件的“委托人”将现有的“请求”转发给“委托人”。“请求”方法必须包含一个带有“代表”日历地址的“与会者”属性。“Delegator”还必须向“Organizer”发送“REPLY”方法,并将“Delegator的”“ATTENDEE”属性“partstat”参数值设置为“delegated”。此外,“委托人”参数必须包含在“委托人”的日历地址中。

In response to the request, the "Delegate" MUST send a "REPLY" method to the "Organizer" and optionally, to the "Delegator". The "REPLY" method " SHOULD include the "ATTENDEE" property with the "delegated-from" parameter value of the "Delegator's" calendar address.

为了响应请求,“代理人”必须向“组织者”和“代理人”发送“答复”方法。“REPLY”方法“应包括“ATTENDEE”属性以及“Delegator”日历地址的“Delegate from”参数值。

The "Delegator" may continue to receive updates to the event even though they will not be attending. This is accomplished by the "Delegator" setting their "role" attribute to " NON-PARTICIPANT" in the "REPLY" to the "Organizer"

“授权人”可能会继续收到活动的更新,即使他们不出席。这是通过“委托人”在对“组织者”的“回复”中将其“角色”属性设置为“非参与者”来实现的

3.2.2.4 Changing the Organizer
3.2.2.4 更改组织者

The situation may arise where the "Organizer" of a VEVENT is no longer able to perform the "Organizer" role and abdicates without passing on the "Organizer" role to someone else. When this occurs the "Attendees" of the VEVENT may use out-of-band mechanisms to communicate the situation and agree upon a new "Organizer". The new "Organizer" should then send out a new "REQUEST" with a modified version of the VEVENT in which the "SEQUENCE" number has been incremented and value of the "ORGANIZER" property has been changed to the calendar address of the new "Organizer".

可能出现这样的情况:VEVENT的“组织者”不再能够执行“组织者”角色,并且在没有将“组织者”角色传递给其他人的情况下退位。发生这种情况时,VEVENT的“与会者”可以使用带外机制传达情况,并商定新的“组织者”。然后,新的“组织者”应发送一个新的“请求”,其中VEVENT的修改版本中的“序列”号已递增,“组织者”属性的值已更改为新“组织者”的日历地址。

3.2.2.5 Sending on Behalf of the Organizer
3.2.2.5 代表主办方发送

There are a number of scenarios that support the need for a calendar user to act on behalf of the "Organizer" without explicit role changing. This might be the case if the CU designated as "Organizer" was sick or unable to perform duties associated with that function. In these cases iTIP supports the notion of one CU acting on behalf of another. Using the "sent-by" parameter, a calendar user could send an updated "VEVENT" REQUEST. In the case where one CU sends on behalf of another CU, the "Attendee" responses are still directed back towards the CU designated as "Organizer".

有许多场景支持日历用户代表“组织者”行事,而无需明确更改角色。如果指定为“组织者”的CU生病或无法履行与该职能相关的职责,则可能会出现这种情况。在这些情况下,iTIP支持一个CU代表另一个CU的概念。使用“发送人”参数,日历用户可以发送更新的“VEVENT”请求。在一个CU代表另一个CU发送的情况下,“与会者”响应仍然指向指定为“组织者”的CU。

3.2.2.6 Forwarding to An Uninvited CU
3.2.2.6 转发给未经邀请的CU

An "Attendee" invited to an event may invite another uninvited CU to the event. The invited "Attendee" accomplishes this by forwarding the original "REQUEST" method to the uninvited CU. The "Organizer" decides whether or not the uninvited CU is added to the attendee

受邀参加活动的“与会者”可能会邀请其他未经邀请的CU参加活动。被邀请的“与会者”通过将原始“请求”方法转发给未被邀请的CU来完成此任务。“组织者”决定是否将未邀请的CU添加到与会者

list. If the "Organizer" decides not to add the uninvited CU no further action is required, however the "Organizer" MAY send the uninvited CU a "CANCEL" message. If the "Organizer" decides to add an uninvited CU, a new "ATTENDEE" property is added for the uninvited CU with its property parameters set as the "Organizer" deems appropriate. When forwarding a "REQUEST" to another CU, the forwarding "Attendee" MUST NOT make changes to the VEVENT property set.

列表如果“组织者”决定不添加未邀请的CU,则无需进一步操作,但是“组织者”可以向未邀请的CU发送“取消”消息。如果“组织者”决定添加未邀请的CU,则会为未邀请的CU添加一个新的“ATTENDEE”属性,其属性参数设置为“组织者”认为合适。将“请求”转发给其他CU时,转发“与会者”不得更改VEVENT属性集。

3.2.2.7 Updating Attendee Status
3.2.2.7 更新与会者状态

The "Organizer" of an event may also request updated status from one or more "Attendees. The "Organizer" sends a "REQUEST" method to the "Attendee" and sets the "ATTENDEE;RSVP=TRUE" property parameter. The "SEQUENCE" property for the event is not changed from its previous value. A recipient will determine that the only change in the "REQUEST" is that their "RSVP" property parameter indicates a request for updated status. The recipient SHOULD respond with a "REPLY" method indicating their current status with respect to the "REQUEST".

活动的“组织者”还可以向一个或多个“与会者”请求更新状态。“组织者”向“与会者”发送“请求”方法并设置“与会者”;RSVP=TRUE”属性参数。事件的“SEQUENCE”属性与其以前的值没有更改。收件人将确定“REQUEST”中唯一的更改是其“RSVP”属性参数指示更新状态的请求。收件人应以“REPLY”响应方法,指示其相对于“请求”的当前状态。

3.2.3 REPLY
3.2.3 回复

The "REPLY" method in a "VEVENT" calendar component is used to respond (e.g., accept or decline) to a "REQUEST" or to reply to a delegation "REQUEST". When used to provide a delegation response, the "Delegator" SHOULD include the calendar address of the "Delegate" on the "delegated-to" property parameter of the "Delegator's" "ATTENDEE" property. The "Delegate" SHOULD include the calendar address of the "Delegator" on the "delegated-from" property parameter of the "Delegate's" "ATTENDEE" property.

“VEVENT”日历组件中的“REPLY”方法用于响应(例如,接受或拒绝)“请求”或答复委托“请求”。当用于提供委派响应时,“委派者”应在“委派者”的“与会者”属性的“委派对象”属性参数中包含“委派者”的日历地址。“代理人”应在“代理人的”“与会者”属性的“委派自”属性参数中包含“代理人”的日历地址。

The "REPLY" method may also be used to respond to an unsuccessful "REQUEST" method. Depending on the value of the "REQUEST-STATUS" property no scheduling action may have been performed.

“回复”方法也可用于响应不成功的“请求”方法。根据“REQUEST-STATUS”属性的值,可能未执行任何调度操作。

The "Organizer" of an event may receive the "REPLY" method from a CU not in the original "REQUEST". For example, a "REPLY" may be received from a "Delegate" to an event. In addition, the "REPLY" method may be received from an unknown CU (a "Party Crasher"). This uninvited "Attendee" may be accepted, or the "Organizer" may cancel the event for the uninvited "Attendee" by sending a "CANCEL" method to the uninvited "Attendee".

活动的“组织者”可能会收到来自CU的“回复”方法,而该CU不在原始“请求”中。例如,可以从事件的“委托人”处收到“回复”。此外,可以从未知CU(“一方破坏者”)接收“回复”方法。此未邀请的“与会者”可能会被接受,或者“组织者”可以通过向未邀请的“与会者”发送“取消”方法来取消未邀请的“与会者”的活动。

An "Attendee" can include a message to the "Organizer" using the "COMMENT" property. For example, if the user indicates tentative acceptance and wants to let the "Organizer" know why, the reason can be expressed in the "COMMENT" property value.

“与会者”可以使用“评论”属性向“组织者”发送消息。例如,如果用户表示暂时接受,并希望让“组织者”知道原因,则可以在“评论”属性值中表示原因。

The "Organizer" may also receive a "REPLY" from one CU on behalf of another. Like the scenario enumerated above for the "Organizer", "Attendees" may have another CU respond on their behalf. This is done using the "sent-by" parameter.

“组织者”还可以从一个CU代表另一个CU收到“回复”。与上面列举的“组织者”场景类似,“与会者”可能会有另一个CU代表他们进行响应。这是使用“发送人”参数完成的。

The optional properties listed in the table below (those listed as "0+" or "0 or 1") MUST NOT be changed from those of the original request. If property changes are desired the COUNTER message must be used.

下表中列出的可选属性(列为“0+”或“0或1”)不得更改为原始请求的属性。如果需要更改属性,则必须使用计数器消息。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST be "REPLY"
VEVENT              1+      All components MUST have the same UID
    ATTENDEE        1       MUST be the address of the Attendee
                            replying.
    DTSTAMP         1
    ORGANIZER       1
    RECURRENCE-ID   0 or 1  only if referring to an instance of a
                            recurring calendar component.  Otherwise
                            it must NOT be present.
    UID             1       MUST be the UID of the original REQUEST
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST be "REPLY"
VEVENT              1+      All components MUST have the same UID
    ATTENDEE        1       MUST be the address of the Attendee
                            replying.
    DTSTAMP         1
    ORGANIZER       1
    RECURRENCE-ID   0 or 1  only if referring to an instance of a
                            recurring calendar component.  Otherwise
                            it must NOT be present.
    UID             1       MUST be the UID of the original REQUEST
        

SEQUENCE 0 or 1 MUST if non-zero, MUST be the sequence number of the original REQUEST. MAY be present if 0.

序列0或1必须是原始请求的序列号(如果非零)。如果0,则可能存在。

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTEND 0 or 1 if present DURATION MUST NOT be present DTSTART 0 or 1 DURATION 0 or 1 if present DTEND MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PRIORITY 0 or 1 RDATE 0+ RELATED-TO 0+

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1描述0或1 DTEND 0或1如果当前持续时间不存在DTSTART 0或1持续时间0或1如果当前DTEND不存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1优先级0或1RDATE 0+与0相关+

RESOURCES 0 or 1 This property MAY contain a list of values REQUEST-STATUS 0+ RRULE 0+ STATUS 0 or 1 SUMMARY 0 or 1 TRANSP 0 or 1 URL 0 or 1 X-PROPERTY 0+

资源0或1此属性可能包含值列表REQUEST-STATUS 0+RRULE 0+STATUS 0或1 SUMMARY 0或1 TRANSP 0或1 URL 0或1 X-property 0+

VTIMEZONE 0 or 1 MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0或1+

VALARM 0 VFREEBUSY 0 VJOURNAL 0 VTODO 0

VALARM 0 VFREEBUSY 0 VJOURNAL 0 VTODO 0

3.2.4 ADD
3.2.4 添加

The "ADD" method in a "VEVENT" calendar component is used to add one or more instances to an existing "VEVENT". Unlike the "REQUEST" method, when using issuing an "ADD" method, the "Organizer" does not send the full "VEVENT" description; only the new instance(s). The "ADD" method is especially useful if there are instance-specific properties to be preserved in a recurring "VEVENT". For instance, an "Organizer" may have originally scheduled a weekly Thursday meeting. At some point, several instances changed. Location or start time may have changed, or some instances may have unique "DESCRIPTION" properties. The "ADD" method allows the "Organizer" to add new instances to an existing event using a single ITIP message without redefining the entire recurring pattern.

“VEVENT”日历组件中的“ADD”方法用于将一个或多个实例添加到现有的“VEVENT”。与“请求”方法不同,当使用“添加”方法时,“组织者”不发送完整的“事件”描述;仅限新实例。如果在重复出现的“VEVENT”中要保留特定于实例的属性,“ADD”方法特别有用。例如,“组织者”最初可能安排了每周周四的会议。在某个时候,几个实例发生了变化。位置或开始时间可能已更改,或者某些实例可能具有唯一的“描述”属性。“ADD”方法允许“Organizer”使用单个ITIP消息向现有事件添加新实例,而无需重新定义整个重复模式。

The "UID" must be that of the existing event. If the "UID" property value in the "ADD" is not found on the recipient's calendar, then the recipient SHOULD send a "REFRESH" to the "Organizer" in order to be updated with the latest version of the "VEVENT". If an "Attendee" implementation does not support the "ADD" method it should respond with a "REQUEST-STATUS" value of 3.14 and ask for a "REFRESH".

“UID”必须是现有事件的UID。如果在收件人的日历上未找到“添加”中的“UID”属性值,则收件人应向“组织者”发送“刷新”,以便使用“VEVENT”的最新版本进行更新。如果“Attendee”实现不支持“ADD”方法,则应使用“REQUEST-STATUS”值3.14进行响应,并请求“刷新”。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "ADD"
VEVENT              1
    DTSTAMP         1
    DTSTART         1
    ORGANIZER       1
    SEQUENCE        1      MUST be greater than 0
    SUMMARY         1      Can be null
    UID             1      MUST match that of the original event
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "ADD"
VEVENT              1
    DTSTAMP         1
    DTSTART         1
    ORGANIZER       1
    SEQUENCE        1      MUST be greater than 0
    SUMMARY         1      Can be null
    UID             1      MUST match that of the original event
        

ATTACH 0+ ATTENDEE 0+ CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DTEND 0 or 1 if present DURATION MUST NOT be present DURATION 0 or 1 if present DTEND MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PRIORITY 0 or 1 RDATE 0+ RELATED-TO 0+ RESOURCES 0 or 1 This property MAY contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of TENTATIVE/CONFIRMED TRANSP 0 or 1 URL 0 or 1 X-PROPERTY 0+

附加0+与会者0+类别0或1此属性可能包含值列表类别0或1评论0或1联系人0+创建的0或1描述0或1可以为空DTEND 0或1如果当前持续时间不能为当前持续时间0或1如果当前DTEND不能为当前持续时间EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1优先级0或1日期0+与0+资源0或1相关此属性可能包含值列表RRLE 0+状态0或1可能是暂定/确认传输0或1 URL 0或1 X属性0之一+

RECURRENCE-ID 0 REQUEST-STATUS 0

重复周期ID 0请求状态0

VALARM 0+ VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0++

VFREEBUSY 0 VTODO 0 VJOURNAL 0

VFREEBUSY 0 VTODO 0 VJOURNAL 0

3.2.5 CANCEL
3.2.5 取消

The "CANCEL" method in a "VEVENT" calendar component is used to send a cancellation notice of an existing event request to the "Attendees". The message is sent by the "Organizer" of the event. For a recurring event, either the whole event or instances of an event may be cancelled. To cancel the complete range of recurring event, the "UID" property value for the event MUST be specified and a "RECURRENCE-ID" MUST NOT be specified in the "CANCEL" method. In order to cancel an individual instance of the event, the "RECURRENCE-ID" property value for the event MUST be specified in the "CANCEL" method.

“VEVENT”日历组件中的“取消”方法用于向“与会者”发送现有活动请求的取消通知。该消息由活动的“组织者”发送。对于重复发生的事件,可以取消整个事件或事件的实例。若要取消定期事件的完整范围,必须指定事件的“UID”属性值,并且不得在“取消”方法中指定“RECURRENCE-ID”。要取消事件的单个实例,必须在“cancel”方法中指定事件的“RECURRENCE-ID”属性值。

There are two options for canceling a sequence of instances of a recurring "VEVENT" calendar component:

有两个选项可用于取消周期性“VEVENT”日历组件的一系列实例:

(a) the "RECURRENCE-ID" property for an instance in the sequence MUST be specified with the "RANGE" property parameter value of THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the specified "VEVENT" calendar component and all instances before (or after); or

(a) 序列中实例的“RECURRENCE-ID”属性必须使用ThisandPrevior(或THISANDFUTURE)的“RANGE”属性参数值指定,以指示取消指定的“VEVENT”日历组件以及之前(或之后)的所有实例;或

(b) individual recurrence instances may be cancelled by specifying multiple "RECURRENCE-ID" properties corresponding to the instances to be cancelled.

(b) 可以通过指定与要取消的实例对应的多个“recurrence-ID”属性来取消单个重复实例。

When a "VEVENT" is cancelled, the "SEQUENCE" property value MUST be incremented.

取消“VEVENT”时,“SEQUENCE”属性值必须递增。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "CANCEL"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "CANCEL"
        

VEVENT 1+ All must have the same UID ATTENDEE 0+ MUST include all "Attendees" being removed the event. MUST include all "Attendees" if the entire event is cancelled. DTSTAMP 1 ORGANIZER 1 SEQUENCE 1 UID 1 MUST be the UID of the original REQUEST

VEVENT 1+所有参与者必须具有相同的UID与会者0+必须包括要从事件中删除的所有“与会者”。如果整个活动取消,则必须包括所有“与会者”。DTSTAMP 1 ORGANIZER 1 SEQUENCE 1 UID 1必须是原始请求的UID

COMMENT 0 or 1 ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values

注释0或1附加0+类别0或1此属性可能包含值列表

CLASS 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTEND 0 or 1 if present DURATION MUST NOT be present DTSTART 0 or 1 DURATION 0 or 1 if present DTEND MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PRIORITY 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST be present if referring to one or more or more recurring instances. Otherwise it MUST NOT be present RELATED-TO 0+ RESOURCES 0 or 1 RRULE 0+ STATUS 0 or 1 MUST be set to CANCELLED. If uninviting specific "Attendees" then MUST NOT be included. SUMMARY 0 or 1 TRANSP 0 or 1 URL 0 or 1 X-PROPERTY 0+ REQUEST-STATUS 0

类别0或1联系人0+创建0或1描述0或1 DTEND 0或1如果当前持续时间不能存在DTSTART 0或1 DURATION 0或1如果当前DTEND不能存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1优先级0或1 RDATE 0+重复ID 0或1如果引用一个或多个重复出现的实例。否则,它不能与0+资源0或1相关。RRULE 0+状态0或1必须设置为已取消。如果不吸引特定的“与会者”,则不得包括在内。摘要0或1传输0或1 URL 0或1 X属性0+请求状态0

VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0++

VTODO 0 VJOURNAL 0 VFREEBUSY 0 VALARM 0

VTODO 0 VJOURNAL 0 VFREEBUSY 0 VALARM 0

3.2.6 REFRESH
3.2.6 刷新

The "REFRESH" method in a "VEVENT" calendar component is used by "Attendees" of an existing event to request an updated description from the event "Organizer". The "REFRESH" method must specify the "UID" property of the event to update. A recurrence instance of an event may be requested by specifying the "RECURRENCE-ID" property corresponding to the associated event. The "Organizer" responds with the latest description and version of the event.

“VEVENT”日历组件中的“刷新”方法由现有事件的“与会者”使用,以向事件“组织者”请求更新的描述。“REFRESH”方法必须指定要更新的事件的“UID”属性。可以通过指定与关联事件对应的“recurrence-ID”属性来请求事件的重复实例。“组织者”以事件的最新描述和版本作出回应。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REFRESH"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REFRESH"
        

VEVENT 1 ATTENDEE 1 MUST be the address of requestor DTSTAMP 1 ORGANIZER 1 UID 1 MUST be the UID associated with original REQUEST COMMENT 0 or 1 RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a recurring calendar component. Otherwise it must NOT be present. X-PROPERTY 0+

VEVENT 1 ATTENDEE 1必须是请求者DTSTAMP 1组织者1的地址UID 1必须是与原始请求注释0或1关联的UID REQUIRCE-ID 0或1仅当引用定期日历组件的实例时才可以。否则它就不能出现。X-属性0+

ATTACH 0 CATEGORIES 0 CLASS 0 CONTACT 0 CREATED 0 DESCRIPTION 0 DTEND 0 DTSTART 0 DURATION 0 EXDATE 0 EXRULE 0 GEO 0 LAST-MODIFIED 0 LOCATION 0 PRIORITY 0 RDATE 0 RELATED-TO 0 REQUEST-STATUS 0 RESOURCES 0 RRULE 0 SEQUENCE 0 STATUS 0 SUMMARY 0 TRANSP 0 URL 0

附加0类别0类别0联系人0已创建0描述0数据结束0数据开始0持续时间0出厂日期0出厂规则0地理位置0上次修改0位置0优先级0日期0相关0请求状态0资源0错误0序列0状态0摘要0传输0 URL 0

X-COMPONENT 0+

X分量0+

VTODO 0

VTODO 0

VJOURNAL 0 VFREEBUSY 0 VTIMEZONE 0 VALARM 0

VJOURNAL 0 VFREEBUSY 0 VTIMEZONE 0 VALARM 0

3.2.7 COUNTER
3.2.7 柜台

The "COUNTER" method for a "VEVENT" calendar component is used by an "Attendee" of an existing event to submit to the "Organizer" a counter proposal to the event description. The "Attendee" sends this message to the "Organizer" of the event.

“VEVENT”日历组件的“计数器”方法由现有活动的“与会者”使用,以向“组织者”提交活动描述的计数器提案。“与会者”将此消息发送给活动的“组织者”。

The counter proposal is an iCalendar object consisting of a VEVENT calendar component describing the complete description of the alternate event.

反提案是一个iCalendar对象,由一个VEVENT日历组件组成,用于描述备用事件的完整描述。

The "Organizer" rejects the counter proposal by sending the "Attendee" a VEVENT "DECLINECOUNTER" method. The "Organizer" accepts the counter proposal by rescheduling the event as described in section 3.2.2.1 Rescheduling an Event.

“组织者”通过向“与会者”发送VEVENT“DECLINECOUNTER”方法拒绝反提案。“组织者”通过按照第3.2.2.1节“重新安排活动”所述重新安排活动,接受反建议。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "COUNTER"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "COUNTER"
        

VEVENT 1 DTSTAMP 1 DTSTART 1 ORGANIZER 1 MUST be the "Organizer" of the original event SEQUENCE 1 MUST be present if value is greater than 0, MAY be present if 0 SUMMARY 1 Can be null UID 1 MUST be the UID associated with the REQUEST being countered

VEVENT 1 DTSTAMP 1 DTSTART 1组织者1必须是原始事件序列的“组织者”1如果值大于0则必须存在,如果值为0则可能存在摘要1可以为空UID 1必须是与被计数器的请求关联的UID

ATTACH 0+ ATTENDEE 0+ Can also be used to propose other "Attendees" CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1

附加0+与会者0+还可用于建议其他“与会者”类别0或1此属性可能包含值列表类0或1评论0或1联系人0+创建的0或1描述0或1

DTEND 0 or 1 if present DURATION MUST NOT be present DURATION 0 or 1 if present DTEND MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PRIORITY 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ REQUEST-STATUS 0+ RESOURCES 0 or 1 This property may contain a list of values RRULE 0+ STATUS 0 or 1 Value must be one of CONFIRMED/TENATIVE/ CANCELLED TRANSP 0 or 1 URL 0 or 1 X-PROPERTY 0+

DTEND 0或1如果当前持续时间必须不存在持续时间0或1如果当前DTEND必须不存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1优先级0或1 RDATE 0+重复ID 0或1仅当引用定期日历组件的实例时才可以。否则它就不能出现。相关-与0+请求-状态0+资源0或1此属性可能包含值列表RRLE 0+状态0或1值必须是已确认/有效/已取消传输0或1 URL 0或1 X属性0之一+

VALARM 0+ VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0++

VTODO 0 VJOURNAL 0 VFREEBUSY 0

VTODO 0 VJOURNAL 0 VFREEBUSY 0

3.2.8 DECLINECOUNTER
3.2.8 下线计数器

The "DECLINECOUNTER" method in a "VEVENT" calendar component is used by the "Organizer" of an event to reject a counter proposal submitted by an "Attendee". The "Organizer" must send the "DECLINECOUNTER" message to the "Attendee" that sent the "COUNTER" method to the "Organizer".

“VEVENT”日历组件中的“DECLINECOUNTER”方法由活动的“组织者”用于拒绝“与会者”提交的反提案。“组织者”必须将“DECLINECOUNTER”消息发送给向“组织者”发送“COUNTER”方法的“与会者”。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "DECLINECOUNTER"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "DECLINECOUNTER"
        

VEVENT 1 DTSTAMP 1 ORGANIZER 1 UID 1 MUST, same UID specified in original REQUEST and subsequent COUNTER COMMENT 0 or 1 RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. REQUEST-STATUS 0+ SEQUENCE 0 OR 1 MUST be present if value is greater than 0, MAY be present if 0 X-PROPERTY 0+ ATTACH 0 ATTENDEE 0 CATEGORIES 0 CLASS 0 CONTACT 0 CREATED 0 DESCRIPTION 0 DTEND 0 DTSTART 0 DURATION 0 EXDATE 0 EXRULE 0 GEO 0 LAST-MODIFIED 0 LOCATION 0 PRIORITY 0 RDATE 0 RELATED-TO 0 RESOURCES 0 RRULE 0 STATUS 0 SUMMARY 0 TRANSP 0 URL 0

VEVENT 1 DTSTAMP 1 ORGANIZER 1 UID 1必须与原始请求和后续反注释中指定的UID 0或1 RECURRENCE-ID 0或1必须相同,仅当引用定期日历组件的实例时才可以。否则它就不能出现。如果值大于0,则请求状态0+序列0或1必须存在,如果0 X-属性0+附加0与会者0类别0类别0联系人0创建0描述0结束0开始0持续时间0结束日期0结束规则0地理位置0上次修改0位置0优先级0关系日期0相关0资源0错误0状态0摘要0传输0 URL 0,则可能存在

X-COMPONENT 0+ VTODO 0 VJOURNAL 0 VFREEBUSY 0 VTIMEZONE 0 VALARM 0

X组件0+VTODO 0 VJOURNAL 0 VFREEBUSY 0 VTIMEZONE 0 VALARM 0

3.3 Methods For VFREEBUSY Components
3.3 VFREEBUSY组件的方法

This section defines the property set for the methods that are applicable to the "VFREEBUSY" calendar component. Each of the methods is defined using a restriction table.

本节定义适用于“VFREEBUSY”日历组件的方法的属性集。每个方法都是使用限制表定义的。

This document only addresses the transfer of busy time information. Applications desiring free time information MUST infer this from available busy time information.

本文档仅涉及忙时信息的传输。需要空闲时间信息的应用程序必须从可用的繁忙时间信息中推断出来。

The busy time information within the iCalendar object MAY be grouped into more than one "VFREEBUSY" calendar component. This capability allows busy time periods to be grouped according to some common periodicity, such as a calendar week, month, or year. In this case, each "VFREEBUSY" calendar component MUST include the "ATTENDEE", "DTSTART" and "DTEND" properties in order to specify the source of the busy time information and the date and time interval over which the busy time information covers.

iCalendar对象中的忙时信息可以分组到多个“VFREEBUSY”日历组件中。此功能允许根据某些常见周期(如日历周、月或年)对繁忙时间段进行分组。在这种情况下,每个“VFREEBUSY”日历组件必须包含“ATTENDEE”、“DTSTART”和“DTEND”属性,以便指定繁忙时间信息的来源以及繁忙时间信息覆盖的日期和时间间隔。

The "FREEBUSY" property value MAY include a list of values, separated by the COMMA character ([US-ASCII] decimal 44). Alternately, multiple busy time periods MAY be specified with multiple instances of the "FREEBUSY" property. Both forms MUST be supported by implementations conforming to this document. Duplicate busy time periods SHOULD NOT be specified in an iCalendar object. However, two different busy time periods MAY overlap.

“FREEBUSY”属性值可能包括一个值列表,由逗号字符([US-ASCII]十进制44)分隔。或者,可以使用“FREEBUSY”属性的多个实例指定多个繁忙时间段。这两种形式都必须有符合本文件要求的实施支持。不应在iCalendar对象中指定重复的忙时段。但是,两个不同的繁忙时间段可能重叠。

"FREEBUSY" properties should be sorted such that their values are in ascending order, based on the start time, and then the end time, with the earliest periods first. For example, today's busy time information should appear after yesterday's busy time information. And the busy time for this half-hour should appear after the busy time for earlier today.

“FREEBUSY”属性的排序应确保其值按升序排列,先是开始时间,然后是结束时间,先是最早的时段。例如,今天的繁忙时间信息应显示在昨天的繁忙时间信息之后。这半小时的繁忙时间应该在今天早些时候的繁忙时间之后出现。

Since events may span a day boundary, free busy time period may also span a day boundary. Individual "A" requests busy time from individuals "B", "C" and "D". Individual "B" and "C" replies with busy time data to individual "A". Individual "D" does not support busy time requests and does not reply with any data. If the transport binding supports exception messages, then individual "D" returns an "unsupported capability" message to individual "A4.34.3".

由于事件可能跨越一天边界,忙/闲时间段也可能跨越一天边界。个人“A”向个人“B”、“C”和“D”请求繁忙时间。个人“B”和“C”用繁忙时间数据回复个人“A”。单个“D”不支持繁忙时间请求,也不使用任何数据进行回复。如果传输绑定支持异常消息,则单个“D”将向单个“A4.34.3”返回“不支持的功能”消息。

The following summarizes the methods that are defined for the "VFREEBUSY" calendar component.

下面总结了为“VFREEBUSY”日历组件定义的方法。

   |================|==================================================|
   | Method         |  Description                                     |
   |================|==================================================|
   | PUBLISH        | Publish unsolicited busy time data.              |
   | REQUEST        | Request busy time data.                          |
   | REPLY          | Reply to a busy time request.                    |
   |================|==================================================|
        
   |================|==================================================|
   | Method         |  Description                                     |
   |================|==================================================|
   | PUBLISH        | Publish unsolicited busy time data.              |
   | REQUEST        | Request busy time data.                          |
   | REPLY          | Reply to a busy time request.                    |
   |================|==================================================|
        
3.3.1 PUBLISH
3.3.1 出版

The "PUBLISH" method in a "VFREEBUSY" calendar component is used to publish busy time data. The method may be sent from one CU to any other. The purpose of the method is to provide a message for sending unsolicited busy time data. That is, the busy time data is not being sent as a "REPLY" to the receipt of a "REQUEST" method.

“vfreebush”日历组件中的“PUBLISH”方法用于发布繁忙时间数据。该方法可以从一个CU发送到任何其他CU。该方法的目的是提供用于发送未经请求的忙时数据的消息。也就是说,繁忙时间数据不是作为对“请求”方法的接收的“回复”发送的。

The "ATTENDEE" property must be specified in the busy time information. The value is the CU address of the originator of the busy time information.

必须在繁忙时间信息中指定“ATTENDEE”属性。该值是繁忙时间信息发起者的CU地址。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST be "PUBLISH"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1       MUST be "PUBLISH"
        

VFREEBUSY 1+ DTSTAMP 1 DTSTART 1 DateTime values must be in UTC DTEND 1 DateTime values must be in UTC FREEBUSY 1+ MUST be BUSYTIME. Multiple instances are allowed. Multiple instances must be sorted in ascending order ORGANIZER 1 MUST contain the address of originator of busy time data.

VFREEBUSY 1+DTSTAMP 1 DTSTART 1日期时间值必须为UTC DTEND 1日期时间值必须为UTC FREEBUSY 1+必须为BUSYTIME。允许多个实例。多个实例必须按升序排序组织者1必须包含繁忙时间数据的发起人地址。

COMMENT 0 or 1 CONTACT 0+ X-PROPERTY 0+ URL 0 or 1 Specifies busy time URL

注释0或1联系人0+X属性0+URL 0或1指定忙时URL

ATTENDEE 0 DURATION 0 REQUEST-STATUS 0 UID 0

与会者0持续时间0请求状态0 UID 0

X-COMPONENT 0+

X分量0+

VEVENT 0 VTODO 0 VJOURNAL 0 VTIMEZONE 0 VALARM 0

VEVENT 0 VTODO 0 VJOURNAL 0 VTIMEZONE 0 VALARM 0

3.3.2 REQUEST
3.3.2 要求

The "REQUEST" method in a "VFREEBUSY" calendar component is used to ask a "Calendar User" for their busy time information. The request may be for a busy time information bounded by a specific date and time interval.

“vfreebush”日历组件中的“REQUEST”方法用于询问“日历用户”的忙时信息。该请求可以是对由特定日期和时间间隔限定的忙时信息的请求。

This message only permits requests for busy time information. The message is sent from a "Calendar User" requesting the busy time information to one or more intended recipients.

此消息仅允许请求繁忙时间信息。该消息由“日历用户”发送,请求向一个或多个预期收件人发送繁忙时间信息。

If the originator of the "REQUEST" method is not authorized to make a busy time request on the recipient's calendar system, then an exception message SHOULD be returned in a "REPLY" method, but no busy time data need be returned.

如果“请求”方法的发起人未被授权在收件人的日历系统上发出繁忙时间请求,则应在“回复”方法中返回异常消息,但无需返回繁忙时间数据。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REQUEST"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REQUEST"
        

VFREEBUSY 1 ATTENDEE 1+ contain the address of the calendar store DTEND 1 DateTime values must be in UTC DTSTAMP 1 DTSTART 1 DateTime values must be in UTC ORGANIZER 1 MUST be the request originator's address UID 1 COMMENT 0 or 1 CONTACT 0+ X-PROPERTY 0+

VFREEBUSY 1与会者1+包含日历存储地址DTEND 1日期时间值必须在UTC DTSTAMP中DTSTART 1日期时间值必须在UTC组织者中1必须是请求发起人的地址UID 1评论0或1联系人0+X属性0+

FREEBUSY 0 DURATION 0 REQUEST-STATUS 0 URL 0

忙/闲0持续时间0请求状态0 URL 0

X-COMPONENT 0+ VALARM 0 VEVENT 0

X组件0+VALARM 0 VEVENT 0

VTODO 0 VJOURNAL 0 VTIMEZONE 0

VTODO 0 VJOURNAL 0 VTIMEZONE 0

3.3.3 REPLY
3.3.3 回复

The "REPLY" method in a "VFREEBUSY" calendar component is used to respond to a busy time request. The method is sent by the recipient of a busy time request to the originator of the request.

“vfreebush”日历组件中的“REPLY”方法用于响应繁忙时间请求。该方法由繁忙时间请求的接收者发送给请求的发起人。

The "REPLY" method may also be used to respond to an unsuccessful "REQUEST" method. Depending on the "REQUEST-STATUS" value, no busy time information may be returned.

“回复”方法也可用于响应不成功的“请求”方法。根据“请求状态”值,可能不会返回繁忙时间信息。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REPLY"
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD              1      MUST be "REPLY"
        

VFREEBUSY 1 ATTENDEE 1 (address of recipient replying) DTSTAMP 1 DTEND 1 DateTime values must be in UTC DTSTART 1 DateTime values must be in UTC FREEBUSY 1+ (values MUST all be of the same data type. Multiple instances are allowed. Multiple instances MUST be sorted in ascending order. Values MAY NOT overlap) ORGANIZER 1 MUST be the request originator's address UID 1

VFREEBUSY 1与会者1(收件人回复地址)DTSTAMP 1 DTEND 1 DateTime值必须为UTC DTSTART 1 DateTime值必须为UTC FREEBUSY 1+(所有值必须为相同的数据类型。允许多个实例。多个实例必须按升序排序。值不能重叠)组织者1必须是请求发起人的地址UID 1

COMMENT 0 or 1 CONTACT 0+ REQUEST-STATUS 0+ URL 0 or 1 (specifies busy time URL) X-PROPERTY 0+ DURATION 0 SEQUENCE 0

注释0或1联系人0+请求状态0+URL 0或1(指定繁忙时间URL)X属性0+持续时间0序列0

X-COMPONENT 0+ VALARM 0 VEVENT 0 VTODO 0 VJOURNAL 0 VTIMEZONE 0

X组件0+VALARM 0 VEVENT 0 VTODO 0 VJOURNAL 0 VTIMEZONE 0

3.4 Methods For VTODO Components
3.4 VTODO组件的测试方法

This section defines the property set for the methods that are applicable to the "VTODO" calendar component. Each of the methods is defined using a restriction table that specifies the property constraints that define the particular method.

本节定义适用于“VTODO”日历组件的方法的属性集。每个方法都是使用一个限制表定义的,该表指定了定义特定方法的属性约束。

The following summarizes the methods that are defined for the "VTODO" calendar component.

下面总结了为“VTODO”日历组件定义的方法。

   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post notification of a VTODO. Used primarily as  |
   |                | a method of advertising the existence of a VTODO.|
   |                |                                                  |
   | REQUEST        | Assign a VTODO. This is an explicit assignment to|
   |                | one or more Calendar Users. The REQUEST method   |
   |                | is also used to update or change an existing     |
   |                | VTODO. Clients that cannot handle REQUEST MAY    |
   |                | degrade the method to treat it as a PUBLISH.     |
   |                |                                                  |
   | REPLY          | Reply to a VTODO request. Attendees MAY set      |
   |                | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE,       |
   |                | DELEGATED, PARTIAL, and COMPLETED.               |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing to-do.  |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | to-do.                                           |
   |                |                                                  |
   | REFRESH        | A request sent to a VTODO Organizer asking for   |
   |                | the latest version of a VTODO.                   |
   |                |                                                  |
   | COUNTER        | Counter a REQUEST with an alternative proposal.  |
   |                |                                                  |
   | DECLINECOUNTER | Decline a counter proposal by an Attendee.       |
   +================+==================================================+
        
   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post notification of a VTODO. Used primarily as  |
   |                | a method of advertising the existence of a VTODO.|
   |                |                                                  |
   | REQUEST        | Assign a VTODO. This is an explicit assignment to|
   |                | one or more Calendar Users. The REQUEST method   |
   |                | is also used to update or change an existing     |
   |                | VTODO. Clients that cannot handle REQUEST MAY    |
   |                | degrade the method to treat it as a PUBLISH.     |
   |                |                                                  |
   | REPLY          | Reply to a VTODO request. Attendees MAY set      |
   |                | PARTSTAT to ACCEPTED, DECLINED, TENTATIVE,       |
   |                | DELEGATED, PARTIAL, and COMPLETED.               |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing to-do.  |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | to-do.                                           |
   |                |                                                  |
   | REFRESH        | A request sent to a VTODO Organizer asking for   |
   |                | the latest version of a VTODO.                   |
   |                |                                                  |
   | COUNTER        | Counter a REQUEST with an alternative proposal.  |
   |                |                                                  |
   | DECLINECOUNTER | Decline a counter proposal by an Attendee.       |
   +================+==================================================+
        
3.4.1 PUBLISH
3.4.1 出版

The "PUBLISH" method in a "VTODO" calendar component has no associated response. It is simply a posting of an iCalendar object that maybe added to a calendar. It MUST have an "Organizer". It MUST NOT have "Attendees". Its expected usage is for encapsulating an arbitrary "VTODO" calendar component as an iCalendar object. The "Organizer" MAY subsequently update (with another "PUBLISH" method), add instances to (with an "ADD" method), or cancel (with a "CANCEL"

“VTODO”日历组件中的“PUBLISH”方法没有关联的响应。它只是一个iCalendar对象的发布,可能会添加到日历中。它必须有一个“组织者”。它不能有“与会者”。它的预期用途是将任意“VTODO”日历组件封装为iCalendar对象。“组织者”可以随后更新(使用另一个“发布”方法)、将实例添加到(使用“添加”方法)或取消(使用“取消”

method) a previously published "VTODO" calendar component.

方法)以前发布的“VTODO”日历组件。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1       MUST be "PUBLISH"
VTODO                1+
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    PRIORITY         1
    SEQUENCE         0 or 1  MUST be present if value is greater than
                             0, MAY be present if 0
    SUMMARY          1       Can be null.
    UID              1
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1       MUST be "PUBLISH"
VTODO                1+
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    PRIORITY         1
    SEQUENCE         0 or 1  MUST be present if value is greater than
                             0, MAY be present if 0
    SUMMARY          1       Can be null.
    UID              1
        

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present.

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1可以为空,如果当前持续时间不能为当前持续时间0或1如果当前持续时间不能为当前持续时间0或1 EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1RDATE 0+RECURRENCE-ID 0或1仅在引用定期日历组件的实例时才必须。否则它就不能出现。

RELATED-TO 0+ RESOURCES 0 or 1 This property may contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-PROCESS/CANCELLED URL 0 or 1 X-PROPERTY 0+

与0+资源0或1相关此属性可能包含值列表RRLE 0+状态0或1可能是已完成/需要操作/正在处理/已取消URL 0或1 X属性0之一+

ATTENDEE 0 REQUEST-STATUS 0

与会者0请求-状态0

VTIMEZONE 0+ MUST be present if any date/time refers to a timezone VALARM 0+ X-COMPONENT 0+

如果任何日期/时间引用时区VALARM 0+X组件0,则必须存在VTIMEZONE 0++

VFREEBUSY 0 VEVENT 0 VJOURNAL 0

VFREEBUSY 0 VEVENT 0 VJOURNAL 0

3.4.2 REQUEST
3.4.2 要求

The "REQUEST" method in a "VTODO" calendar component provides the following scheduling functions:

“VTODO”日历组件中的“请求”方法提供以下调度功能:

     .  Assign a to-do to one or more "Calendar Users";
     .  Reschedule an existing to-do;
     .  Update the details of an existing to-do, without rescheduling
        it;
     .  Update the completion status of "Attendees" of an existing
        to-do, without rescheduling it;
     .  Reconfirm an existing to-do, without rescheduling it;
     .  Delegate/reassign an existing to-do to another "Calendar User".
        
     .  Assign a to-do to one or more "Calendar Users";
     .  Reschedule an existing to-do;
     .  Update the details of an existing to-do, without rescheduling
        it;
     .  Update the completion status of "Attendees" of an existing
        to-do, without rescheduling it;
     .  Reconfirm an existing to-do, without rescheduling it;
     .  Delegate/reassign an existing to-do to another "Calendar User".
        

The assigned "Calendar Users" are identified in the "VTODO" calendar component by individual "ATTENDEE;ROLE=REQ-PARTICIPANT" property value sequences.

分配的“日历用户”在“VTODO”日历组件中由单个“ATTENDEE;ROLE=REQ-PARTICIPANT”属性值序列标识。

The originator of a "REQUEST" is the "Organizer" of the to-do. The recipient of a "REQUEST" is the "Calendar User" assigned the to-do. The "Attendee" uses the "REPLY" method to convey their acceptance and completion status to the "Organizer" of the "REQUEST".

“请求”的发起人是待办事项的“组织者”。“请求”的收件人是分配了待办事项的“日历用户”。“与会者”使用“回复”方法向“请求”的“组织者”传达其接受和完成状态。

The "UID", "SEQUENCE", and "DTSTAMP" properties are used to distinguish the various uses of the "REQUEST" method. If the "UID" property value in the "REQUEST" is not found on the recipient's calendar, then the "REQUEST" is for a new to-do. If the "UID" property value is found on the recipient's calendar, then the "REQUEST" is a rescheduling, an update, or a reconfirm of the "VTODO" calendar object.

“UID”、“SEQUENCE”和“DTSTAMP”属性用于区分“REQUEST”方法的各种用途。如果在收件人的日历上找不到“请求”中的“UID”属性值,则“请求”用于新的待办事项。如果在收件人的日历上找到“UID”属性值,则“请求”是对“VTODO”日历对象的重新安排、更新或重新确认。

If the "Organizer" of the "REQUEST" method is not authorized to make a to-do request on the "Attendee's" calendar system, then an exception is returned in the "REQUEST-STATUS" property of a subsequent "REPLY" method, but no scheduling action is performed.

如果“请求”方法的“组织者”无权在“与会者”日历系统上发出待办事项请求,则在后续“回复”方法的“请求状态”属性中返回异常,但不执行任何计划操作。

For the "REQUEST" method, multiple "VTODO" components in a single iCalendar object are only permitted when for components with the same "UID" property. That is, a series of recurring events may have

对于“REQUEST”方法,仅当用于具有相同“UID”属性的组件时,才允许在单个iCalendar对象中使用多个“VTODO”组件。也就是说,一系列重复发生的事件可能会

instance-specific information. In this case, multiple "VTODO" components are needed to express the entire series.

实例特定信息。在这种情况下,需要多个“VTODO”组件来表示整个系列。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD                1       MUST be "REQUEST"
VTODO                 1+      All components must have the same UID
    ATTENDEE          1+
    DTSTAMP           1
    DTSTART           1
    ORGANIZER         1
    PRIORITY          1
    SEQUENCE          0 or 1  MUST be present if value is greater than
                              0, MAY be present if 0
    SUMMARY           1       Can be null.
    UID               1
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD                1       MUST be "REQUEST"
VTODO                 1+      All components must have the same UID
    ATTENDEE          1+
    DTSTAMP           1
    DTSTART           1
    ORGANIZER         1
    PRIORITY          1
    SEQUENCE          0 or 1  MUST be present if value is greater than
                              0, MAY be present if 0
    SUMMARY           1       Can be null.
    UID               1
        

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 present if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ RESOURCES 0 or 1 This property may contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-PROCESS URL 0 or 1 X-PROPERTY 0+

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1可以为空,如果当前持续时间不能为当前持续时间0或1如果当前持续时间不能为当前持续时间0或1 EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1RDATE 0+RECURRENCE-ID 0或1(如果引用定期日历组件的实例)。否则它就不能出现。与0+资源0或1相关此属性可能包含值列表RRLE 0+状态0或1可能是已完成/需要操作/进程中URL 0或1 X属性0之一+

REQUEST-STATUS 0

请求状态0

VALARM 0+

瓦拉姆0+

VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0++

VEVENT 0 VFREEBUSY 0 VJOURNAL 0

VEVENT 0 VFREEBUSY 0 VJOURNAL 0

3.4.2.1 REQUEST for Rescheduling a VTODO
3.4.2.1 请求重新安排VTODO

The "REQUEST" method may be used to reschedule a "VTODO" calendar component.

“请求”方法可用于重新安排“VTODO”日历组件。

Rescheduling a "VTODO" calendar component involves a change to the existing "VTODO" calendar component in terms of its start or due time or recurrence intervals and possibly the description. If the recipient CUA of a "REQUEST" method finds that the "UID" property value already exists on the calendar, but that the "SEQUENCE" property value in the "REQUEST" is greater than the value for the existing VTODO, then the "REQUEST" method describes a rescheduling of the "VTODO" calendar component.

重新安排“VTODO”日历组件涉及更改现有“VTODO”日历组件的开始或到期时间或重复间隔,以及可能的说明。如果“请求”方法的收件人CUA发现日历上已经存在“UID”属性值,但“请求”中的“序列”属性值大于现有VTODO的值,则“请求”方法描述了“VTODO”日历组件的重新调度。

3.4.2.2 REQUEST for Update or Reconfirmation of a VTODO
3.4.2.2 请求更新或重新确认VTODO

The "REQUEST" method may be used to update or reconfirm a "VTODO" calendar component. Reconfirmation is merely an update of "Attendee" completion status or overall "VTODO" calendar component status.

“请求”方法可用于更新或重新确认“VTODO”日历组件。重新确认只是更新“与会者”完成状态或整个“VTODO”日历组件状态。

An update to an existing "VTODO" calendar component does not involve changes to the start or due time or recurrence intervals, nor generally to the description for the "VTODO" calendar component. If the recipient CUA of a "REQUEST" method finds that the "UID" property value already exists on the calendar and that the "SEQUENCE" property value in the "REQUEST" is the same as the value for the existing event, then the "REQUEST" method describes an update of the "VTODO" calendar component details, but not a rescheduling of the "VTODO" calendar component.

对现有“VTODO”日历组件的更新不涉及对开始或到期时间或重复间隔的更改,通常也不涉及对“VTODO”日历组件的描述的更改。如果“请求”方法的接收方CUA发现日历上已经存在“UID”属性值,并且“请求”中的“序列”属性值与现有事件的值相同,则“请求”方法描述了“VTODO”日历组件详细信息的更新,但不描述“VTODO”的重新调度日历组件。

The update "REQUEST" is the appropriate response to a "REFRESH" method sent from an "Attendee" to the "Organizer" of a "VTODO" calendar component.

更新“请求”是对“与会者”向“VTODO”日历组件的“组织者”发送的“刷新”方法的适当响应。

Unsolicited "REQUEST" methods MAY be sent by the "Organizer" of a "VTODO" calendar component. The unsolicited "REQUEST" methods are

“VTODO”日历组件的“组织者”可以发送未经请求的“请求”方法。未经请求的“请求”方法包括

used to update the details of the "VTODO" (without rescheduling it or updating the completion status of "Attendees") or the "VTODO" calendar component itself (i.e., reconfirm the "VTODO").

用于更新“VTODO”(无需重新安排时间或更新“与会者”的完成状态)或“VTODO”日历组件本身的详细信息(即,重新确认“VTODO”)。

3.4.2.3 REQUEST for Delegating a VTODO
3.4.2.3 授权VTODO的请求

The "REQUEST" method is also used to delegate or reassign ownership of a "VTODO" calendar component to another "Calendar User". For example, it may be used to delegate an "Attendee's" role (i.e. "chair", or "participant") for a "VTODO" calendar component. The "REQUEST" method is sent by one of the "Attendees" of an existing

“请求”方法还用于将“VTODO”日历组件的所有权委托或重新分配给另一个“日历用户”。例如,它可用于为“VTODO”日历组件委派“与会者”角色(即“主席”或“参与者”)。“请求”方法是由现有系统的“参与者”之一发送的

"VTODO" calendar component to some other individual. An "Attendee" of a "VTODO" calendar component MUST NOT delegate to the "Organizer" of the event.

将“VTODO”日历组件发送给其他个人。“VTODO”日历组件的“与会者”不得委托给活动的“组织者”。

For the purposes of this description, the "Attendee" delegating the "VTODO" calendar component is referred to as the "Delegator". The "Attendee" receiving the delegation request is referred to as the "Delegate".

在本说明中,委托“VTODO”日历组件的“与会者”称为“委托人”。收到授权请求的“与会者”称为“代表”。

The "Delegator" of a "VTODO" calendar component MUST forward the existing "REQUEST" method for a "VTODO" calendar component to the "Delegate". The "VTODO" calendar component description MUST include the "Delegator's" up-to-date "VTODO" calendar component definition. The "REQUEST" method MUST also include an "ATTENDEE" property with the calendar address of the "Delegate". The "Delegator" MUST also send a "REPLY" method back to the "Organizer" with the "Delegator's" "Attendee" property "partstat" parameter value set to "DELEGATED". In addition, the "delegated-to" parameter MUST be included with the calendar address of the "Delegate". A response to the delegation "REQUEST" is sent from the "Delegate" to the "Organizer" and optionally, to the "Delegator". The "REPLY" method from the "Delegate" SHOULD include the "ATTENDEE" property with their calendar address and the "delegated-from" parameter with the value of the "Delegator's" calendar address.

“VTODO”日历组件的“委托人”必须将“VTODO”日历组件的现有“请求”方法转发给“委托人”。“VTODO”日历组件说明必须包括“委托人”最新的“VTODO”日历组件定义。“REQUEST”方法还必须包含一个带有“Delegate”日历地址的“ATTENDEE”属性。“Delegator”还必须将“REPLY”方法发送回“Organizer”,并将“Delegator的”“Attendee”属性“partstat”参数值设置为“DELEGATED”。此外,“委托人”参数必须包含在“委托人”的日历地址中。“代表”向“组织者”发送对代表团“请求”的响应,也可以向“代表人”发送响应。“委托人”的“答复”方法应包括带有其日历地址的“与会者”属性和带有“委托人”日历地址值的“委托人”参数。

The delegation "REQUEST" method MUST assign a value for the "RSVP" property parameter associated with the "Delegator's" "Attendee" property to that of the "Delegate's" "ATTENDEE" property. For example if the "Delegator's" "ATTENDEE" property specifies "RSVP=TRUE", then the "Delegate's" "ATTENDEE" property MUST specify "RSVP=TRUE".

委派“请求”方法必须将与“委派者的”“与会者”属性关联的“RSVP”属性参数的值分配给“委派者的”“与会者”属性的值。例如,如果“委托人的”“与会者”属性指定“RSVP=TRUE”,则“委托人的”“与会者”属性必须指定“RSVP=TRUE”。

3.4.2.4 REQUEST Forwarded To An Uninvited Calendar User
3.4.2.4 请求转发给未经邀请的日历用户

An "Attendee" assigned a "VTODO" calendar component may send the "VTODO" calendar component to another new CU, not previously associated with the "VTODO" calendar component. The current

分配了“VTODO”日历组件的“与会者”可以将“VTODO”日历组件发送到以前未与“VTODO”日历组件关联的另一个新CU。电流

"Attendee" assigned the "VTODO" calendar component does this by forwarding the original "REQUEST" method to the new CU. The new CU can send a "REPLY" to the "Organizer" of the "VTODO" calendar component. The reply contains an "ATTENDEE" property for the new CU.

分配了“VTODO”日历组件的“与会者”通过将原始“请求”方法转发给新CU来完成此任务。新CU可以向“VTODO”日历组件的“组织者”发送“回复”。回复包含新CU的“ATTENDEE”属性。

The "Organizer" ultimately decides whether or not the new CU becomes part of the to-do and is not obligated to do anything with a "REPLY" from a new (uninvited) CU. If the "Organizer" does not want the new CU to be part of the to-do, the new "ATTENDEE" property is not added to the "VTODO" calendar component. The "Organizer" MAY send the CU a "CANCEL" message to indicate that they will not be added to the to-do. If the "Organizer" decides to add the new CU, the new "ATTENDEE" property is added to the "VTODO" calendar component. Furthermore, the "Organizer" is free to change any "ATTENDEE" property parameter from the values supplied by the new CU to something the "Organizer" considers appropriate.

“组织者”最终决定新CU是否成为待办事项的一部分,并且没有义务通过新CU(未邀请的)的“回复”来做任何事情。如果“组织者”不希望新CU成为待办事项的一部分,则新的“ATTENDEE”属性不会添加到“VTODO”日历组件中。“组织者”可能会向CU发送一条“取消”消息,表示他们不会被添加到待办事项中。如果“组织者”决定添加新CU,则新的“ATTENDEE”属性将添加到“VTODO”日历组件中。此外,“组织者”可以自由地将任何“ATTENDEE”属性参数从新CU提供的值更改为“组织者”认为合适的值。

3.4.2.5 REQUEST Updated Attendee Status
3.4.2.5 请求更新的与会者状态

An "Organizer" of a "VTODO" may request an updated status from one or more "Attendees". The "Organizer" sends a "REQUEST" method to the "Attendee" with the "ATTENDEE;RSVP=TRUE" property sequence. The "SEQUENCE" property for the "VTODO" is not changed from its previous value. A recipient determines that the only change in the "REQUEST" is that their "RSVP" property parameter indicates a request for an updated status. The recipient SHOULD respond with a "REPLY" method indicating their current status with respect to the "REQUEST".

“VTODO”的“组织者”可以向一个或多个“与会者”请求更新状态。“组织者”使用“Attendee;RSVP=TRUE”属性序列向“Attendee”发送一个“REQUEST”方法。“VTODO”的“SEQUENCE”属性与其以前的值相同。收件人确定“请求”中的唯一更改是其“RSVP”属性参数指示更新状态的请求。收件人应使用“回复”方法进行回复,表明其当前在“请求”方面的状态。

3.4.3 REPLY
3.4.3 回复

The "REPLY" method in a "VTODO" calendar component is used to respond (e.g., accept or decline) to a request or to reply to a delegation request. It is also used by an "Attendee" to update their completion status. When used to provide a delegation response, the "Delegator" MUST include the calendar address of the "Delegate" in the "delegated-to" parameter of the "Delegator's" "ATTENDEE" property. The "Delegate" MUST include the calendar address of the "Delegator" on the "delegated-from" parameter of the "Delegate's" "ATTENDEE" property.

“VTODO”日历组件中的“REPLY”方法用于响应(例如,接受或拒绝)请求或答复委派请求。“与会者”也可以使用它来更新其完成状态。用于提供委派响应时,“委派者”必须在“委派者”的“与会者”属性的“委派对象”参数中包含“委派者”的日历地址。“代理人”必须在“代理人的”“与会者”属性的“委派自”参数中包含“代理人”的日历地址。

The "REPLY" method MAY also be used to respond to an unsuccessful "VTODO" calendar component "REQUEST" method. Depending on the "REQUEST-STATUS" value, no scheduling action may have been performed.

“回复”方法也可用于响应不成功的“VTODO”日历组件“请求”方法。根据“请求状态”值,可能未执行任何调度操作。

The "Organizer" of a "VTODO" calendar component MAY receive a "REPLY" method from a "Calendar User" not in the original "REQUEST". For example, a "REPLY" method MAY be received from a "Delegate" of a "VTODO" calendar component. In addition, the "REPLY" method MAY be

“VTODO”日历组件的“组织者”可能会从原始“请求”中没有的“日历用户”接收“回复”方法。例如,可以从“VTODO”日历组件的“委托”接收“回复”方法。此外,“回复”方法也可以是

received from an unknown "Calendar User", having been forwarded the "REQUEST" by an original "Attendee" of the "VTODO" calendar component. This uninvited "Attendee" MAY be accepted, or the "Organizer" MAY cancel the "VTODO" calendar component for the uninvited "Attendee" by sending them a "CANCEL" method.

从未知的“日历用户”处收到,该用户已由“VTODO”日历组件的原始“与会者”转发“请求”。此未邀请的“与会者”可能会被接受,或者“组织者”可以通过向未邀请的“与会者”发送“取消”方法来取消“VTODO”日历组件。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1      MUST be "REPLY"
VTODO                1+     All component MUST have the same UID
    ATTENDEE         1+
    DTSTAMP          1
    ORGANIZER        1
    REQUEST-STATUS   1+
    UID              1      MUST must be the address of the replying
                            attendee
        
Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1      MUST be "REPLY"
VTODO                1+     All component MUST have the same UID
    ATTENDEE         1+
    DTSTAMP          1
    ORGANIZER        1
    REQUEST-STATUS   1+
    UID              1      MUST must be the address of the replying
                            attendee
        

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTSTART 0 or 1 DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 PRIORITY 0 or 1 RDATE 0+ RELATED-TO 0+ RESOURCES 0 or 1 This property may contain a list of values RRULE 0+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a Recurring calendar component. Otherwise it MUST NOT be present SEQUENCE 0 or 1 MUST be the sequence number of the original REQUEST if greater than 0. MAY be present if 0. STATUS 0 or 1

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1 DTSTART 0或1到期0或1如果当前持续时间不能存在持续时间0或1如果当前到期不能存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1优先级0或1 RDATE 0+与0+资源0或1相关此属性可能包含值列表RRLE 0+定期ID 0或1仅当引用定期日历组件的实例时才必须包含。否则,它必须不存在。如果大于0,则序列号0或1必须是原始请求的序列号。如果0,则可能存在。状态0或1

SUMMARY 0 or 1 Can be null URL 0 or 1 X-PROPERTY 0+

摘要0或1可以是空URL 0或1 X属性0+

VTIMEZONE 0 or 1 MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0或1+

VALARM 0 VEVENT 0 VFREEBUSY 0

VALARM 0 VEVENT 0 VFREEBUSY 0

3.4.4 ADD
3.4.4 添加

The "ADD" method in a "VTODO" calendar component is used to add one or more instances to an existing to-do.

“VTODO”日历组件中的“ADD”方法用于向现有待办事项添加一个或多个实例。

If the "UID" property value in the "ADD" is not found on the recipient's calendar, then the recipient SHOULD send a "REFRESH" to the "Organizer" in order to be updated with the latest version of the "VTODO". If an "Attendee" implementation does not support the "ADD" method it should respond with a "REQUEST-STATUS" value of 5.3 and ask for a "REFRESH".

如果在收件人的日历上未找到“添加”中的“UID”属性值,则收件人应向“组织者”发送“刷新”,以便使用最新版本的“VTODO”进行更新。如果“Attendee”实现不支持“ADD”方法,则应使用“REQUEST-STATUS”值5.3进行响应,并请求“刷新”。

The "SEQUENCE" property value is incremented as the sequence of to-dos has changed.

“SEQUENCE”属性值随待办事项顺序的更改而增加。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD                1       MUST be "ADD"
VTODO                 1
    DTSTAMP           1
    ORGANIZER         1
    PRIORITY          1
    SEQUENCE          1       MUST be greater than 0
    SUMMARY           1       Can be null.
    UID               1       MUST match that of the original to-do
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD                1       MUST be "ADD"
VTODO                 1
    DTSTAMP           1
    ORGANIZER         1
    PRIORITY          1
    SEQUENCE          1       MUST be greater than 0
    SUMMARY           1       Can be null.
    UID               1       MUST match that of the original to-do
        

ATTACH 0+ ATTENDEE 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+

附加0+与会者0+类别0或1此属性可能包含值列表类0或1评论0或1联系人0+

CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DTSTART 0 or 1 DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 RDATE 0+ RELATED-TO 0+ RESOURCES 0 or 1 This property may contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-PROCESS URL 0 or 1 X-PROPERTY 0+

创建的0或1说明0或1可以为空DTSTART 0或1到期0或1如果当前持续时间不能为当前持续时间0或1如果当前到期不能为当前持续时间EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1 RDATE 0+相关0+资源0或1此属性可能包含值列表RRULE 0+状态0或1可能是已完成/需要操作/进程中URL 0或1 X属性0之一+

RECURRENCE-ID 0 REQUEST-STATUS 0

重复周期ID 0请求状态0

VALARM 0+ VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0++

VEVENT 0 VJOURNAL 0 VFREEBUSY 0

VEVENT 0 VJOURNAL 0 VFREEBUSY 0

3.4.5 CANCEL
3.4.5 取消

The "CANCEL" method in a "VTODO" calendar component is used to send a cancellation notice of an existing "VTODO" calendar request to the "Attendees". The message is sent by the "Organizer" of a "VTODO" calendar component to the "Attendees" of the "VTODO" calendar component. For a recurring "VTODO" calendar component, either the whole "VTODO" calendar component or instances of a "VTODO" calendar component may be cancelled. To cancel the complete range of a recurring "VTODO" calendar component, the "UID" property value for the "VTODO" calendar component MUST be specified and a "RECURRENCE-ID" MUST NOT be specified in the "CANCEL" method. In order to cancel an individual instance of a recurring "VTODO" calendar component, the "RECURRENCE-ID" property value for the "VTODO" calendar component MUST be specified in the "CANCEL" method.

“VTODO”日历组件中的“取消”方法用于向“与会者”发送现有“VTODO”日历请求的取消通知。该消息由“VTODO”日历组件的“组织者”发送给“VTODO”日历组件的“与会者”。对于重复出现的“VTODO”日历组件,可以取消整个“VTODO”日历组件或“VTODO”日历组件的实例。要取消周期性“VTODO”日历组件的完整范围,必须指定“VTODO”日历组件的“UID”属性值,并且不得在“取消”方法中指定“RECURRENCE-ID”。要取消定期“VTODO”日历组件的单个实例,必须在“取消”方法中指定“VTODO”日历组件的“RECURRENCE-ID”属性值。

There are two options for canceling a sequence of instances of a recurring "VTODO" calendar component:

有两个选项可用于取消周期性“VTODO”日历组件的一系列实例:

(a) the "RECURRENCE-ID" property for an instance in the sequence MUST be specified with the "RANGE" property parameter value of THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the specified "VTODO" calendar component and all instances before (or after); or

(a) 序列中实例的“RECURRENCE-ID”属性必须使用ThisandPrevior(或THISANDFUTURE)的“RANGE”属性参数值指定,以指示取消指定的“VTODO”日历组件以及之前(或之后)的所有实例;或

(b) individual recurrence instances may be cancelled by specifying multiple "RECURRENCE-ID" properties corresponding to the instances to be cancelled.

(b) 可以通过指定与要取消的实例对应的多个“recurrence-ID”属性来取消单个重复实例。

When a "VTODO" is cancelled, the "SEQUENCE" property value MUST be incremented.

取消“VTODO”时,“序列”属性值必须递增。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1     MUST be "CANCEL"
VTODO                1
    ATTENDEE         0+    include all "Attendees" being removed from
                           the todo. MUST include all "Attendees" if
                           the entire todo is cancelled.
    UID              1     MUST echo original UID
    DTSTAMP          1
    ORGANIZER        1
    SEQUENCE         1
        
Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1     MUST be "CANCEL"
VTODO                1
    ATTENDEE         0+    include all "Attendees" being removed from
                           the todo. MUST include all "Attendees" if
                           the entire todo is cancelled.
    UID              1     MUST echo original UID
    DTSTAMP          1
    ORGANIZER        1
    SEQUENCE         1
        

ATTACH 0+ CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTSTART 0 or 1 DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 RDATE 0+

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1 DTSTART 0或1到期0或1如果当前持续时间不能存在持续时间0或1如果当前到期不能存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1 RDATE 0+

RECURRENCE-ID 0 or 1 MUST only if referring to one or more instances of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ RESOURCES 0 or 1 This property MAY contain a list of values RRULE 0+ PRIORITY 0 or 1 STATUS 0 or 1 If present it MUST be set to "CANCELLED". MUST NOT be used if purpose is to remove "ATTENDEES" rather than cancel the entire VTODO. URL 0 or 1 X-PROPERTY 0+

仅当引用定期日历组件的一个或多个实例时,才能使用RECURRENCE-ID 0或1。否则它就不能出现。与0+资源0或1相关-此属性可能包含值列表RRLE 0+优先级0或1状态0或1如果存在,则必须将其设置为“已取消”。如果目的是删除“与会者”而不是取消整个VTODO,则不得使用。URL 0或1 X属性0+

REQUEST-STATUS 0

请求状态0

VTIMEZONE 0 or 1 MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0或1+

VALARM 0 VEVENT 0 VFREEBUSY 0

VALARM 0 VEVENT 0 VFREEBUSY 0

3.4.6 REFRESH
3.4.6 刷新

The "REFRESH" method in a "VTODO" calendar component is used by "Attendees" of an existing "VTODO" calendar component to request an updated description from the "Organizer" of the "VTODO" calendar component. The "Organizer" of the "VTODO" calendar component MAY use this method to request an updated status from the "Attendees". The "REFRESH" method MUST specify the "UID" property corresponding to the "VTODO" calendar component needing update.

“VTODO”日历组件中的“刷新”方法由现有“VTODO”日历组件的“与会者”使用,以向“VTODO”日历组件的“组织者”请求更新的说明。“VTODO”日历组件的“组织者”可以使用此方法向“与会者”请求更新状态。“REFRESH”方法必须指定与需要更新的“VTODO”日历组件相对应的“UID”属性。

A refresh of a recurrence instance of a "VTODO" calendar component may be requested by specifying the "RECURRENCE-ID" property corresponding to the associated "VTODO" calendar component. The "Organizer" responds with the latest description and rendition of the "VTODO" calendar component. In most cases this will be a REQUEST unless the "VTODO" has been cancelled, in which case the ORGANIZER MUST send a "CANCEL". This method is intended to facilitate machine processing of requests for updates to a "VTODO" calendar component.

通过指定与关联的“VTODO”日历组件相对应的“recurrence-ID”属性,可以请求刷新“VTODO”日历组件的定期实例。“组织者”会以“VTODO”日历组件的最新描述和格式副本进行响应。在大多数情况下,这将是一个请求,除非“VTODO”已被取消,在这种情况下,组织者必须发送“取消”。此方法旨在帮助机器处理对“VTODO”日历组件的更新请求。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1      MUST be "REFRESH"
VTODO                1
    ATTENDEE         1
    DTSTAMP          1
    UID              1       MUST echo original UID
        
Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1      MUST be "REFRESH"
VTODO                1
    ATTENDEE         1
    DTSTAMP          1
    UID              1       MUST echo original UID
        

RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a Recurring calendar component. Otherwise it MUST NOT be present X-PROPERTY 0+

仅当引用定期日历组件的实例时,才能使用RECURRENCE-ID 0或1。否则,它必须不存在X属性0+

ATTACH 0 CATEGORIES 0 CLASS 0 COMMENT 0 CONTACT 0 CREATED 0 DESCRIPTION 0 DTSTART 0 DUE 0 DURATION 0 EXDATE 0 EXRULE 0 GEO 0 LAST-MODIFIED 0 LOCATION 0 ORGANIZER 0 PERCENT-COMPLETE 0 PRIORITY 0 RDATE 0 RELATED-TO 0 REQUEST-STATUS 0 RESOURCES 0 RRULE 0 SEQUENCE 0 STATUS 0 URL 0

附加0类别0类别0评论0联系人0已创建0描述0 DTSTART 0到期0持续时间0 EXDATE 0 EXRULE 0 GEO 0上次修改0位置0组织者0%完成0优先级0 RDATE 0相关0请求状态0资源0 RRULE 0序列0状态0 URL 0

X-COMPONENT 0+

X分量0+

VALARM 0 VEVENT 0 VFREEBUSY 0 VTIMEZONE 0

VALARM 0 VEVENT 0 VFREEBUSY 0 VTIMEZONE 0

3.4.7 COUNTER
3.4.7 柜台

The "COUNTER" method in a "VTODO" calendar component is used by an "Attendee" of an existing "VTODO" calendar component to submit to the "Organizer" a counter proposal for the "VTODO" calendar component. The "Attendee" sends the message to the "Organizer" of the "VTODO" calendar component.

“VTODO”日历组件中的“计数器”方法由现有“VTODO”日历组件的“与会者”使用,以向“组织者”提交“VTODO”日历组件的反提案。“与会者”将消息发送到“VTODO”日历组件的“组织者”。

The counter proposal is an iCalendar object consisting of a "VTODO" calendar component describing the complete description of the alternate "VTODO" calendar component.

反提案是一个iCalendar对象,由一个“VTODO”日历组件组成,该组件描述了备用“VTODO”日历组件的完整描述。

The "Organizer" rejects the counter proposal by sending the "Attendee" a "DECLINECOUNTER" method. The "Organizer" accepts the counter proposal by sending all of the "Attendees" of the "VTODO" calendar component a "REQUEST" method rescheduling the "VTODO" calendar component. In the latter case, the "Organizer" SHOULD reset the individual "RSVP" property parameter values to TRUE on each "ATTENDEE" property; in order to force a response by the "Attendees".

“组织者”通过向“与会者”发送“DECLINECOUNTER”方法拒绝反提案。“组织者”通过向“VTODO”日历组件的所有“与会者”发送“请求”方法来重新安排“VTODO”日历组件,从而接受反建议。在后一种情况下,“组织者”应将每个“与会者”属性上的单个“RSVP”属性参数值重置为TRUE;以迫使“与会者”作出回应。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1      MUST be "COUNTER"
VTODO                1
    ATTENDEE         1+
    DTSTAMP          1
    ORGANIZER        1
    PRIORITY         1
    SUMMARY          1      Can be null
    UID              1
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1      MUST be "COUNTER"
VTODO                1
    ATTENDEE         1+
    DTSTAMP          1
    ORGANIZER        1
    PRIORITY         1
    SUMMARY          1      Can be null
    UID              1
        

ATTACH 0+ CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 Can be null DTSTART 0 or 1 DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1可以为空DTSTART 0或1到期0或1如果当前持续时间不能存在持续时间0或1如果当前到期不能存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1

LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST only 3.5if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ REQUEST-STATUS 0+ RESOURCES 0 or 1 This property MAY contain a list of values RRULE 0 or 1 SEQUENCE 0 or 1 MUST echo the original SEQUENCE number. MUST be present if non-zero. MAY be present if zero. STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-PROCESS/CANCELLED URL 0 or 1 X-PROPERTY 0+

位置0或1完成百分比0或1 RDATE 0+定期ID 0或1如果引用定期日历组件的实例,则必须仅为3.5。否则它就不能出现。相关-与0+请求-状态0+资源0或1此属性可能包含值列表RRLE 0或1序列0或1必须回显原始序列号。如果非零,则必须存在。如果为零,则可能存在。状态0或1可能是已完成/需要操作/正在处理/已取消URL 0或1 X属性0之一+

VALARM 0+ VTIMEZONE 0 or 1 MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0或1+

VEVENT 0 VFREEBUSY 0

VEVENT 0 VFREEBUSY 0

3.4.8 DECLINECOUNTER
3.4.8 下线计数器

The "DECLINECOUNTER" method in a "VTODO" calendar component is used by an "Organizer" of "VTODO" calendar component to reject a counter proposal offered by one of the "Attendees". The "Organizer" sends the message to the "Attendee" that sent the "COUNTER" method to the "Organizer".

“VTODO”日历组件的“组织者”使用“VTODO”日历组件中的“DECLINECOUNTER”方法拒绝其中一位“与会者”提出的反提案。“组织者”将消息发送给将“计数器”方法发送给“组织者”的“与会者”。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1       MUST be "DECLINECOUNTER"
        
Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1       MUST be "DECLINECOUNTER"
        

VTODO 1 ATTENDEE 1+ MUST for all attendees DTSTAMP 1 ORGANIZER 1 SEQUENCE 1 MUST echo the original SEQUENCE number UID 1 MUST echo original UID

VTODO 1与会者1+必须对所有与会者DTSTAMP 1组织者1序列1必须回显原始序列号UID 1必须回显原始UID

ATTACH 0+ CATEGORIES 0 or 1 This property may contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTSTART 0 or 1 DUE 0 or 1 If present DURATION MUST NOT be present DURATION 0 or 1 If present DUE MUST NOT be present EXDATE 0+ EXRULE 0+ GEO 0 or 1 LAST-MODIFIED 0 or 1 LOCATION 0 or 1 PERCENT-COMPLETE 0 or 1 PRIORITY 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ REQUEST-STATUS 0+ RESOURCES 0 or 1 This property MAY contain a list of values RRULE 0+ STATUS 0 or 1 MAY be one of COMPLETED/NEEDS ACTION/IN-PROCESS URL 0 or 1 X-PROPERTY 0+

附加0+类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1说明0或1 DTSTART 0或1到期0或1如果当前持续时间不能存在持续时间0或1如果当前到期不能存在EXDATE 0+EXRULE 0+GEO 0或1上次修改的0或1位置0或1完成百分比0或1优先级0或1 RDATE 0+重复ID 0或1仅在引用重复日历组件的实例时才必须。否则它就不能出现。相关-与0+请求-状态0+资源0或1此属性可能包含值列表RRLE 0+状态0或1可能是已完成/需要操作/进程中URL 0或1 X属性0之一+

VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VTIMEZONE 0++

VALARM 0 VEVENT 0 VFREEBUSY 0

VALARM 0 VEVENT 0 VFREEBUSY 0

3.5 Methods For VJOURNAL Components
3.5 VJOURNAL组件的方法

This section defines the property set for the methods that are applicable to the "VJOURNAL" calendar component.

本节定义了适用于“VJOURNAL”日历组件的方法的属性集。

The following summarizes the methods that are defined for the "VJOURNAL" calendar component.

下面总结了为“VJOURNAL”日历组件定义的方法。

   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post a journal entry. Used primarily as a method |
   |                | of advertising the existence of a journal entry. |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing journal |
   |                | entry.                                           |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | journal entry.                                   |
   +================+==================================================+
        
   +================+==================================================+
   | Method         |  Description                                     |
   |================+==================================================|
   | PUBLISH        | Post a journal entry. Used primarily as a method |
   |                | of advertising the existence of a journal entry. |
   |                |                                                  |
   | ADD            | Add one or more instances to an existing journal |
   |                | entry.                                           |
   |                |                                                  |
   | CANCEL         | Cancel one or more instances of an existing      |
   |                | journal entry.                                   |
   +================+==================================================+
        
3.5.1 PUBLISH
3.5.1 出版

The "PUBLISH" method in a "VJOURNAL" calendar component has no associated response. It is simply a posting of an iCalendar object that may be added to a calendar. It MUST have an "Organizer". It MUST NOT have "Attendees". The expected usage is for encapsulating an

“VJOURNAL”日历组件中的“PUBLISH”方法没有关联的响应。它只是可以添加到日历中的iCalendar对象的发布。它必须有一个“组织者”。它不能有“与会者”。预期用途是封装

arbitrary journal entry as an iCalendar object. The "Organizer" MAY subsequently update (with another "PUBLISH" method) or cancel (with a "CANCEL" method) a previously published journal entry.

作为iCalendar对象的任意日记账条目。“组织者”可随后更新(使用另一种“发布”方法)或取消(使用“取消”方法)先前发布的日记账分录。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1       MUST be "PUBLISH"
VJOURNAL             1+
    DESCRIPTION      1       Can be null.
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    UID              1
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1       MUST be "PUBLISH"
VJOURNAL             1+
    DESCRIPTION      1       Can be null.
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    UID              1
        

ATTACH 0+ CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 EXDATE 0+ EXRULE 0+ LAST-MODIFIED 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 MUST only if referring to an instance of a

附加0+类别0或1此属性可能包含值列表类0或1注释0或1联系人0+创建的0或1 EXDATE 0+EXRULE 0+上次修改的0或1 RDATE 0+重复ID 0或1仅当引用的是

recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ RRULE 0+ SEQUENCE 0 or 1 MUST echo the original SEQUENCE number. MUST be present if non-zero. MAY be present if zero. STATUS 0 or 1 MAY be one of DRAFT/FINAL/CANCELLED SUMMARY 0 or 1 Can be null URL 0 or 1 X-PROPERTY 0+

定期日历组件。否则它就不能出现。相关-与0+RRULE 0+序列0或1必须回显原始序列号。如果非零,则必须存在。如果为零,则可能存在。状态0或1可以是草稿/最终/取消摘要0或1可以是空URL 0或1 X属性0+

ATTENDEE 0

与会者0

VALARM 0+ VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0++

VEVENT 0 VFREEBUSY 0 VTODO 0

VEVENT 0 VFREEBUSY 0 VTODO 0

3.5.2 ADD
3.5.2 添加

The "ADD" method in a "VJOURNAL" calendar component is used to add one or more instances to an existing "VJOURNAL" entry. There is no response to the "Organizer".

“VJOURNAL”日历组件中的“ADD”方法用于将一个或多个实例添加到现有的“VJOURNAL”条目中。对“组织者”没有回应。

If the "UID" property value in the "ADD" is not found on the recipient's calendar, then the recipient MAY treat the "ADD" as a "PUBLISH".

如果在收件人的日历上找不到“添加”中的“UID”属性值,则收件人可以将“添加”视为“发布”。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1      MUST be "ADD"
VJOURNAL             1
    DESCRIPTION      1      Can be null.
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    SEQUENCE         1      MUST be greater than 0
    UID              1      MUST match that of the original journal
        
Component/Property  Presence
------------------- ----------------------------------------------
METHOD               1      MUST be "ADD"
VJOURNAL             1
    DESCRIPTION      1      Can be null.
    DTSTAMP          1
    DTSTART          1
    ORGANIZER        1
    SEQUENCE         1      MUST be greater than 0
    UID              1      MUST match that of the original journal
        

ATTACH 0+

附加0+

CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 EXDATE 0+ EXRULE 0+ LAST-MODIFIED 0 or 1 RDATE 0+ RELATED-TO 0+ RRULE 0+ STATUS 0 or 1 MAY be one of DRAFT/FINAL/CANCELLED SUMMARY 0 or 1 Can be null URL 0 or 1 X-PROPERTY 0+

类别0或1此属性可能包含值列表类别0或1注释0或1联系人0+创建的0或1 EXDATE 0+EXRULE 0+上次修改的0或1 RDATE 0+与0相关的0+RRULE 0+状态0或1可能是草稿/最终/取消的摘要0或1可以是空URL 0或1 X属性0+

ATTENDEE 0 RECURRENCE-ID 0

与会者0-ID 0

VALARM 0+ VTIMEZONE 0 or 1 MUST be present if any date/time refers to a timezone X-COMPONENT 0+

如果任何日期/时间引用时区X组件0,则必须存在VALARM 0+VTIMEZONE 0或1+

VEVENT 0 VFREEBUSY 0 VTODO 0

VEVENT 0 VFREEBUSY 0 VTODO 0

3.5.3 CANCEL
3.5.3 取消

The "CANCEL" method in a "VJOURNAL" calendar component is used to send a cancellation notice of an existing journal entry. The message is sent by the "Organizer" of a journal entry. For a recurring journal entry, either the whole journal entry or instances of a journal entry may be cancelled. To cancel the complete range of a recurring journal entry, the "UID" property value for the journal entry MUST be specified and a "RECURRENCE-ID" property MUST NOT be specified in the "CANCEL" method. In order to cancel an individual instance of the journal entry, the "RECURRENCE-ID" property value for the journal entry MUST be specified in the "CANCEL" method.

“VJOURNAL”日历组件中的“CANCEL”方法用于发送现有日记账分录的取消通知。该消息由日记账分录的“组织者”发送。对于定期日记账分录,可以取消整个日记账分录或日记账分录的实例。若要取消定期日记账分录的完整范围,必须指定日记账分录的“UID”属性值,并且不能在“cancel”方法中指定“RECURRENCE-ID”属性。要取消日记账分录的单个实例,必须在“cancel”方法中指定日记账分录的“RECURRENCE-ID”属性值。

There are two options for canceling a sequence of instances of a recurring "VJOURNAL" calendar component:

有两个选项可用于取消周期性“VJOURNAL”日历组件的一系列实例:

(a) the "RECURRENCE-ID" property for an instance in the sequence MUST be specified with the "RANGE" property parameter value of THISANDPRIOR (or THISANDFUTURE) to indicate cancellation of the specified "VTODO" calendar component and all instances before (or after); or

(a) 序列中实例的“RECURRENCE-ID”属性必须使用ThisandPrevior(或THISANDFUTURE)的“RANGE”属性参数值指定,以指示取消指定的“VTODO”日历组件以及之前(或之后)的所有实例;或

(b) individual recurrence instances may be cancelled by specifying multiple "RECURRENCE-ID" properties corresponding to the instances to be cancelled.

(b) 可以通过指定与要取消的实例对应的多个“recurrence-ID”属性来取消单个重复实例。

When a "VJOURNAL" is cancelled, the "SEQUENCE" property value MUST be incremented.

取消“VJOURNAL”时,“SEQUENCE”属性值必须递增。

This method type is an iCalendar object that conforms to the following property constraints:

此方法类型是符合以下属性约束的iCalendar对象:

Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1       MUST be "CANCEL"
VJOURNAL             1+      All MUST have the same UID
    DTSTAMP          1
    ORGANIZER        1
    SEQUENCE         1
    UID              1       MUST be the UID of the original REQUEST
        
Component/Property   Presence
-------------------  ---------------------------------------------
METHOD               1       MUST be "CANCEL"
VJOURNAL             1+      All MUST have the same UID
    DTSTAMP          1
    ORGANIZER        1
    SEQUENCE         1
    UID              1       MUST be the UID of the original REQUEST
        

ATTACH 0+ ATTENDEE 0+ CATEGORIES 0 or 1 This property MAY contain a list of values CLASS 0 or 1 COMMENT 0 or 1 CONTACT 0+ CREATED 0 or 1 DESCRIPTION 0 or 1 DTSTART 0 or 1 EXDATE 0+ EXRULE 0+ LAST-MODIFIED 0 or 1 RDATE 0+ RECURRENCE-ID 0 or 1 only if referring to an instance of a recurring calendar component. Otherwise it MUST NOT be present. RELATED-TO 0+ RRULE 0+ STATUS 0 or 1 MAY be present, must be "CANCELLED" if present SUMMARY 0 or 1 URL 0 or 1 X-PROPERTY 0+

附加0+与会者0+类别0或1此属性可能包含值列表类0或1注释0或1联系人0+创建的0或1描述0或1 DTSTART 0或1 EXDATE 0+EXRULE 0+上次修改的0或1 RDATE 0+重复ID 0或1仅当引用定期日历组件的实例时。否则它就不能出现。与0+相关的RRLE 0+状态0或1可能存在,如果存在摘要0或1 URL 0或1 X属性0,则必须“取消”+

REQUEST-STATUS 0

请求状态0

VTIMEZONE 0+ MUST be present if any date/time refers to a timezone X-COMPONENT 0+ VALARM 0 VEVENT 0 VFREEBUSY 0 VTODO 0

如果任何日期/时间引用时区X分量0+值0 VEVEVENT 0 VFREEBUSY 0 VTODO 0,则必须存在VTIMEZONE 0+

3.6 Status Replies
3.6 状态答复

The "REQUEST-STATUS" property may include the following values:

“请求状态”属性可能包括以下值:

|==============+============================+=========================|
| Short Return | Longer Return Status       | Offending Data          |
| Status Code  | Description                |                         |
|==============+============================+=========================|
| 2.0          | Success.                   | None.                   |
|==============+============================+=========================|
| 2.1          | Success but fallback taken | Property name and value |
|              | on one or more property    | MAY be specified.       |
|              | values.                    |                         |
|==============+============================+=========================|
| 2.2          | Success, invalid property  | Property name MAY be    |
|              | ignored.                   | specified.              |
|==============+============================+=========================|
| 2.3          | Success, invalid property  | Property parameter name |
|              | parameter ignored.         | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 2.4          | Success, unknown non-      | Non-standard property   |
|              | standard property ignored. | name MAY be specified.  |
|==============+============================+=========================|
| 2.5          | Success, unknown non       | Property and non-       |
|              | standard property value    | standard value MAY be   |
|              | ignored.                   | specified.              |
|==============+============================+=========================|
| 2.6          | Success, invalid calendar  | Calendar component      |
|              | component ignored.         | sentinel (e.g., BEGIN:  |
|              |                            | ALARM) MAY be           |
|              |                            | specified.              |
|==============+============================+=========================|
| 2.7          | Success, request forwarded | Original and forwarded  |
|              | to Calendar User.          | caluser addresses MAY   |
|              |                            | be specified.           |
|==============+============================+=========================|
| 2.8          | Success, repeating event   | RRULE or RDATE property |
        
|==============+============================+=========================|
| Short Return | Longer Return Status       | Offending Data          |
| Status Code  | Description                |                         |
|==============+============================+=========================|
| 2.0          | Success.                   | None.                   |
|==============+============================+=========================|
| 2.1          | Success but fallback taken | Property name and value |
|              | on one or more property    | MAY be specified.       |
|              | values.                    |                         |
|==============+============================+=========================|
| 2.2          | Success, invalid property  | Property name MAY be    |
|              | ignored.                   | specified.              |
|==============+============================+=========================|
| 2.3          | Success, invalid property  | Property parameter name |
|              | parameter ignored.         | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 2.4          | Success, unknown non-      | Non-standard property   |
|              | standard property ignored. | name MAY be specified.  |
|==============+============================+=========================|
| 2.5          | Success, unknown non       | Property and non-       |
|              | standard property value    | standard value MAY be   |
|              | ignored.                   | specified.              |
|==============+============================+=========================|
| 2.6          | Success, invalid calendar  | Calendar component      |
|              | component ignored.         | sentinel (e.g., BEGIN:  |
|              |                            | ALARM) MAY be           |
|              |                            | specified.              |
|==============+============================+=========================|
| 2.7          | Success, request forwarded | Original and forwarded  |
|              | to Calendar User.          | caluser addresses MAY   |
|              |                            | be specified.           |
|==============+============================+=========================|
| 2.8          | Success, repeating event   | RRULE or RDATE property |
        
|              | ignored. Scheduled as a    | name and value MAY be   |
|              | single component.          | specified.              |
|==============+============================+=========================|
| 2.9          | Success, truncated end date| DTEND property value    |
|              | time to date boundary.     | MAY be specified.       |
|==============+============================+=========================|
| 2.10         | Success, repeating VTODO   | RRULE or RDATE property |
|              | ignored. Scheduled as a    | name and value MAY be   |
|              | single VTODO.              | specified.              |
|==============+============================+=========================|
| 2.11         | Success, unbounded RRULE   | RRULE property name and |
|              | clipped at some finite     | value MAY be specified. |
|              | number of instances        | Number of instances MAY |
|              |                            | also be specified.      |
|==============+============================+=========================|
| 3.0          | Invalid property name.     | Property name MAY be    |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.1          | Invalid property value.    | Property name and value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 3.2          | Invalid property parameter.| Property parameter name |
|              |                            | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.3          | Invalid property parameter | Property parameter name |
|              | value.                     | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.4          | Invalid calendar component | Calendar component      |
|              | sequence.                  | sentinel MAY be         |
|              |                            | specified (e.g., BEGIN: |
|              |                            | VTIMEZONE).             |
|==============+============================+=========================|
| 3.5          | Invalid date or time.      | Date/time value(s) MAY  |
|              |                            | be specified.           |
|==============+============================+=========================|
| 3.6          | Invalid rule.              | Rule value MAY be       |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.7          | Invalid Calendar User.     | Attendee property value |
|              |                            |MAY be specified.        |
|==============+============================+=========================|
| 3.8          | No authority.              | METHOD and Attendee     |
|              |                            | property values MAY be  |
|              |                            | specified.              |
|==============+============================+=========================|
        
|              | ignored. Scheduled as a    | name and value MAY be   |
|              | single component.          | specified.              |
|==============+============================+=========================|
| 2.9          | Success, truncated end date| DTEND property value    |
|              | time to date boundary.     | MAY be specified.       |
|==============+============================+=========================|
| 2.10         | Success, repeating VTODO   | RRULE or RDATE property |
|              | ignored. Scheduled as a    | name and value MAY be   |
|              | single VTODO.              | specified.              |
|==============+============================+=========================|
| 2.11         | Success, unbounded RRULE   | RRULE property name and |
|              | clipped at some finite     | value MAY be specified. |
|              | number of instances        | Number of instances MAY |
|              |                            | also be specified.      |
|==============+============================+=========================|
| 3.0          | Invalid property name.     | Property name MAY be    |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.1          | Invalid property value.    | Property name and value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 3.2          | Invalid property parameter.| Property parameter name |
|              |                            | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.3          | Invalid property parameter | Property parameter name |
|              | value.                     | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.4          | Invalid calendar component | Calendar component      |
|              | sequence.                  | sentinel MAY be         |
|              |                            | specified (e.g., BEGIN: |
|              |                            | VTIMEZONE).             |
|==============+============================+=========================|
| 3.5          | Invalid date or time.      | Date/time value(s) MAY  |
|              |                            | be specified.           |
|==============+============================+=========================|
| 3.6          | Invalid rule.              | Rule value MAY be       |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.7          | Invalid Calendar User.     | Attendee property value |
|              |                            |MAY be specified.        |
|==============+============================+=========================|
| 3.8          | No authority.              | METHOD and Attendee     |
|              |                            | property values MAY be  |
|              |                            | specified.              |
|==============+============================+=========================|
        
| 3.9          | Unsupported version.       | VERSION property name   |
|              |                            | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.10         | Request entity too large.  | None.                   |
|==============+============================+=========================|
| 3.11         | Required component or      | Component or property   |
|              | property missing.          | name MAY be specified.  |
|==============+============================+=========================|
| 3.12         | Unknown component or       | Component or property   |
|              | property found             | name MAY be specified   |
|==============+============================+=========================|
| 3.13         | Unsupported component or   | Component or property   |
|              | property found             | name MAY be specified   |
|==============+============================+=========================|
| 3.14         | Unsupported capability     | Method or action MAY    |
|              |                            | be specified            |
|==============+============================+=========================|
| 4.0          | Event conflict. Date/time  | DTSTART and DTEND       |
|              | is busy.                   | property name and values|
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.0          | Request MAY supported.     | Method property value   |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.1          | Service unavailable.       | ATTENDEE property value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.2          | Invalid calendar service.  | ATTENDEE property value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.3          | No scheduling support for  | ATTENDEE property value |
|              | user.                      | MAY be specified.       |
|==============+============================+=========================|
        
| 3.9          | Unsupported version.       | VERSION property name   |
|              |                            | and value MAY be        |
|              |                            | specified.              |
|==============+============================+=========================|
| 3.10         | Request entity too large.  | None.                   |
|==============+============================+=========================|
| 3.11         | Required component or      | Component or property   |
|              | property missing.          | name MAY be specified.  |
|==============+============================+=========================|
| 3.12         | Unknown component or       | Component or property   |
|              | property found             | name MAY be specified   |
|==============+============================+=========================|
| 3.13         | Unsupported component or   | Component or property   |
|              | property found             | name MAY be specified   |
|==============+============================+=========================|
| 3.14         | Unsupported capability     | Method or action MAY    |
|              |                            | be specified            |
|==============+============================+=========================|
| 4.0          | Event conflict. Date/time  | DTSTART and DTEND       |
|              | is busy.                   | property name and values|
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.0          | Request MAY supported.     | Method property value   |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.1          | Service unavailable.       | ATTENDEE property value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.2          | Invalid calendar service.  | ATTENDEE property value |
|              |                            | MAY be specified.       |
|==============+============================+=========================|
| 5.3          | No scheduling support for  | ATTENDEE property value |
|              | user.                      | MAY be specified.       |
|==============+============================+=========================|
        
3.7 Implementation Considerations
3.7 实施考虑
3.7.1 Working With Recurrence Instances
3.7.1 使用重复实例

iCalendar includes a recurrence grammar to represent recurring events. The benefit of such a grammar is the ability to represent a number of events in a single object. However, while this simplifies creation of a recurring event, meeting instances still need to be referenced. For instance, an "Attendee" may decline the third instance of a recurring Friday event. Similarly, the "Organizer" may change the time or location to a single instance of the recurring event.

iCalendar包含表示重复事件的重复语法。这种语法的好处是能够在单个对象中表示多个事件。但是,尽管这简化了重复事件的创建,但仍然需要引用会议实例。例如,“与会者”可能会拒绝第三次重复的星期五活动。类似地,“组织者”可以将时间或位置更改为重复事件的单个实例。

Since implementations may elect to store recurring events as either a single event object or a collection of discreet, related event objects, the protocol is designed so that each recurring instance may be both referenced and versioned. Hence, implementations that choose to maintain per-instance properties (such as "ATTENDEE" property "partstat" parameter) may do so. However, the protocol does not require per-instance recognition unless the instance itself must be renegotiated.

由于实现可以选择将周期性事件存储为单个事件对象或离散的相关事件对象的集合,因此协议的设计使得每个周期性实例都可以被引用和版本化。因此,选择维护每个实例属性(例如“ATTENDEE”属性“partstat”参数)的实现可能会这样做。但是,除非实例本身必须重新协商,否则该协议不需要对每个实例进行识别。

The scenarios for recurrence instance referencing are listed below. For purposes of simplification a change to an event refers to a "trigger property." That is, a property that has a substantive effect on the meeting itself such as start time, location, due date (for "VTODO" calendar component components) and possibly description.

下面列出了重复实例引用的场景。为简化起见,对事件的更改指的是“触发器属性”。即,对会议本身具有实质性影响的属性,如开始时间、地点、截止日期(对于“VTODO”日历组件)以及可能的描述。

"Organizer" initiated actions:

“组织者”发起的行动:

. "Organizer" deletes or changes a single instance of a recurring event . "Organizer" makes changes that affect all future instances . "Organizer" makes changes that affect all previous instances . "Organizer" deletes or modifies a previously changed instance

. “组织者”删除或更改重复事件的单个实例。“组织者”所做的更改将影响所有将来的实例。“组织者”所做的更改会影响所有以前的实例。“组织者”删除或修改以前更改的实例

"Attendee" initiated actions:

“与会者”发起的行动:

. "Attendee" changes status for a particular recurrence instance . "Attendee" sends Event-Counter for a particular recurrence instance

. “与会者”更改特定定期实例的状态。“与会者”发送特定重复实例的事件计数器

An instance of a recurring event is assigned a unique identification, "RECURRENCE-ID" property, when that instance is renegotiated. Negotiation may be necessary when a substantive change to the event or to-do has be made (such as changing the start time, end time, due date or location). The "Organizer" can identify a specific recurrence instance using the "RECURRENCE-ID" property. The property value is equal to the date/time of the instance. If the "Organizer" wishes to change the "DTSTART", the original "DTSTART" value is used for "RECURRENCE-ID" property and the new "DTSTART" and "DTEND" values reflect the change. Note that after the change has occurred, the "RECURRENCE-ID" has changed to the new "DTSTART" value.

重新协商周期性事件实例时,会为该实例分配唯一标识“RECURRENCE-ID”属性。当活动或待办事项发生实质性变更时(如变更开始时间、结束时间、截止日期或地点),可能需要进行协商。“组织者”可以使用“recurrence-ID”属性标识特定的定期实例。属性值等于实例的日期/时间。如果“组织者”希望更改“DTSTART”,则原始“DTSTART”值将用于“RECURRENCE-ID”属性,新的“DTSTART”和“DTEND”值将反映更改。请注意,在发生更改后,“RECURRENCE-ID”已更改为新的“DTSTART”值。

3.7.2 Attendee Property Considerations
3.7.2 与会者财产注意事项

The "ORGANIZER" property is required on published events, to-dos, and journal entries for two reasons. First, only the "Organizer" is allowed to update and redistribute an event or to-do component. It follows that the "ORGANIZER" property MUST be present in the event, to-do, or journal entry component so that the CUA has a basis for

发布的事件、待办事项和日志条目需要“ORGANIZER”属性,原因有二。首先,只允许“组织者”更新和重新分发事件或待办事项组件。因此,“组织者”属性必须出现在事件、待办事项或日记账分录组件中,以便CUA有一个

authorizing an update. Second, it is prudent to provide a point of contact for anyone who receives a published component in case of problems.

授权更新。第二,谨慎的做法是为收到发布组件的任何人提供联系点,以防出现问题。

There are valid [RFC-822] addresses that represent groups. Sending email to such an address results in mail being sent to multiple recipients. Such an address may be used as the value of an "ATTENDEE" property. Thus, it is possible that the recipient of a "REQUEST" does not appear explicitly in the list.

存在表示组的有效[RFC-822]地址。向这样的地址发送电子邮件会导致邮件被发送到多个收件人。这样的地址可以用作“ATTENDEE”属性的值。因此,“请求”的接收者可能没有明确地出现在列表中。

It is recommended that the general approach to finding a "Calendar User" in an attendee list be as follows:

建议在与会者列表中查找“日历用户”的一般方法如下:

1. Search for the "Calendar User" in the attendee list where "TYPE=INDIVIDUAL"

1. 在“类型=个人”的与会者列表中搜索“日历用户”

2. Failing (1) look for attendees where "TYPE=GROUP" or 'TYPE=UNKNOWN". The CUA then determines if the "Calendar User" is a member of one of these groups. If so, the "REPLY" method sent to the "Organizer" MUST contain a new "ATTENDEE" property in which: . the "type" property parameter is set to INDIVIDUAL . the "member" property parameter is set to the name of the group

2. 未能(1)查找“TYPE=GROUP”或“TYPE=UNKNOWN”的与会者。CUA然后确定“日历用户”是否是其中一个组的成员。如果是,则发送到“组织者”的“REPLY”方法必须包含新的“ATTENDEE”属性,其中:。将“TYPE”属性参数设置为个人。成员“属性参数设置为组的名称

3. Failing (2) the CUA MAY ignore or accept the request as the "Calendar User" wishes.

3. 失败(2)CUA可根据“日历用户”的意愿忽略或接受请求。

3.7.3 X-Tokens
3.7.3 X代币

To make iCalendar objects extensible, new property types MAY be inserted into components. These properties are called X-Tokens as they are prefixed with "X-". A client is not required to make sense of X-Tokens. Clients are not required to save X-Tokens or use them in replies.

要使iCalendar对象具有可扩展性,可以在组件中插入新的特性类型。这些属性称为X标记,因为它们的前缀为“X-”。客户端不需要理解X令牌。客户端不需要保存X令牌或在回复中使用它们。

4 Examples

4个例子

4.1 Published Event Examples
4.1 已发布的事件示例

In the calendaring and scheduling context, publication refers to the one way transfer of event information. Consumers of published events simply incorporate the event into a calendar. No reply is expected. Individual "A" publishes an event. Individual "B" reads the event and incorporates it into their calendar. Events are published in several ways including: embedding the event as an object in a web page, e-mailing the event to a distribution list, and posting the event to a newsgroup.

在日历和计划上下文中,发布是指事件信息的单向传输。已发布事件的使用者只需将事件合并到日历中。预计不会有答复。个人“A”发布一个事件。个人“B”读取事件并将其合并到日历中。事件发布有几种方式,包括:将事件作为对象嵌入网页、通过电子邮件将事件发送到通讯组列表以及将事件发布到新闻组。

The table below illustrates the sequence of events between the publisher and the consumers of a published event.

下表说明了已发布事件的发布者和使用者之间的事件顺序。

   +-------------------------------------------------------------------+
   | Action                          |  "Organizer"                    |
   +---------------------------------+---------------------------------+
   | Publish an event                | "A" sends or posts a PUBLISH    |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads a published event     |                                 |
   +---------------------------------+---------------------------------+
   | Publish an updated event        | "A" sends or posts a PUBLISH    |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads the updated event     |                                 |
   +---------------------------------+---------------------------------+
   | Cancel a published event        | "A" sends or posts a CANCEL     |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads the canceled event    |                                 |
   |  publication                    |                                 |
   +---------------------------------+---------------------------------+
        
   +-------------------------------------------------------------------+
   | Action                          |  "Organizer"                    |
   +---------------------------------+---------------------------------+
   | Publish an event                | "A" sends or posts a PUBLISH    |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads a published event     |                                 |
   +---------------------------------+---------------------------------+
   | Publish an updated event        | "A" sends or posts a PUBLISH    |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads the updated event     |                                 |
   +---------------------------------+---------------------------------+
   | Cancel a published event        | "A" sends or posts a CANCEL     |
   |                                 | message                         |
   +---------------------------------+---------------------------------+
   | "B" reads the canceled event    |                                 |
   |  publication                    |                                 |
   +---------------------------------+---------------------------------+
        
4.1.1 A Minimal Published Event
4.1.1 最小的公开事件

The iCalendar object below describes a single event that begins on July 1, 1997 at 20:00 UTC. This event contains the minimum set of properties for a "PUBLISH" for a "VEVENT" calendar component.

下面的iCalendar对象描述了1997年7月1日UTC 20:00开始的单个事件。此事件包含“VEVENT”日历组件的“发布”的最小属性集。

   BEGIN:VCALENDAR
   METHOD:PUBLISH
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTART:19970701T200000Z
   DTSTAMP:19970611T190000Z
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   UID:0981234-1234234-23@example.com
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:PUBLISH
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTART:19970701T200000Z
   DTSTAMP:19970611T190000Z
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   UID:0981234-1234234-23@example.com
   END:VEVENT
   END:VCALENDAR
        
4.1.2 Changing A Published Event
4.1.2 更改已发布的事件

The iCalendar object below describes an update to the event described in 4.1.1, the time has been changed, an end time has been added, and the sequence number has been adjusted.

下面的iCalendar对象描述了对4.1.1中所述事件的更新,时间已更改,结束时间已添加,序列号已调整。

   BEGIN:VCALENDAR
   METHOD:PUBLISH
   VERSION:2.0
   PRODID:-//ACME/DesktopCalendar//EN
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTAMP:19970612T190000Z
   DTSTART:19970701T210000Z
   DTEND:19970701T230000Z
   SEQUENCE:1
   UID:0981234-1234234-23@example.com
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:PUBLISH
   VERSION:2.0
   PRODID:-//ACME/DesktopCalendar//EN
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTAMP:19970612T190000Z
   DTSTART:19970701T210000Z
   DTEND:19970701T230000Z
   SEQUENCE:1
   UID:0981234-1234234-23@example.com
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   END:VEVENT
   END:VCALENDAR
        

The "UID" property is used by the client to identify the event. The "SEQUENCE" property indicates that this is a change to the event. The event with a matching UID and sequence number 0 is superseded by this event.

客户端使用“UID”属性来标识事件。“SEQUENCE”属性表示这是对事件的更改。具有匹配UID和序列号0的事件将被此事件取代。

The "SEQUENCE" property provides a reliable way to distinguish different versions of the same event. Each time an event is published, its sequence number is incremented. If a client receives an event with a sequence number 5 and finds it has the same event with sequence number 2, the event SHOULD be updated. However, if the client received an event with sequence number 2 and finds it already has sequence number 5 of the same event, the event MUST NOT be updated.

“SEQUENCE”属性提供了一种可靠的方法来区分同一事件的不同版本。每次发布事件时,其序列号都会递增。如果客户端接收到序列号为5的事件,并发现其具有序列号为2的相同事件,则应更新该事件。但是,如果客户端接收到序列号为2的事件,并且发现它已经具有相同事件的序列号5,则不得更新该事件。

4.1.3 Canceling A Published Event
4.1.3 取消已发布的事件

The iCalendar object below cancels the event described in 4.1.1. This cancels the event with "SEQUENCE" property of 0, 1, and 2.

下面的iCalendar对象取消4.1.1中描述的事件。这将取消“SEQUENCE”属性为0、1和2的事件。

   BEGIN:VCALENDAR
   METHOD:CANCEL
   VERSION:2.0
   PRODID:-//ACME/DesktopCalendar//EN
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   COMMENT:DUKES forfeit the game
   SEQUENCE:2
   UID:0981234-1234234-23@example.com
   DTSTAMP:19970613T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:CANCEL
   VERSION:2.0
   PRODID:-//ACME/DesktopCalendar//EN
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   COMMENT:DUKES forfeit the game
   SEQUENCE:2
   UID:0981234-1234234-23@example.com
   DTSTAMP:19970613T190000Z
   END:VEVENT
   END:VCALENDAR
        
4.1.4 A Rich Published Event
4.1.4 内容丰富的公开活动

This example describes the same event as in 4.1.1, but in much greater detail.

此示例描述了与4.1.1中相同的事件,但更详细。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:PUBLISH
   SCALE:GREGORIAN
   VERSION:2.0
   BEGIN:VTIMEZONE
   TZID:America-Chicago
   TZURL:http://zones.stds_r_us.net/tz/America-Chicago
   BEGIN:STANDARD
   DTSTART:19671029T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0600
   TZNAME:CST
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:19870405T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZOFFSETFROM:-0600
   TZOFFSETTO:-0500
   TZNAME:CDT
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   ATTACH:http://www.dukes.com/
   CATEGORIES:SPORTS EVENT,ENTERTAINMENT
   CLASS:PRIVATE
   DESCRIPTION:MIDWAY STADIUM\n
    Big time game. MUST see.\n
    Expected duration:2 hours\n
   DTEND;TZID=America-Chicago:19970701T180000
   DTSTART;TZID=America-Chicago:19970702T160000
   DTSTAMP:19970614T190000Z
   STATUS:CONFIRMED
   LOCATION;VALUE=URI:http://www.midwaystadium.com/
   PRIORITY:2
   RESOURCES:SCOREBOARD
   SEQUENCE:3
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   UID:0981234-1234234-23@example.com
   RELATED-TO:0981234-1234234-14@example.com
   BEGIN:VALARM
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:PUBLISH
   SCALE:GREGORIAN
   VERSION:2.0
   BEGIN:VTIMEZONE
   TZID:America-Chicago
   TZURL:http://zones.stds_r_us.net/tz/America-Chicago
   BEGIN:STANDARD
   DTSTART:19671029T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZOFFSETFROM:-0500
   TZOFFSETTO:-0600
   TZNAME:CST
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:19870405T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZOFFSETFROM:-0600
   TZOFFSETTO:-0500
   TZNAME:CDT
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   ATTACH:http://www.dukes.com/
   CATEGORIES:SPORTS EVENT,ENTERTAINMENT
   CLASS:PRIVATE
   DESCRIPTION:MIDWAY STADIUM\n
    Big time game. MUST see.\n
    Expected duration:2 hours\n
   DTEND;TZID=America-Chicago:19970701T180000
   DTSTART;TZID=America-Chicago:19970702T160000
   DTSTAMP:19970614T190000Z
   STATUS:CONFIRMED
   LOCATION;VALUE=URI:http://www.midwaystadium.com/
   PRIORITY:2
   RESOURCES:SCOREBOARD
   SEQUENCE:3
   SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES
   UID:0981234-1234234-23@example.com
   RELATED-TO:0981234-1234234-14@example.com
   BEGIN:VALARM
        

TRIGGER:-PT2H ACTION:DISPLAY DESCRIPTION:You should be leaving for the game now. END:VALARM BEGIN:VALARM TRIGGER:-PT30M ACTION:AUDIO END:VALARM END:VEVENT END:VCALENDAR

触发器:-PT2H动作:显示说明:您现在应该前往游戏。结束:VALARM开始:VALARM触发器:-PT30M动作:音频结束:VALARM结束:VEVENT结束:VCALENDAR

The "RELATED-TO" field contains the "UID" property of a related calendar event. The "SEQUENCE" property 3 indicates that this event supersedes versions 0, 1, and 2.

“RELATED-TO”字段包含相关日历事件的“UID”属性。“SEQUENCE”属性3表示此事件将取代版本0、1和2。

4.1.5 Anniversaries or Events attached to entire days
4.1.5 周年纪念日或附加于整天的事件

This example demonstrates the use of the "value" parameter to tie a "VEVENT" to day rather than a specific time.

此示例演示了如何使用“value”参数将“VEVENT”与日期而不是特定时间绑定。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:PUBLISH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTAMP:19970614T190000Z
   UID:0981234-1234234-23@example.com
   DTSTART;VALUE=DATE:19970714
   RRULE:FREQ=YEARLY;INTERVAL=1
   SUMMARY: Bastille Day
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:PUBLISH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:mailto:a@example.com
   DTSTAMP:19970614T190000Z
   UID:0981234-1234234-23@example.com
   DTSTART;VALUE=DATE:19970714
   RRULE:FREQ=YEARLY;INTERVAL=1
   SUMMARY: Bastille Day
   END:VEVENT
   END:VCALENDAR
        
4.2 Group Event Examples
4.2 团体活动示例

Group events are distinguished from published events in that they have "Attendees" and that there is interaction between the "Attendees" and the "Organizer" with respect to the event. Individual "A" requests a meeting between individuals "A", "B", "C" and "D". Individual "B" confirms attendance to the meeting. Individual "C" declines attendance. Individual "D" tentatively confirms attendance. The following table illustrates the the message flow between these individuals. A, the CU scheduling the meeting, is referenced as the "Organizer".

团体活动与已发布的活动的区别在于,它们有“与会者”,并且“与会者”和“组织者”之间就活动进行了互动。“A”个人要求“A”、“B”、“C”和“D”个人会面。个人“B”确认出席会议。个人“C”拒绝出席。个人“D”暂时确认出席人数。下表说明了这些个体之间的消息流。A、 安排会议的CU被称为“组织者”。

+---------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                 |
+---------------------------------------------------------------------+
| Initiate a meeting | "A" sends a REQUEST |                          |
| request            | message to "B", "C",|                          |
|                    | and "D"             |                          |
+---------------------------------------------------------------------+
| Accept the meeting |                     | "B" sends a REPLY        |
| request            |                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "accepted"        |
+---------------------------------------------------------------------+
| Decline the meeting|                     | "C" sends a REPLY        |
| request            |                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "declined"        |
+---------------------------------------------------------------------+
| Tentatively accept |                     | "D" sends a REPLY        |
| the meeting request|                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "tentative"       |
+---------------------------------------------------------------------+
| Confirm meeting    | "A" sends a REQUEST |                          |
| status with        | message to "B" and  |                          |
| attendees          | "D" with updated    |                          |
|                    | information.        |                          |
+---------------------------------------------------------------------+
        
+---------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                 |
+---------------------------------------------------------------------+
| Initiate a meeting | "A" sends a REQUEST |                          |
| request            | message to "B", "C",|                          |
|                    | and "D"             |                          |
+---------------------------------------------------------------------+
| Accept the meeting |                     | "B" sends a REPLY        |
| request            |                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "accepted"        |
+---------------------------------------------------------------------+
| Decline the meeting|                     | "C" sends a REPLY        |
| request            |                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "declined"        |
+---------------------------------------------------------------------+
| Tentatively accept |                     | "D" sends a REPLY        |
| the meeting request|                     | message to "A" with its  |
|                    |                     | ATTENDEE "partstat" para-|
|                    |                     | set to "tentative"       |
+---------------------------------------------------------------------+
| Confirm meeting    | "A" sends a REQUEST |                          |
| status with        | message to "B" and  |                          |
| attendees          | "D" with updated    |                          |
|                    | information.        |                          |
+---------------------------------------------------------------------+
        
4.2.1 A Group Event Request
4.2.1 组事件请求

A sample meeting request is sent from "A" to "B", "C", and "D". _E_ is also sent a copy of the request but is not expected to attend and need not reply. "E" illustrates how CUAs might implement an "FYI" type feature. Note the use of the "role" parameter. The default value for the "role" parameter is "req-participant" and it need not be enumerated. In this case we are using the value "non-participant" to indicate "E" is a non-attending CU. The parameter is not needed on other "Attendees" since "participant" is the default value.

会议请求样本从“A”发送到“B”、“C”和“D”_E_u还收到一份请求副本,但预计不会出席,无需回复。“E”说明CUAs如何实现“FYI”型功能。请注意“role”参数的用法。“role”参数的默认值为“req participant”,无需枚举。在这种情况下,我们使用“非参与者”值表示“E”是非参与者CU。其他“与会者”不需要该参数,因为“参与者”是默认值。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=B:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=C:Mailto:C@example.com
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=B:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=C:Mailto:C@example.com
        
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
   ATTENDEE;RSVP=FALSE;TYPE=ROOM:conf_Big@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T2000000Z
   SUMMARY:Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
   ATTENDEE;RSVP=FALSE;TYPE=ROOM:conf_Big@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T2000000Z
   SUMMARY:Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
4.2.2 Reply To A Group Event Request
4.2.2 答复组事件请求

Attendee "B" accepts the meeting.

与会者“B”接受会议。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
   ORGANIZER:MAILTO:A@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970612T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
   ORGANIZER:MAILTO:A@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970612T190000Z
   END:VEVENT
   END:VCALENDAR
        

"B" could have declined the meeting or indicated tentative acceptance by setting the "ATTENDEE" "partstat" parameter to "declined" or "tentative", respectively. Also, "REQUEST-STATUS" is not required in successful transactions.

“B”可以通过将“与会者”“partstat”参数分别设置为“谢绝”或“暂定”来拒绝会议或表示暂定接受。此外,成功交易中不需要“请求状态”。

4.2.3 Update An Event
4.2.3 更新事件

The event is moved to a different time. The combination of the "UID" property (unchanged) and the "SEQUENCE" (bumped to 1) properties indicate the update.

事件将移至其他时间。“UID”属性(未更改)和“SEQUENCE”(凸点为1)属性的组合表示更新。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
        
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE;
    CUTYPE=ROOM:Mailto:Conf@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
   DTSTART:19970701T180000Z
   DTEND:19970701T190000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   DTSTAMP:19970613T190000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE;
    CUTYPE=ROOM:Mailto:Conf@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com
   DTSTART:19970701T180000Z
   DTEND:19970701T190000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   DTSTAMP:19970613T190000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
4.2.4 Countering an Event Proposal
4.2.4 反对活动提案

"A" sends a "REQUEST" to "B" and "C". "B" makes a counter-proposal to "A" to change the time and location.

“A”向“B”和“C”发送“请求”。“B”向“a”提出反建议,要求更改时间和地点。

"A" sends the following "REQUEST":

“A”发送以下“请求”:

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTART:19970701T190000Z
   DTEND:19970701T200000Z
   SUMMARY:Discuss the Merits of the election results
   LOCATION:Green Conference Room
   UID:calsrv.example.com-873970198738777a@example.com
   SEQUENCE:0
   DTSTAMP:19970611T190000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTART:19970701T190000Z
   DTEND:19970701T200000Z
   SUMMARY:Discuss the Merits of the election results
   LOCATION:Green Conference Room
   UID:calsrv.example.com-873970198738777a@example.com
   SEQUENCE:0
   DTSTAMP:19970611T190000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

"B" sends "COUNTER" to "A", requesting changes to time and place. "B" uses the "COMMENT" property to communicate a rationale for the change. Note that the "SEQUENCE" property is NOT incremented on a "COUNTER".

“B”向“A”发送“计数器”,请求更改时间和地点。“B”使用“COMMENT”属性传达变更的基本原理。请注意,“序列”属性不会在“计数器”上递增。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:COUNTER
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTART:19970701T160000Z
   DTEND:19970701T190000Z
   DTSTAMP:19970612T190000Z
   SUMMARY:Discuss the Merits of the election results
   LOCATION:Green Conference Room
   COMMENT:This time works much better and I think the big conference
     room is too big
   UID:calsrv.example.com-873970198738777a@example.com
   SEQUENCE:0
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:COUNTER
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTART:19970701T160000Z
   DTEND:19970701T190000Z
   DTSTAMP:19970612T190000Z
   SUMMARY:Discuss the Merits of the election results
   LOCATION:Green Conference Room
   COMMENT:This time works much better and I think the big conference
     room is too big
   UID:calsrv.example.com-873970198738777a@example.com
   SEQUENCE:0
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        

"A" accepts the changes from "B". To accept a counter-proposal, the "Organizer" sends a new event "REQUEST" with an incremented sequence number.

“A”接受“B”的更改。要接受反建议,“组织者”将发送一个带有递增序号的新事件“请求”。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTAMP:19970613T190000Z
   DTSTART:19970701T160000Z
   DTEND:19970701T190000Z
   SUMMARY:Discuss the Merits of the election results - changed to
     meet B's schedule
   LOCATION:Green Conference Room
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:C@example.com
   DTSTAMP:19970613T190000Z
   DTSTART:19970701T160000Z
   DTEND:19970701T190000Z
   SUMMARY:Discuss the Merits of the election results - changed to
     meet B's schedule
   LOCATION:Green Conference Room
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

Instead, "A" rejects "B's" counter proposal

相反,“A”拒绝“B”的反建议

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:DECLINECOUNTER
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   COMMENT:Sorry, I cannot change this meeting time
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:DECLINECOUNTER
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   COMMENT:Sorry, I cannot change this meeting time
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        
4.2.5 Delegating an Event
4.2.5 委派活动

When delegating an event request to another "Calendar User", the "Delegator" must both update the "Organizer" with a "REPLY" and send a request to the "Delegate". There is currently no protocol limitation to delegation depth. It is possible for the original

将事件请求委托给另一个“日历用户”时,“委托人”必须用“回复”更新“组织者”,并向“委托人”发送请求。目前对委托深度没有协议限制。原版是可能的

delegate to delegate the meeting to someone else, and so on. When a request is delegated from one CUA to another there are a number of responsibilities required of the "Delegator". The "Delegator" MUST:

委派将会议委派给其他人,依此类推。当一个请求从一个CUA委托给另一个CUA时,“委托人”需要承担许多责任。“授权人”必须:

. Send a "REPLY" to the "Organizer" with the following updates: . The "Delegator's" "ATTENDEE" property "partstat" parameter set to "delegated" and the "delegated-to" parameter is set to the address of the "Delegate" . Add an additional "ATTENDEE" property for the "Delegate" with the "delegated-from" property parameter set to the "Delegator" . Indicate whether they want to continue to receive updates when the "Organizer" sends out updated versions of the event. Setting the "rsvp" property parameter to "TRUE" will cause the updates to be sent, setting it to "FALSE" causes no further updates to be sent. Note that in either case, if the "Delegate" declines the invitation the "Delegator" will be notified. . The "Delegator" MUST also send a copy of the original "REQUEST" method to the "Delegate".

. 向“组织者”发送包含以下更新的“回复”:。“委托人”的“与会者”属性“partstat”参数设置为“委托”,而“委托人”参数设置为“委托人”的地址。将“Delegate from”属性参数设置为“Delegator”时,为“Delegate”添加额外的“ATTENDEE”属性。指示当“组织者”发送事件的更新版本时,他们是否希望继续接收更新。将“rsvp”属性参数设置为“TRUE”将导致发送更新,将其设置为“FALSE”将导致不发送进一步的更新。请注意,在任何一种情况下,如果“代理人”拒绝邀请,将通知“代理人”。“委托人”还必须向“委托人”发送原始“请求”方法的副本。

It is not required that the "Delegate" include the "Delegator" in their "REPLY" method. However, it is strongly advised since this will inform the "Delegator" whether the "Delegate" plans to attend the meeting. [Editors note: How so?] If the "Delegate" declines the meeting, the "Delegator" may elect to delegate the "REQUEST" to another CUA. The process is the same.

不要求“委托人”在其“答复”方法中包含“委托人”。但是,强烈建议这样做,因为这将通知“授权人”该“代表”是否计划参加会议。[编辑注:如何?]如果“代表”拒绝会议,“代表”可以选择将“请求”委托给另一个CUA。过程是一样的。

+---------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                 |
+---------------------------------------------------------------------+
| Initiate a meeting | "A" sends a REQUEST |                          |
| request            | message to "B" and  |                          |
|                    | "C"                 |                          |
+---------------------------------------------------------------------+
| Delegate:          |                     | "C" sends a REPLY to "A" |
| "C" delegates to   |                     | with the ATTENDEE.       |
| "E"                |                     | "partstat" parameter set |
|                    |                     | to "delegated" and with a|
|                    |                     | new "ATTENDEE" property  |
|                    |                     | for "E". "E's" ATTENDEE  |
|                    |                     | "delegated-from" param   |
|                    |                     | is set to "C". "C's"     |
|                    |                     | ATTENDEE "delegated-to"  |
|                    |                     | param is set to "E".     |
|                    |                     | "C" sends REQUEST message|
|                    |                     | to "E" with the original |
|                    |                     | meeting request          |
|                    |                     | information. The         |
|                    |                     |  "partstat" property     |
|                    |                     | parameter for "C" is set |
|                    |                     | to "delegated" and the   |
|                    |                     |  "delegated-to"          |
|                    |                     | parameter is set to      |
|                    |                     | the address of "E". An   |
|                    |                     | "ATTENDEE" property is   |
|                    |                     | added for "E" and the    |
|                    |                     | "delegated-from"         |
|                    |                     | parameter is set to      |
|                    |                     | the address of "C".      |
+---------------------------------------------------------------------+
| Confirm meeting    |                     | "E" sends REPLY message  |
| attendance         |                     | to "A" and optionally "C"|
|                    |                     | with its "partstat"      |
|                    |                     | property parameter set   |
|                    |                     | to "ACCEPTED"            |
+---------------------------------------------------------------------+
| Optional:          | "A" sends REQUEST   |                          |
| Redistribute       | message to "B", "C" |                          |
| meeting to         | and "E".            |                          |
| attendees          |                     |                          |
+---------------------------------------------------------------------+
        
+---------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                 |
+---------------------------------------------------------------------+
| Initiate a meeting | "A" sends a REQUEST |                          |
| request            | message to "B" and  |                          |
|                    | "C"                 |                          |
+---------------------------------------------------------------------+
| Delegate:          |                     | "C" sends a REPLY to "A" |
| "C" delegates to   |                     | with the ATTENDEE.       |
| "E"                |                     | "partstat" parameter set |
|                    |                     | to "delegated" and with a|
|                    |                     | new "ATTENDEE" property  |
|                    |                     | for "E". "E's" ATTENDEE  |
|                    |                     | "delegated-from" param   |
|                    |                     | is set to "C". "C's"     |
|                    |                     | ATTENDEE "delegated-to"  |
|                    |                     | param is set to "E".     |
|                    |                     | "C" sends REQUEST message|
|                    |                     | to "E" with the original |
|                    |                     | meeting request          |
|                    |                     | information. The         |
|                    |                     |  "partstat" property     |
|                    |                     | parameter for "C" is set |
|                    |                     | to "delegated" and the   |
|                    |                     |  "delegated-to"          |
|                    |                     | parameter is set to      |
|                    |                     | the address of "E". An   |
|                    |                     | "ATTENDEE" property is   |
|                    |                     | added for "E" and the    |
|                    |                     | "delegated-from"         |
|                    |                     | parameter is set to      |
|                    |                     | the address of "C".      |
+---------------------------------------------------------------------+
| Confirm meeting    |                     | "E" sends REPLY message  |
| attendance         |                     | to "A" and optionally "C"|
|                    |                     | with its "partstat"      |
|                    |                     | property parameter set   |
|                    |                     | to "ACCEPTED"            |
+---------------------------------------------------------------------+
| Optional:          | "A" sends REQUEST   |                          |
| Redistribute       | message to "B", "C" |                          |
| meeting to         | and "E".            |                          |
| attendees          |                     |                          |
+---------------------------------------------------------------------+
        

"C" responds to the "Organizer".

“C”回应“组织者”。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
    TO="Mailto:E@example.com":Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
    TO="Mailto:E@example.com":Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        

Attendee "C" delegates presence at the meeting to "E".

与会者“C”代表“E”出席会议。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
    TO="Mailto:E@example.com":Mailto:C@example.com
   ATTENDEE;RSVP=TRUE;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   DTSTART:19970701T180000Z
   DTEND:19970701T200000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   STATUS:CONFIRMED
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-
    TO="Mailto:E@example.com":Mailto:C@example.com
   ATTENDEE;RSVP=TRUE;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   DTSTART:19970701T180000Z
   DTEND:19970701T200000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   STATUS:CONFIRMED
   DTSTAMP:19970611T190000Z
   END:VEVENT
   END:VCALENDAR
        
4.2.6 Delegate Accepts the Meeting
4.2.6 代表接受会议

To accept a delegated meeting, the delegate, "E", sends the following message to "A" and "C":

要接受委派会议,代表“E”向“a”和“C”发送以下消息:

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
        
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED-
    FROM="Mailto:C@example.com":Mailto:E@example.com
   ATTENDEE;PARTSTAT=DELEGATED;
    DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED-
    FROM="Mailto:C@example.com":Mailto:E@example.com
   ATTENDEE;PARTSTAT=DELEGATED;
    DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        
4.2.7 Delegate Declines the Meeting
4.2.7 代表拒绝参加会议

In this example the "Delegate" declines the meeting request and sets the "ATTENDEE" property "partstat" parameter to "DECLINED". The "Organizer" SHOULD resend the "REQUEST" to "C" with the "partstat" parameter of the "Delegate" set to "declined". This lets the "Delegator" know that the "Delegate" has declined and provides an opportunity to the "Delegator" to either accept the request or delegate it to another CU.

在本例中,“代理人”拒绝会议请求,并将“与会者”属性“partstat”参数设置为“拒绝”。“组织者”应将“委托”的“partstat”参数设置为“谢绝”后,将“请求”重新发送给“C”。这让“委托人”知道“委托人”已拒绝,并为“委托人”提供接受请求或将其委托给其他CU的机会。

Response from "E" to "A" and "C". Note the use of the "COMMENT" property "E" uses to indicate why the delegation was declined.

“E”对“A”和“C”的答复。请注意,使用“评论”属性“E”来表示代表团被拒绝的原因。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DELEGATED;
    DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
   ATTENDEE;PARTSTAT=DECLINED;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   COMMENT:Sorry, I will be out of town at that time.
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DELEGATED;
    DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com
   ATTENDEE;PARTSTAT=DECLINED;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   COMMENT:Sorry, I will be out of town at that time.
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   REQUEST-STATUS:2.0;Success
   DTSTAMP:19970614T190000Z
   END:VEVENT
   END:VCALENDAR
        

"A" resends the "REQUEST" method to "C". "A" may also wish to express the fact that the item was delegated in the "COMMENT" property.

“A”将“请求”方法重新发送到“C”。“A”还可以表示该项目是在“评论”属性中委托的。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DECLINED;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   SUMMARY:Phone Conference
   DTSTART:19970701T180000Z
   DTEND:19970701T200000Z
   DTSTAMP:19970614T200000Z
   COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR
    INVITATION
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:MAILTO:A@Example.com
   ATTENDEE;PARTSTAT=DECLINED;
    DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:0
   SUMMARY:Phone Conference
   DTSTART:19970701T180000Z
   DTEND:19970701T200000Z
   DTSTAMP:19970614T200000Z
   COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR
    INVITATION
   END:VEVENT
   END:VCALENDAR
        
4.2.8 Forwarding an Event Request
4.2.8 转发事件请求

The protocol does not prevent an "Attendee" from "forwarding" an "VEVENT" calendar component to other "Calendar Users". Forwarding differs from delegation in that the forwarded "Calendar User" (often referred to as a "Party Crasher") does not replace the forwarding "Calendar User". Implementations are not required to add the "Party Crasher" to the "Attendee" list and hence there is no guarantee that a "Party Crasher" will receive additional updates to the Event. The forwarding "Calendar User" SHOULD NOT add the "Party Crasher" to the attendee list. The "Organizer" MAY add the forwarded "Calendar User" to the attendee list.

该协议不阻止“与会者”将“VEVENT”日历组件“转发”给其他“日历用户”。转发与委托的不同之处在于,转发的“日历用户”(通常称为“参与方破坏者”)并不取代转发的“日历用户”。将“聚会撞车者”添加到“与会者”列表中不需要实施,因此不能保证“聚会撞车者”会收到活动的其他更新。转发“日历用户”不应将“聚会撞车者”添加到与会者列表中。“组织者”可以将转发的“日历用户”添加到与会者列表中。

4.2.9 Cancel A Group Event
4.2.9 取消团体活动

Individual "A" requests a meeting between individuals "A", "B", "C", and "D". Individual "B" declines attendance to the meeting. Individual "A" decides to cancel the meeting. The following table illustrates the sequence of messages that would be exchanged between these individuals.

个人“A”要求个人“A”、“B”、“C”和“D”之间会面。个人“B”拒绝出席会议。个人“A”决定取消会议。下表说明了将在这些个人之间交换的消息序列。

Messages related to a previously canceled event ("SEQUENCE" property value is less than the "SEQUENCE" property value of the "CANCEL" message) MUST be ignored.

必须忽略与先前取消的事件相关的消息(“SEQUENCE”属性值小于“CANCEL”消息的“SEQUENCE”属性值)。

   +--------------------------------------------------------------------+
   | Action             |  "Organizer"        | "Attendee"              |
   +--------------------------------------------------------------------+
   | Initiate a meeting | "A" sends a REQUEST |                         |
   | request            | message to "B", "C",|                         |
   |                    | and "D"             |                         |
   +--------------------------------------------------------------------+
   | Decline the meeting|                     | "B" sends a "REPLY"     |
   | request            |                     | message to "A" with its |
   |                    |                     | "partstat" para-         |
   |                    |                     | set to "declined".      |
   +--------------------------------------------------------------------+
   | Cancel the meeting | "A" sends a CANCEL  |                         |
   |                    | message to "B", "C" |                         |
   |                    | and "D"             |                         |
   +--------------------------------------------------------------------+
        
   +--------------------------------------------------------------------+
   | Action             |  "Organizer"        | "Attendee"              |
   +--------------------------------------------------------------------+
   | Initiate a meeting | "A" sends a REQUEST |                         |
   | request            | message to "B", "C",|                         |
   |                    | and "D"             |                         |
   +--------------------------------------------------------------------+
   | Decline the meeting|                     | "B" sends a "REPLY"     |
   | request            |                     | message to "A" with its |
   |                    |                     | "partstat" para-         |
   |                    |                     | set to "declined".      |
   +--------------------------------------------------------------------+
   | Cancel the meeting | "A" sends a CANCEL  |                         |
   |                    | message to "B", "C" |                         |
   |                    | and "D"             |                         |
   +--------------------------------------------------------------------+
        

The example shows how "A" cancels the event.

该示例显示了“A”如何取消事件。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:CANCEL
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL;Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   COMMENT:Mr. B cannot attend. It's raining. Lets cancel.
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   STATUS:CANCELLED
   DTSTAMP:19970613T190000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:CANCEL
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL;Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   COMMENT:Mr. B cannot attend. It's raining. Lets cancel.
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:1
   STATUS:CANCELLED
   DTSTAMP:19970613T190000Z
   END:VEVENT
   END:VCALENDAR
        
4.2.10 Removing Attendees
4.2.10 删除与会者

"A" wants to remove "B" from a meeting. This is done by sending a "CANCEL" to "B" and removing "B" from the attendee list in the master copy of the event.

“A”希望从会议中删除“B”。通过向“B”发送“取消”并从活动主副本中的与会者列表中删除“B”,可以完成此操作。

   +--------------------------------------------------------------------+
   | Action             |  "Organizer"        | "Attendee"              |
   +--------------------------------------------------------------------+
   | Remove an "B"      | "A" sends a CANCEL  |                         |
   | as an "Attendee"   | message to "B"      |                         |
   +--------------------------------------------------------------------+
   | Update the master  | "A" sends the       |                         |
   | copy of the event  | updated event to    |                         |
   |                    | the remaining       |                         |
   |                    | "Attendees"         |                         |
   +--------------------------------------------------------------------+
        
   +--------------------------------------------------------------------+
   | Action             |  "Organizer"        | "Attendee"              |
   +--------------------------------------------------------------------+
   | Remove an "B"      | "A" sends a CANCEL  |                         |
   | as an "Attendee"   | message to "B"      |                         |
   +--------------------------------------------------------------------+
   | Update the master  | "A" sends the       |                         |
   | copy of the event  | updated event to    |                         |
   |                    | the remaining       |                         |
   |                    | "Attendees"         |                         |
   +--------------------------------------------------------------------+
        

The original meeting includes "A", "B", "C", and "D". The example below shows the "CANCEL" that "A" sends to "B". Note that in the example below the "STATUS" property is omitted. This is used when the meeting itself is cancelled and not when the intent is to remove an "Attendee" from the Event.

原始会议包括“A”、“B”、“C”和“D”。下面的示例显示了“A”发送给“B”的“取消”。请注意,在下面的示例中,省略了“STATUS”属性。这在会议本身被取消时使用,而不是在意图从活动中删除“与会者”时使用。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:CANCEL
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:mailto:B@example.com
   COMMENT:You're off the hook for this meeting
   UID:calsrv.example.com-873970198738777@example.com
   DTSTAMP:19970613T193000Z
   SEQUENCE:1
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:CANCEL
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:mailto:B@example.com
   COMMENT:You're off the hook for this meeting
   UID:calsrv.example.com-873970198738777@example.com
   DTSTAMP:19970613T193000Z
   SEQUENCE:1
   END:VEVENT
   END:VCALENDAR
        

The updated master copy of the event is shown below. The "Organizer" MAY resend the updated event to the remaining "Attendees". Note that "B" has been removed.

事件的更新主副本如下所示。“组织者”可将更新后的活动重新发送给剩余的“与会者”。请注意,“B”已被删除。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
        
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   ATTENDEE;TYPE=ROOM:CR_Big@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;
    RSVP=FALSE:Mailto:E@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T203000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:2
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   ATTENDEE;TYPE=ROOM:CR_Big@example.com
   ATTENDEE;ROLE=NON-PARTICIPANT;
    RSVP=FALSE:Mailto:E@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T203000Z
   SUMMARY:Phone Conference
   UID:calsrv.example.com-873970198738777@example.com
   SEQUENCE:2
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
4.2.11 Replacing the Organizer
4.2.11 替换组织者

The scenario for this example begins with "A" as the "Organizer" for a recurring meeting with "B", "C", and "D". "A" receives a new job offer in another country and drops out of touch. "A" left no forwarding address or way to be reached. Using out-of-band communication, the other "Attendees" eventually learn what has happened and reach an agreement that "B" should become the new "Organizer" for the meeting. To do this, "B" sends out a new version of the event and the other "Attendees" agree to accept "B" as the new "Organizer". "B" also removes "A" from the event.

本例的场景以“A”开始,作为“B”、“C”和“D”的定期会议的“组织者”。“A”在另一个国家收到一份新的工作邀请,失去联系。“A”没有留下转发地址或联系方式。通过带外沟通,其他“与会者”最终了解了所发生的情况,并达成协议,“B”应成为会议的新“组织者”。为此,“B”将发送活动的新版本,其他“与会者”同意接受“B”作为新的“组织者”。“B”也会从事件中删除“A”。

When the "Organizer" is replaced, the "SEQUENCE" property value MUST be incremented.

替换“组织者”时,“序列”属性值必须递增。

This is the message "B" sends to "C" and "D"

这是“B”发送给“C”和“D”的消息

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:B@example.com
   ATTENDEE;ROLE=CHAIR;STATUS=ACCEPTED:Mailto:B@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T203000Z
   RRULE:FREQ=WEEKLY
   SUMMARY:Phone Conference
   UID:123456@example.com
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:B@example.com
   ATTENDEE;ROLE=CHAIR;STATUS=ACCEPTED:Mailto:B@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:C@example.com
   ATTENDEE;TYPE=INDIVIDUAL:Mailto:D@example.com
   DTSTAMP:19970611T190000Z
   DTSTART:19970701T200000Z
   DTEND:19970701T203000Z
   RRULE:FREQ=WEEKLY
   SUMMARY:Phone Conference
   UID:123456@example.com
        

SEQUENCE:1 STATUS:CONFIRMED END:VEVENT END:VCALENDAR

序列:1状态:已确认结束:VEVENT结束:VCALENDAR

4.3 Busy Time Examples
4.3 繁忙时间示例

Busy time objects can be used in several ways. First, a CU may request busy time from another CU for a specific range of time. That request can be answered with a busy time Reply. Additionally, a CU may simply publish their busy time for a given interval and point other CUs to the published location. The following examples outline both scenarios.

繁忙时间对象可以通过多种方式使用。首先,一个CU可以向另一个CU请求特定时间范围内的忙时间。该请求可以通过忙时回复得到答复。此外,CU可以简单地发布给定间隔的繁忙时间,并将其他CU指向发布位置。以下示例概述了这两种情况。

Individual "A" publishes busy time for one week.

个人“A”发布一周的繁忙时间。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   METHOD:PUBLISH
   BEGIN:VFREEBUSY
   DTSTAMP:19980101T124100Z
   ORGANIZER:MAILTO:A@Example.com
   DTSTART:19980101T124200Z
   DTEND:19980107T124200Z
   FREEBUSY:19980101T180000Z/19980101T190000Z
   FREEBUSY:19980103T020000Z/19980103T050000Z
   FREEBUSY:19980107T020000Z/19980107T050000Z
   FREEBUSY:19980113T000000Z/19980113T010000Z
   FREEBUSY:19980115T190000Z/19980115T200000Z
   FREEBUSY:19980115T220000Z/19980115T230000Z
   FREEBUSY:19980116T013000Z/19980116T043000Z
   END:VFREEBUSY
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   METHOD:PUBLISH
   BEGIN:VFREEBUSY
   DTSTAMP:19980101T124100Z
   ORGANIZER:MAILTO:A@Example.com
   DTSTART:19980101T124200Z
   DTEND:19980107T124200Z
   FREEBUSY:19980101T180000Z/19980101T190000Z
   FREEBUSY:19980103T020000Z/19980103T050000Z
   FREEBUSY:19980107T020000Z/19980107T050000Z
   FREEBUSY:19980113T000000Z/19980113T010000Z
   FREEBUSY:19980115T190000Z/19980115T200000Z
   FREEBUSY:19980115T220000Z/19980115T230000Z
   FREEBUSY:19980116T013000Z/19980116T043000Z
   END:VFREEBUSY
   END:VCALENDAR
        

Individual "A" requests busy time from individuals "B", "C". Individual "B" and "C" replies with busy time data to individual "A". The following table illustrates the sequence of messages that would be exchanged between these individuals.

个人“A”向个人“B”、“C”请求繁忙时间。个人“B”和“C”用繁忙时间数据回复个人“A”。下表说明了将在这些个人之间交换的消息序列。

+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Initiate a busy    | "A" sends "REQUEST" |                         |
| time request       | message to "B" and  |                         |
|                    | and "C"             |                         |
+--------------------------------------------------------------------+
| Reply to the "BUSY"|                     | "B" sends a "REPLY"     |
| request with "BUSY"|                     | message to "A" with     |
| time data          |                     | busy time data          |
+--------------------------------------------------------------------+
        
+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Initiate a busy    | "A" sends "REQUEST" |                         |
| time request       | message to "B" and  |                         |
|                    | and "C"             |                         |
+--------------------------------------------------------------------+
| Reply to the "BUSY"|                     | "B" sends a "REPLY"     |
| request with "BUSY"|                     | message to "A" with     |
| time data          |                     | busy time data          |
+--------------------------------------------------------------------+
        
4.3.1 Request Busy Time
4.3.1 请求繁忙时间

"A" sends a "BUSY-REQUEST" to "B" and "C" for busy time

“A”向“B”和“C”发送繁忙时间的“繁忙请求”

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VFREEBUSY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   DTSTAMP:19970613T190000Z
   DTSTART:19970701T080000Z
   DTEND:19970701T200000
   UID:calsrv.example.com-873970198738777@example.com
   END:VFREEBUSY
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VFREEBUSY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   DTSTAMP:19970613T190000Z
   DTSTART:19970701T080000Z
   DTEND:19970701T200000
   UID:calsrv.example.com-873970198738777@example.com
   END:VFREEBUSY
   END:VCALENDAR
        
4.3.2 Reply To A Busy Time Request
4.3.2 答复繁忙时间请求

"B" sends a "REPLY" method type of a "VFREEBUSY" calendar component to "A"

“B”向“a”发送“VFREEBUSY”日历组件的“REPLY”方法类型

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VFREEBUSY
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE:Mailto:B@example.com
   DTSTART:19970701T080000Z
   DTEND:19970701T200000Z
   UID:calsrv.example.com-873970198738777@example.com
   FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VFREEBUSY
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE:Mailto:B@example.com
   DTSTART:19970701T080000Z
   DTEND:19970701T200000Z
   UID:calsrv.example.com-873970198738777@example.com
   FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M
        

DTSTAMP:19970613T190030Z END:VFREEBUSY END:VCALENDAR

DTSTAMP:19970613T190030Z结束:VFREEBUSY结束:VCALENDAR

"B" is busy from 09:00 to 10:00 and from 14:00 to 14:30.

“B”从09:00到10:00,从14:00到14:30都很忙。

4.4 Recurring Event and Time Zone Examples
4.4 重复事件和时区示例
4.4.1 A Recurring Event Spanning Time Zones
4.4.1 跨越时区的重复事件

This event describes a weekly phone conference. The "Attendees" are each in a different time zone.

此事件描述了每周的电话会议。“与会者”都在不同的时区。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTIMEZONE
   TZID:America-SanJose
   TZURL:http://zones.stds_r_us.net/tz/America-SanJose
   BEGIN:STANDARD
   DTSTART:19671029T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZOFFSETFROM:-0700
   TZOFFSETTO:-0800
   TZNAME:PST
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:19870405T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZOFFSETFROM:-0800
   TZOFFSETTO:-0700
   TZNAME:PDT
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:A@example.COM
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:B@example.fr
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:c@example.jp
   DTSTAMP:19970613T190030Z
   DTSTART;TZID=America-SanJose:19970701T140000
   DTEND;TZID=America-SanJose:19970701T150000
   RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
   RDATE;TZID=America-SanJose:19970910T140000
   EXDATE;TZID=America-SanJose:19970909T140000
   EXDATE;TZID=America-SanJose:19971028T140000
   SUMMARY:Weekly Phone Conference
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTIMEZONE
   TZID:America-SanJose
   TZURL:http://zones.stds_r_us.net/tz/America-SanJose
   BEGIN:STANDARD
   DTSTART:19671029T020000
   RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
   TZOFFSETFROM:-0700
   TZOFFSETTO:-0800
   TZNAME:PST
   END:STANDARD
   BEGIN:DAYLIGHT
   DTSTART:19870405T020000
   RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
   TZOFFSETFROM:-0800
   TZOFFSETTO:-0700
   TZNAME:PDT
   END:DAYLIGHT
   END:VTIMEZONE
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:A@example.COM
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:B@example.fr
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:c@example.jp
   DTSTAMP:19970613T190030Z
   DTSTART;TZID=America-SanJose:19970701T140000
   DTEND;TZID=America-SanJose:19970701T150000
   RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU
   RDATE;TZID=America-SanJose:19970910T140000
   EXDATE;TZID=America-SanJose:19970909T140000
   EXDATE;TZID=America-SanJose:19971028T140000
   SUMMARY:Weekly Phone Conference
        

UID:calsrv.example.com-873970198738777@example.com SEQUENCE:0 STATUS:CONFIRMED END:VEVENT END:VCALENDAR

UID:calsrv.example.com-873970198738777@example.com序列:0状态:已确认结束:VEVENT结束:VCALENDAR

The first two components of this iCalendar object are the time zone components. The "DTSTART" date coincides with the first instance of the RRULE property.

此iCalendar对象的前两个组件是时区组件。“DTSTART”日期与RRULE属性的第一个实例一致。

The recurring meeting is defined in a particular time zone, presumably that of the originator. The client for each "Attendee" has the responsibility of determining the recurrence time in the "Attendee's" time zone.

定期会议是在特定的时区定义的,可能是发起人的时区。每个“与会者”的客户机负责确定“与会者”时区中的重复时间。

The repeating event starts on Tuesday, July 1, 1997 at 2:00pm PDT. "Attendee" B@example.fr is in France where the local time on this date is 9 hours ahead of PDT or 23:00. "Attendee" C@example.jp is in Japan where local time is 8 hours ahead of UTC or Wednesday, July 2 at 06:00. The event repeats weekly on Tuesdays (in PST/PDT). The "RRULE" property results in 20 instances. The last instance falls on Tuesday, November 11, 1997 2:00pm PDT. The "RDATE" property adds another instance: WED, 10-SEP-1997 2:00 PM PST.

重复活动于1997年7月1日星期二下午2点开始。“与会者”B@example.fr在法国,该日期的当地时间比PDT提前9小时或23:00。“与会者”C@example.jp在日本,当地时间比UTC提前8小时或7月2日星期三06:00。该活动每周二重复一次(PST/PDT)。“RRULE”属性产生20个实例。最后一个实例发生在太平洋时间1997年11月11日星期二下午2:00。“RDATE”属性添加了另一个实例:WED,1997年9月10日太平洋标准时间下午2:00。

There are two exceptions to this recurring appointment. The first one is:

此定期约会有两个例外。第一个是:

TUE, 09-SEP-1997 23:00 GMT TUE, 09-SEP-1997 14:00 PDT WED, 10-SEP-1997 06:00 JST

1997年9月9日星期二23:00格林威治标准时间1997年9月9日星期二14:00太平洋标准时间1997年9月10日星期三日本标准时间06:00

and the second is:

第二个是:

TUE, 28-OCT-1997 23:00 GMT TUE, 28-OCT-1997 14:00 PST WED, 29-OCT-1997 06:00 JST

1997年10月28日星期二格林威治标准时间23:00太平洋标准时间1997年10月28日星期二14:00太平洋标准时间1997年10月29日星期三日本标准时间06:00

4.4.2 Modify A Recurring Instance
4.4.2 修改循环实例

In this example the "Organizer" issues a recurring meeting. Later the "Organizer" changes an instance of the event by changing the "DTSTART" property. Note the use of "RECURRENCE-ID" property and "SEQUENCE" property in the second request.

在本例中,“组织者”发布定期会议。稍后,“组织者”通过更改“DTSTART”属性更改事件实例。注意在第二个请求中使用了“RECURRENCE-ID”属性和“SEQUENCE”属性。

Original Request:

原始请求:

BEGIN:VCALENDAR METHOD:REQUEST

开始:VCALENDAR方法:请求

   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   SEQUENCE:0
   RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970601T210000Z
   DTEND:19970601T220000Z
   LOCATION:Conference Call
   DTSTAMP:19970526T083000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   SEQUENCE:0
   RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970601T210000Z
   DTEND:19970601T220000Z
   LOCATION:Conference Call
   DTSTAMP:19970526T083000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

The event request below is to change the time of a specific instance. This changes the July 1st instance to July 3rd.

下面的事件请求是更改特定实例的时间。这会将7月1日实例更改为7月3日。

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1com
   RECURRENCE-ID:19970701T210000Z
   SEQUENCE:1
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970703T210000Z
   DTEND:19970703T220000Z
   LOCATION:Conference Call
   DTSTAMP:19970626T093000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1com
   RECURRENCE-ID:19970701T210000Z
   SEQUENCE:1
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970703T210000Z
   DTEND:19970703T220000Z
   LOCATION:Conference Call
   DTSTAMP:19970626T093000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
4.4.3 Cancel an Instance
4.4.3 取消实例

In this example the "Organizer" of a recurring event deletes the August 1st instance.

在本例中,重复事件的“组织者”删除8月1日实例。

   BEGIN:VCALENDAR
   METHOD:CANCEL
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   RECURRENCE-ID:19970801T210000Z
   SEQUENCE:2
   STATUS:CANCELLED
   DTSTAMP:19970721T093000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:CANCEL
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   RECURRENCE-ID:19970801T210000Z
   SEQUENCE:2
   STATUS:CANCELLED
   DTSTAMP:19970721T093000Z
   END:VEVENT
   END:VCALENDAR
        
4.4.4 Cancel Recurring Event
4.4.4 取消重复事件

In this example the "Organizer" wishes to cancel the entire recurring event and any exceptions.

在此示例中,“组织者”希望取消整个重复事件和任何异常。

   BEGIN:VCALENDAR
   METHOD:CANCEL
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DTSTAMP:19970721T103000Z
   STATUS:CANCELLED
   SEQUENCE:3
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:CANCEL
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
   ATTENDEE:Mailto:D@example.com
   DTSTAMP:19970721T103000Z
   STATUS:CANCELLED
   SEQUENCE:3
   END:VEVENT
   END:VCALENDAR
        
4.4.5 Change All Future Instances
4.4.5 更改所有未来实例

This example changes the meeting location from a conference call to Seattle starting September 1 and extends to all future instances.

此示例从9月1日起将会议地点从电话会议更改为西雅图,并扩展到所有未来实例。

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   RECURRENCE-ID;THISANDFUTURE:19970901T210000Z
   SEQUENCE:3
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Discussion
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970901T210000Z
   DTEND:19970901T220000Z
   LOCATION:Building 32, Microsoft, Seattle, WA
   DTSTAMP:19970526T083000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   RECURRENCE-ID;THISANDFUTURE:19970901T210000Z
   SEQUENCE:3
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Discussion
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970901T210000Z
   DTEND:19970901T220000Z
   LOCATION:Building 32, Microsoft, Seattle, WA
   DTSTAMP:19970526T083000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
4.4.6 Add A New Instance To A Recurring Event
4.4.6 将新实例添加到定期事件

This example adds a one-time additional instance to the recurring event. "Organizer" adds a second July meeting on the 15th.

此示例将一次性附加实例添加到定期事件中。“组织者”在15日增加了第二次7月会议。

   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:4
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
        
   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:4
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
        

SUMMARY:IETF Calendaring Working Group Meeting DTSTART:19970715T210000Z DTEND:19970715T220000Z LOCATION:Conference Call DTSTAMP:19970629T093000Z STATUS:CONFIRMED END:VEVENT END:VCALENDAR

摘要:IETF日历工作组会议DTSTART:19970715T210000Z DTEND:19970715T220000Z位置:电话会议DTSTAMP:19970629T093000Z状态:已确认结束:VEVENT结束:VCALENDAR

4.4.7 Add A New Series of Instances To A Recurring Event
4.4.7 向定期事件添加一系列新实例

The scenario for this example involves an ongoing meeting, originally set up to occur every Tuesday. The "Organizer" later decides that the meetings need to be on Tuesdays and Thursdays, but does not want to reschedule the entire meeting or lose any of the per-instance information already collected.

本例的场景涉及一个正在进行的会议,最初设置为每周二举行一次。“组织者”随后决定会议需要在周二和周四举行,但不希望重新安排整个会议或丢失任何已收集的每个实例的信息。

The original event:

最初的事件:

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:0
   RRULE:WKST=SU;BYDAY=TU;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   LOCATION:The White Room
   DTSTAMP:19980301T093000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:0
   RRULE:WKST=SU;BYDAY=TU;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   LOCATION:The White Room
   DTSTAMP:19980301T093000Z
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

Assume that many other updates happen to this event and that a lot of instance-specific information exists in the recurring series. The "SEQUENCE" property value is 7 for the next update. Now the "Organizer" wants to add Thursdays to the event:

假设此事件发生了许多其他更新,并且重复序列中存在大量特定于实例的信息。对于下一次更新,“SEQUENCE”属性值为7。现在“组织者”希望将星期四添加到活动中:

   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
        
   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
        
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:7
   RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   DTSTAMP:19980303T193000Z
   LOCATION:The Usual conference room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:7
   RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   DTSTAMP:19980303T193000Z
   LOCATION:The Usual conference room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

Alternatively, if the "Organizer" is not concerned with per-instance updates, the entire event can be rescheduled using a "REQUEST". This is done by using the "UID" of the event to reschedule and including the modified "RRULE". Note, that since this is an entire rescheduling of the event, any instance-specific information will be lost.

或者,如果“组织者”不关心每个实例的更新,则可以使用“请求”重新安排整个事件。这是通过使用事件的“UID”来重新安排并包括修改的“RRULE”来完成的。请注意,由于这是对事件的整个重新安排,因此任何特定于实例的信息都将丢失。

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:7
   RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   DTSTAMP:19980303T193000Z
   LOCATION:The White Room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:7
   RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980303T210000Z
   DTEND:19980303T220000Z
   DTSTAMP:19980303T193000Z
   LOCATION:The White Room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

The next series of examples illustrate how an "Organizer" would respond to a "REFRESH" submitted by an "Attendee" after a series of instance-specific modifications. To convey all instance-specific changes, the "Organizer" must provide the latest event description and the relevant instances. The first three examples show the history including the initial "VEVENT" request and subsequent instance

接下来的一系列示例说明了“组织者”在经过一系列特定于实例的修改后如何响应“与会者”提交的“刷新”。为了传达所有特定于实例的更改,“组织者”必须提供最新的事件描述和相关实例。前三个示例显示了历史记录,包括初始“VEVENT”请求和后续实例

changes and finally the "REFRESH".

更改,最后是“刷新”。

Original Request:

原始请求:

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:0
   RDATE:19980304T180000Z
   RDATE:19980311T180000Z
   RDATE:19980318T180000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980304T180000Z
   DTEND:19980304T200000Z
   DTSTAMP:19980303T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:0
   RDATE:19980304T180000Z
   RDATE:19980311T180000Z
   RDATE:19980318T180000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980304T180000Z
   DTEND:19980304T200000Z
   DTSTAMP:19980303T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

Organizer changes 2nd instance Location and Time:

组织者更改第二个实例的位置和时间:

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:1
   RECURRENCE-ID:19980311T180000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980311T160000Z
   DTEND:19980311T180000Z
   DTSTAMP:19980306T193000Z
   LOCATION:The Small conference room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:1
   RECURRENCE-ID:19980311T180000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980311T160000Z
   DTEND:19980311T180000Z
   DTSTAMP:19980306T193000Z
   LOCATION:The Small conference room
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

Organizer adds a 4th instance of the meeting using the "ADD" method

组织者使用“添加”方法添加会议的第四个实例

   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:2
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980315T180000Z
   DTEND:19980315T200000Z
   DTSTAMP:19980307T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:ADD
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:2
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980315T180000Z
   DTEND:19980315T200000Z
   DTSTAMP:19980307T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

If "B" requests a "REFRESH", "A" responds with the following to capture all instance-specific data. In this case both the initial request and an additional "VEVENT" that specifies the instance-specific data are included. Because these are both of the same type (they are both "VEVENTS"), they can be conveyed in the same iCalendar object.

如果“B”请求“刷新”,则“a”将响应以下命令以捕获所有特定于实例的数据。在这种情况下,包括初始请求和指定实例特定数据的附加“VEVENT”。因为它们都是同一类型(它们都是“VEVENT”),所以它们可以在同一个iCalendar对象中传输。

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:2
   RDATE:19980304T180000Z
   RDATE:19980311T160000Z
   RDATE:19980315T180000Z
   Error! Bookmark not defined.
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980304T180000Z
   DTEND:19980304T200000Z
   DTSTAMP:19980303T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:123456789@host1.com
   SEQUENCE:2
   RDATE:19980304T180000Z
   RDATE:19980311T160000Z
   RDATE:19980315T180000Z
   Error! Bookmark not defined.
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   SUMMARY:Review Accounts
   DTSTART:19980304T180000Z
   DTEND:19980304T200000Z
   DTSTAMP:19980303T193000Z
   LOCATION:Conference Room A
   STATUS:CONFIRMED
        

END:VEVENT

完:维文特

   BEGIN:VEVENT
   Error! Bookmark not defined.
   SEQUENCE:2
   RECURRENCE-ID:19980311T160000Z
   Error! Bookmark not defined.
   ATTENDEE;ROLE=CHAIR;Error! Bookmark not defined.
   ATTENDEE;Error! Bookmark not defined.
   SUMMARY:Review Accounts
   DTSTART:19980311T160000Z
   DTEND:19980304T180000Z
   DTSTAMP:19980306T193000Z
   LOCATION:The Small conference room
   STATUS:CONFIRMED
   END:VEVENT
        
   BEGIN:VEVENT
   Error! Bookmark not defined.
   SEQUENCE:2
   RECURRENCE-ID:19980311T160000Z
   Error! Bookmark not defined.
   ATTENDEE;ROLE=CHAIR;Error! Bookmark not defined.
   ATTENDEE;Error! Bookmark not defined.
   SUMMARY:Review Accounts
   DTSTART:19980311T160000Z
   DTEND:19980304T180000Z
   DTSTAMP:19980306T193000Z
   LOCATION:The Small conference room
   STATUS:CONFIRMED
   END:VEVENT
        

END:VCALENDAR

完:VCALENDAR

4.4.8 Counter An Instance Of A Recurring Event
4.4.8 反循环事件的实例

In this example one of the "Attendees" counters the "DTSTART" property of the proposed second July meeting.

在本例中,一个“与会者”反对提议的7月第二次会议的“DTSTART”属性。

   BEGIN:VCALENDAR
   METHOD:COUNTER
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   RECURRENCE-ID:19970715T210000Z
   SEQUENCE:4
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970715T220000Z
   DTEND:19970715T230000Z
   LOCATION:Conference Call
   COMMENT:May we bump this by an hour? I have a conflict
   DTSTAMP:19970629T094000Z
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:COUNTER
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   RECURRENCE-ID:19970715T210000Z
   SEQUENCE:4
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970715T220000Z
   DTEND:19970715T230000Z
   LOCATION:Conference Call
   COMMENT:May we bump this by an hour? I have a conflict
   DTSTAMP:19970629T094000Z
   END:VEVENT
   END:VCALENDAR
        
4.4.9 Error Reply To A Request
4.4.9 答复请求时出错

The following example illustrates a scenario where a meeting is proposed containing an unsupported property and a bad property.

下面的示例演示了一个场景,其中提议的会议包含不受支持的属性和坏属性。

Original Request

原始请求

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   SEQUENCE:0
   RRULE:FREQ=MONTHLY;BYMONTHDAY=1
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970601T210000Z
   DTEND:19970601T220000Z
   DTSTAMP:19970602T094000Z
   LOCATION:Conference Call
   STATUS:CONFIRMED
   FOO:BAR
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:guid-1@host1.com
   SEQUENCE:0
   RRULE:FREQ=MONTHLY;BYMONTHDAY=1
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DESCRIPTION:IETF-C&S Conference Call
   CLASS:PUBLIC
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970601T210000Z
   DTEND:19970601T220000Z
   DTSTAMP:19970602T094000Z
   LOCATION:Conference Call
   STATUS:CONFIRMED
   FOO:BAR
   END:VEVENT
   END:VCALENDAR
        

Response from "B" to indicate that RRULE is not supported and an unrecognized property was encountered

来自“B”的响应,指示不支持RRULE,并且遇到无法识别的属性

   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
     event;RRULE
   REQUEST-STATUS:3.0;Invalid Property Name;FOO
   UID:guid-1@host1.com
   SEQUENCE:0
   DTSTAMP:19970603T094000Z
        
   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single
     event;RRULE
   REQUEST-STATUS:3.0;Invalid Property Name;FOO
   UID:guid-1@host1.com
   SEQUENCE:0
   DTSTAMP:19970603T094000Z
        

END:VEVENT END:VCALENDAR

结束:VEVENT结束:VCALENDAR

4.5 Group To-do Examples
4.5 分组做例子

Individual "A" creates a group task in which individuals "A", "B", "C" and "D" will participate. Individual "B" confirms acceptance of the task. Individual "C" declines the task. Individual "D" tentatively accepts the task. The following table illustrates the sequence of messages that would be exchanged between these individuals. Individual "A" then issues a "REQUEST" method to obtain the status of the to-do from each participant. The response indicates the individual "Attendee's" completion status. The table below illustrates the message flow.

个人“A”创建一个小组任务,其中个人“A”、“B”、“C”和“D”将参与其中。个人“B”确认接受任务。个人“C”拒绝该任务。个人“D”暂时接受任务。下表说明了将在这些个人之间交换的消息序列。然后,个人“A”发出“请求”方法,以从每个参与者处获取待办事项的状态。响应表示个人“与会者”的完成状态。下表说明了消息流。

+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Initiate a to-do   | "A" sends a REQUEST |                         |
| request            | message to "B", "C",|                         |
|                    | and "D"             |                         |
+--------------------------------------------------------------------+
| Accept the to-do   |                     | "B" sends a "REPLY"     |
| request            |                     | message to "A" with its |
|                    |                     | "partstat" paramater    |
|                    |                     | set to "accepted".      |
+--------------------------------------------------------------------+
| Decline the to-do  |                     | "C" sends a REPLY       |
| request            |                     | message to "A" with its |
|                    |                     | "partstat" parameter    |
|                    |                     | set to "declined".      |
+--------------------------------------------------------------------+
| Tentatively accept |                     | "D" sends a REPLY       |
| the to-do request  |                     | message to "A" with its |
|                    |                     | "partstat" parameter    |
|                    |                     | set to "tentative".     |
+--------------------------------------------------------------------+
| Check attendee     | "A" sends a REQUEST |                         |
| completion status  | message to "B" and  |                         |
|                    | "D" with current    |                         |
|                    | information.        |                         |
+--------------------------------------------------------------------+
| Attendee indicates |                     | "B" sends a "REPLY"     |
| percent complete   |                     | message indicating      |
|                    |                     | percent complete        |
        
+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Initiate a to-do   | "A" sends a REQUEST |                         |
| request            | message to "B", "C",|                         |
|                    | and "D"             |                         |
+--------------------------------------------------------------------+
| Accept the to-do   |                     | "B" sends a "REPLY"     |
| request            |                     | message to "A" with its |
|                    |                     | "partstat" paramater    |
|                    |                     | set to "accepted".      |
+--------------------------------------------------------------------+
| Decline the to-do  |                     | "C" sends a REPLY       |
| request            |                     | message to "A" with its |
|                    |                     | "partstat" parameter    |
|                    |                     | set to "declined".      |
+--------------------------------------------------------------------+
| Tentatively accept |                     | "D" sends a REPLY       |
| the to-do request  |                     | message to "A" with its |
|                    |                     | "partstat" parameter    |
|                    |                     | set to "tentative".     |
+--------------------------------------------------------------------+
| Check attendee     | "A" sends a REQUEST |                         |
| completion status  | message to "B" and  |                         |
|                    | "D" with current    |                         |
|                    | information.        |                         |
+--------------------------------------------------------------------+
| Attendee indicates |                     | "B" sends a "REPLY"     |
| percent complete   |                     | message indicating      |
|                    |                     | percent complete        |
        
+--------------------------------------------------------------------+
| Attendee indicates |                     | "D" sends a "REPLY"     |
| completion         |                     | message indicating      |
|                    |                     | completion              |
+--------------------------------------------------------------------+
        
+--------------------------------------------------------------------+
| Attendee indicates |                     | "D" sends a "REPLY"     |
| completion         |                     | message indicating      |
|                    |                     | completion              |
+--------------------------------------------------------------------+
        
4.5.1 A VTODO Request
4.5.1 VTODO请求

A sample "REQUEST" for a "VTODO" calendar component that "A" sends to "B", "C", and "D".

“A”向“B”、“C”和“D”发送的“VTODO”日历组件的“请求”示例。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DTSTART:19970701T170000Z
   DUE:19970722T170000Z
   PRIORITY:1
   SUMMARY:Create the requirements document
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:0
   DTSTAMP:19970717T200000Z
   STATUS:Needs Action
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE:Mailto:C@example.com
   ATTENDEE;RSVP=TRUE:Mailto:D@example.com
   DTSTART:19970701T170000Z
   DUE:19970722T170000Z
   PRIORITY:1
   SUMMARY:Create the requirements document
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:0
   DTSTAMP:19970717T200000Z
   STATUS:Needs Action
   END:VTODO
   END:VCALENDAR
        
4.5.2 A VTODO Reply
4.5.2 伏都教式的回答

"B" accepts the to-do.

“B”接受待办事项。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   COMMENT:I'll send you my input by e-mail
   SEQUENCE:0
   DTSTAMP:19970717T203000Z
   REQUEST-STATUS:2.0;Success
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   COMMENT:I'll send you my input by e-mail
   SEQUENCE:0
   DTSTAMP:19970717T203000Z
   REQUEST-STATUS:2.0;Success
        

END:VTODO END:VCALENDAR

结束:VTODO结束:VCALENDAR

"B" could have declined the TODO or indicated tentative acceptance by setting the "partstat" property parameter sequence to "declined" or "tentative", respectively.

“B”可以通过将“partstat”属性参数序列分别设置为“谢绝”或“暂定”来谢绝TODO或表示暂定接受。

4.5.3 A VTODO Request for Updated Status
4.5.3 更新状态的VTODO请求

"A" requests status from all "Attendees".

“A”向所有“与会者”请求状态。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   SUMMARY:Create the requirements document
   PRIORITY:1
   SEQUENCE:0
   STATUS:IN-PROCESS
   DTSTART:19970701T170000Z
   DTSTAMP:19970717T230000Z
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   SUMMARY:Create the requirements document
   PRIORITY:1
   SEQUENCE:0
   STATUS:IN-PROCESS
   DTSTART:19970701T170000Z
   DTSTAMP:19970717T230000Z
   END:VTODO
   END:VCALENDAR
        
4.5.4 A Reply: Percent-Complete
4.5.4 答复:完成百分比

A reply indicating the task being worked on and that "B" is 75% complete with "B's" part of the assignment.

一份回复,表明正在进行的任务,“B”完成75%,作业中“B”部分完成。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
   PERCENT-COMPLETE:75
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   SEQUENCE:0
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
   PERCENT-COMPLETE:75
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   SEQUENCE:0
   END:VTODO
   END:VCALENDAR
        
4.5.5 A Reply: Completed
4.5.5 答复:已完成

A reply indicating that "D" completed "D's" part of the assignment.

表明“D”完成了任务“D”部分的回复。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   SEQUENCE:0
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:MAILTO:A@example.com
   ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   SEQUENCE:0
   END:VTODO
   END:VCALENDAR
        
4.5.6 An Updated VTODO Request
4.5.6 更新的VTODO请求

Organizer "A" resends the "VTODO" calendar component. "A" sets the overall completion for the to-do at 40%.

组织者“A”重新发送“VTODO”日历组件。“A”将待办事项的总体完成率设定为40%。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;PARTSTAT=IN-PROCESS;TYPE=INDIVIDUAL:Mailto:D@example.com
   DTSTART:19970701T170000Z
   DUE:19970722T170000Z
   PRIORITY:1
   SUMMARY:Create the requirements document
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:1
   DTSTAMP:19970718T100000Z
   STATUS:IN-PROGRESS
   PERCENT-COMPLETE:40
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE;PARTSTAT=ACCEPTED;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;PARTSTAT=IN-PROCESS;TYPE=INDIVIDUAL:Mailto:D@example.com
   DTSTART:19970701T170000Z
   DUE:19970722T170000Z
   PRIORITY:1
   SUMMARY:Create the requirements document
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:1
   DTSTAMP:19970718T100000Z
   STATUS:IN-PROGRESS
   PERCENT-COMPLETE:40
   END:VTODO
   END:VCALENDAR
        
4.5.7 Recurring VTODOs
4.5.7 复发性VTODOs

The following examples relate to recurring "VTODO" calendar components.

以下示例与重复出现的“VTODO”日历组件有关。

4.5.7.1 Request for a Recurring VTODO
4.5.7.1 请求重复使用VTODO

In this example "A" sends a recurring "VTODO" calendar component to "B" and "D".

在本例中,“A”向“B”和“D”发送循环的“VTODO”日历组件。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
   RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
   DTSTART:19980101T100000-0700
   DUE:19980103T100000-0700
   SUMMARY:Send Status Reports to Area Managers
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:0
   DTSTAMP:19970717T200000Z
   STATUS:NEEDS ACTION
   PRIORITY:1
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REQUEST
   VERSION:2.0
   BEGIN:VTODO
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR:Mailto:A@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:B@example.com
   ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL:Mailto:D@example.com
   RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR
   DTSTART:19980101T100000-0700
   DUE:19980103T100000-0700
   SUMMARY:Send Status Reports to Area Managers
   UID:calsrv.example.com-873970198738777-00@example.com
   SEQUENCE:0
   DTSTAMP:19970717T200000Z
   STATUS:NEEDS ACTION
   PRIORITY:1
   END:VTODO
   END:VCALENDAR
        
4.5.7.2 Calculating due dates in recurring VTODOs
4.5.7.2 计算定期VTODOs中的到期日

The due date in a recurring "VTODO" calendar component is either a fixed interval specified in the "REQUEST" method or specified using the "RECURRENCE-ID" property. The former is calculated by applying the difference between "DTSTART" and "DUE" properties and applying it to each of the start of each recurring instance. Hence, if the initial "VTODO" calendar component specifies a "DTSTART" property value of "19970701T190000Z" and a "DUE" property value of "19970801T190000Z" the interval of one day which is applied to each recurring instance of the "VTODO" calendar component to determine the "DUE" date of the instance.

定期“VTODO”日历组件中的到期日是在“REQUEST”方法中指定的固定时间间隔,或者是使用“RECURRENCE-ID”属性指定的时间间隔。前者是通过应用“DTSTART”和“DUE”属性之间的差异并将其应用于每个循环实例的每个开始来计算的。因此,如果初始“VTODO”日历组件指定“DTSTART”属性值“19970701T190000Z”和“到期”属性值“19970801190000Z”,则应用于“VTODO”日历组件的每个定期实例的一天间隔,以确定实例的“到期”日期。

4.5.7.3 Replying to an instance of a recurring VTODO
4.5.7.3 回复重复出现的VTODO实例

In this example "B" updates "A" on a single instance of the "VTODO" calendar component.

在本例中,“B”在“VTODO”日历组件的单个实例上更新“A”。

   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
        
   BEGIN:VCALENDAR
   PRODID:-//ACME/DesktopCalendar//EN
   METHOD:REPLY
   VERSION:2.0
        
   BEGIN:VTODO
   ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
   PERCENT-COMPLETE:75
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   RECURRENCE-ID:19980101T170000Z
   SEQUENCE:1
   END:VTODO
   END:VCALENDAR
        
   BEGIN:VTODO
   ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com
   PERCENT-COMPLETE:75
   UID:calsrv.example.com-873970198738777-00@example.com
   DTSTAMP:19970717T233000Z
   RECURRENCE-ID:19980101T170000Z
   SEQUENCE:1
   END:VTODO
   END:VCALENDAR
        
4.6 Journal Examples
4.6 期刊实例

The iCalendar object below describes a single journal entry for October 2, 1997. The "RELATED-TO" property references the phone conference event for which minutes were taken.

下面的iCalendar对象描述了1997年10月2日的单个日记账分录。“RELATED-TO”属性引用记录会议记录的电话会议事件。

   BEGIN:VCALENDAR
   METHOD:PUBLISH
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   BEGIN:VJOURNAL
   DTSTART:19971002T200000Z
   ORGANIZER:MAILTO:A@Example.com
   SUMMARY:Phone conference minutes
   DESCRIPTION:The editors meeting was held on October 1, 1997.
     Details are in the attached document.
   UID:0981234-1234234-2410@example.com
   RELATED-TO:0981234-1234234-2402-35@example.com
   ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt
   END:VJOURNAL
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:PUBLISH
   PRODID:-//ACME/DesktopCalendar//EN
   VERSION:2.0
   BEGIN:VJOURNAL
   DTSTART:19971002T200000Z
   ORGANIZER:MAILTO:A@Example.com
   SUMMARY:Phone conference minutes
   DESCRIPTION:The editors meeting was held on October 1, 1997.
     Details are in the attached document.
   UID:0981234-1234234-2410@example.com
   RELATED-TO:0981234-1234234-2402-35@example.com
   ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt
   END:VJOURNAL
   END:VCALENDAR
        
4.7 Other Examples
4.7 其他例子
4.7.1 Event Refresh
4.7.1 事件刷新

Refresh the event with "UID" property value of "guid-1- 12345@host1.com":

刷新“UID”属性值为“guid-1-12345@host1.com":

   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REFRESH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
        
   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REFRESH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   ATTENDEE:Mailto:C@example.com
        
   ATTENDEE:Mailto:D@example.com
   UID: guid-1-12345@host1.com
   DTSTAMP:19970603T094000
   END:VEVENT
   END:VCALENDAR
        
   ATTENDEE:Mailto:D@example.com
   UID: guid-1-12345@host1.com
   DTSTAMP:19970603T094000
   END:VEVENT
   END:VCALENDAR
        
4.7.2 Bad RECURRENCE-ID
4.7.2 坏循环ID

Component instances are identified by the combination of "UID", "RECURRENCE-ID", and "SEQUENCE". When an "Organizer" sends a request to an "Attendee", there are three cases in which an instance cannot be found. They are:

组件实例由“UID”、“RECURRENCE-ID”和“SEQUENCE”组合标识。当“组织者”向“与会者”发送请求时,有三种情况下无法找到实例。他们是:

1. The component with the referenced "UID" and "RECURRENCE-ID" has been found but the "SEQUENCE" number in the calendar store does not match that of the ITIP message.

1. 已找到引用了“UID”和“RECURRENCE-ID”的组件,但日历存储中的“序列号”与ITIP消息的序列号不匹配。

2. The component with the referenced "UID" has been found, the "SEQUENCE" numbers match, but the "RECURRENCE-ID" cannot be found.

2. 已找到引用“UID”的组件,“序列”号匹配,但找不到“RECURRENCE-ID”。

3. The "UID" and "SEQUENCE" numbers are found but the CUA does not support recurrences.

3. 已找到“UID”和“SEQUENCE”编号,但CUA不支持重复出现。

In case (1), two things can happen. If the "SEQUENCE" number of the "Attendee's" instance is larger than that in the "Organizer's" message then the "Attendee" is receiving an out-of-sequence message and MUST ignore it. If the "SEQUENCE" number of the "Attendee's" instance is smaller, then the "Organizer" is sending out a newer version of the component and the "Attendee's" version needs to be updated. Since one or more updates have been missed, the "Attendee" SHOULD send a "REFRESH" message to the "Organizer" to get an updated version of the event.

在案例(1)中,可能发生两种情况。如果“Attendee”实例的“SEQUENCE”编号大于“Organizer”消息中的编号,则“Attendee”正在接收一条无序消息,必须忽略它。如果“与会者”实例的“序列”号较小,则“组织者”正在发送组件的较新版本,需要更新“与会者”版本。由于错过了一个或多个更新,“与会者”应向“组织者”发送“刷新”消息,以获取活动的更新版本。

In case (2), something has gone wrong. Both the "Organizer" and the "Attendee" should have the same instances, but the "Attendee" does not have the referenced instance. In this case the "Attendee" SHOULD send a "REFRESH" to the "Organizer" to get an updated version of the event.

在案例(2)中,出现了一些问题。“组织者”和“与会者”应具有相同的实例,但“与会者”没有引用的实例。在这种情况下,“与会者”应向“组织者”发送“刷新”,以获取活动的更新版本。

In case (3), the limitations of the "Attendee's" CUA makes it impossible to match an instance other than the single instance scheduled. In this case, the "Attendee" need not send a "REFRESH" to the "Organizer".

在案例(3)中,“与会者”CUA的局限性使其无法匹配计划的单个实例以外的实例。在这种情况下,“与会者”无需向“组织者”发送“刷新”。

The example below shows a sequence in which an "Attendee" sends a "REFRESH" to the "Organizer".

下面的示例显示了“与会者”向“组织者”发送“刷新”的顺序。

+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Update an instance | "A" sends  "REQUEST"|                         |
| request            | message to "B"      |                         |
+--------------------------------------------------------------------+
| Attendee requests  |                     | "B" sends a "REFRESH"   |
| refresh because    |                     | message to "A"          |
| "RECURRENCE-ID" was|                     |                         |
| not found          |                     |                         |
+--------------------------------------------------------------------+
| Refresh the entire | "A" sends the       |                         |
| Event              | latest copy of the  |                         |
|                    | Event to "B"        |                         |
+--------------------------------------------------------------------+
| Attendee handles   |                     | "B" updates to the      |
| the request and    |                     | latest copy of the      |
| updates the        |                     | meeting.                |
| instance           |                     |                         |
+--------------------------------------------------------------------+
        
+--------------------------------------------------------------------+
| Action             |  "Organizer"        | Attendee                |
+--------------------------------------------------------------------+
| Update an instance | "A" sends  "REQUEST"|                         |
| request            | message to "B"      |                         |
+--------------------------------------------------------------------+
| Attendee requests  |                     | "B" sends a "REFRESH"   |
| refresh because    |                     | message to "A"          |
| "RECURRENCE-ID" was|                     |                         |
| not found          |                     |                         |
+--------------------------------------------------------------------+
| Refresh the entire | "A" sends the       |                         |
| Event              | latest copy of the  |                         |
|                    | Event to "B"        |                         |
+--------------------------------------------------------------------+
| Attendee handles   |                     | "B" updates to the      |
| the request and    |                     | latest copy of the      |
| updates the        |                     | meeting.                |
| instance           |                     |                         |
+--------------------------------------------------------------------+
        

Request from "A":

“A”的请求:

   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:acme-12345@host1.com
   SEQUENCE:3
   RRULE:FREQ=WEEKLY
   RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   DESCRIPTION:IETF-C&S Conference Call
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970801T210000Z
   DTEND:19970801T220000Z
   RECURRENCE-ID:19970809T210000Z
   DTSTAMP:19970726T083000
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   METHOD:REQUEST
   PRODID:-//RDU Software//NONSGML HandCal//EN
   VERSION:2.0
   BEGIN:VEVENT
   UID:acme-12345@host1.com
   SEQUENCE:3
   RRULE:FREQ=WEEKLY
   RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z
   ORGANIZER:Mailto:A@example.com
   ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   DESCRIPTION:IETF-C&S Conference Call
   SUMMARY:IETF Calendaring Working Group Meeting
   DTSTART:19970801T210000Z
   DTEND:19970801T220000Z
   RECURRENCE-ID:19970809T210000Z
   DTSTAMP:19970726T083000
   STATUS:CONFIRMED
   END:VEVENT
   END:VCALENDAR
        

"B" has the event with "UID" property "acme-12345@host1.com" but "B's" "SEQUENCE" property value is "1" and the event does not have an instance at the specified recurrence time. This means that "B" has

“B”具有“UID”属性“acme”的事件-12345@host1.com但是“B”的“SEQUENCE”属性值为“1”,并且该事件在指定的重复时间没有实例。这意味着“B”已经

missed at least one update and needs a new copy of the event. "B" requests the latest copy of the event with the following refresh message:

至少错过了一次更新,需要事件的新副本。“B”使用以下刷新消息请求事件的最新副本:

   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REFRESH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   UID:acme-12345@host1.com
   DTSTAMP:19970603T094000
   END:VEVENT
   END:VCALENDAR
        
   BEGIN:VCALENDAR
   PRODID:-//RDU Software//NONSGML HandCal//EN
   METHOD:REFRESH
   VERSION:2.0
   BEGIN:VEVENT
   ORGANIZER:Mailto:A@example.com
   ATTENDEE:Mailto:B@example.com
   UID:acme-12345@host1.com
   DTSTAMP:19970603T094000
   END:VEVENT
   END:VCALENDAR
        

5 Application Protocol Fallbacks

5应用程序协议回退

5.1 Partial Implementation
5.1 部分实施

Applications that support this memo are not required to support the entire protocol. The following describes how methods and properties SHOULD "fallback" in applications that do not support the complete protocol. If a method or property is not addressed in this section, it may be ignored.

支持此备忘录的应用程序不需要支持整个协议。下面描述了在不支持完整协议的应用程序中,方法和属性如何“回退”。如果本节中未介绍某个方法或属性,则可以忽略该方法或属性。

5.1.1 Event-Related Fallbacks
5.1.1 事件相关回退
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Required
REQUEST          PUBLISH
REPLY            Required
ADD              Required
CANCEL           Required
REFRESH          Required
COUNTER          Reply with Not Supported
DECLINECOUNTER   Required if EVENT-COUNTER is implemented; otherwise
                 reply with Not Supported
        
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Required
REQUEST          PUBLISH
REPLY            Required
ADD              Required
CANCEL           Required
REFRESH          Required
COUNTER          Reply with Not Supported
DECLINECOUNTER   Required if EVENT-COUNTER is implemented; otherwise
                 reply with Not Supported
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN
PRODID           Ignore
METHOD           Required as described in the Method list above
VERSION          Ignore
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN
PRODID           Ignore
METHOD           Required as described in the Method list above
VERSION          Ignore
        
Event-Related
Components       Fallback
--------------   -----------------------------------------------------
VALARM           Reply with Not Supported
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
Event-Related
Components       Fallback
--------------   -----------------------------------------------------
VALARM           Reply with Not Supported
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if EVENT-REQUEST is not implemented;
                 otherwise reply with Not Supported
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
COMPLETED        Ignore
nCONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DURATION         Reply with Not Supported
DTSTAMP          Required
DTSTART          Required
DTEND            Required
EXDATE           Ignore
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
GEO              Ignore
LAST-MODIFIED    Ignore
LOCATION         Required
ORGANIZER        Ignore
PRIORITY         Ignore
RELATED-TO       Ignore
RDATE            Ignore
RRULE            Ignore. The first instance occurs on the DTStart
                 property. If implemented, VTIMEZONE MUST also be
                 implemented.
RECURRENCE-ID    Required if RRULE is implemented; otherwise Ignore
REQUEST-STATUS   Required
RESOURCES        Ignore
SEQUENCE         Required
STATUS           Ignore
SUMMARY          Ignore
TRANSP           Required if FREEBUSY is implemented; otherwise Ignore
URL              Ignore
UID              Required
X-               Ignore
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if EVENT-REQUEST is not implemented;
                 otherwise reply with Not Supported
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
COMPLETED        Ignore
nCONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DURATION         Reply with Not Supported
DTSTAMP          Required
DTSTART          Required
DTEND            Required
EXDATE           Ignore
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
GEO              Ignore
LAST-MODIFIED    Ignore
LOCATION         Required
ORGANIZER        Ignore
PRIORITY         Ignore
RELATED-TO       Ignore
RDATE            Ignore
RRULE            Ignore. The first instance occurs on the DTStart
                 property. If implemented, VTIMEZONE MUST also be
                 implemented.
RECURRENCE-ID    Required if RRULE is implemented; otherwise Ignore
REQUEST-STATUS   Required
RESOURCES        Ignore
SEQUENCE         Required
STATUS           Ignore
SUMMARY          Ignore
TRANSP           Required if FREEBUSY is implemented; otherwise Ignore
URL              Ignore
UID              Required
X-               Ignore
        
5.1.2 Free/Busy-Related Fallbacks
5.1.2 忙/闲相关回退
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
REQUEST          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
REPLY            Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
        
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
REQUEST          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
REPLY            Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
Component
Property         Fallback
--------------   -----------------------------------------------------
COMMENT          Ignore
CONTACT          Ignore
DTEND            Required
DTSTAMP          Required
DTSTART          Required
DURATION         Required
FREEBUSY         Required
ORGANIZER        Ignore
REQUEST-STATUS   Ignore
UID              Required
URL              Ignore
X-               Ignore
        
Component
Property         Fallback
--------------   -----------------------------------------------------
COMMENT          Ignore
CONTACT          Ignore
DTEND            Required
DTSTAMP          Required
DTSTART          Required
DURATION         Required
FREEBUSY         Required
ORGANIZER        Ignore
REQUEST-STATUS   Ignore
UID              Required
URL              Ignore
X-               Ignore
        
5.1.3 To-Do-Related Fallbacks
5.1.3 做相关的回退
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Required
REQUEST          PUBLISH
REPLY            Required
ADD              Required
        
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Required
REQUEST          PUBLISH
REPLY            Required
ADD              Required
        

CANCEL Required REFRESH Required COUNTER Reply with Not Supported DECLINECOUNTER Required if VTODO - COUNTER is implemented; otherwise reply with Not Supported

如果实施VTODO-计数器,则取消所需刷新所需计数器回复,但不支持DECLINECOUNTER Required;否则以不支持的方式答复

iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
To-Do-Related
Components       Fallback
--------------   -----------------------------------------------------
VALARM           Reply with Not Supported
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
To-Do-Related
Components       Fallback
--------------   -----------------------------------------------------
VALARM           Reply with Not Supported
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if REQUEST is not implemented; otherwise
                 ignore
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
COMPLETED        Required
CONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DUE              Required
DURATION         Ignore Reply with Not Supported
DTSTAMP          Required
DTSTART          Required
EXDATE           Ignore Reply with Not Supported
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
LAST-MODIFIED    Ignore
LOCATION         Ignore
ORGANIZER        Ignore
PERCENT-COMPLETE Ignore
PRIORITY         Required
RECURRENCE-ID    Ignore
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if REQUEST is not implemented; otherwise
                 ignore
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
COMPLETED        Required
CONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DUE              Required
DURATION         Ignore Reply with Not Supported
DTSTAMP          Required
DTSTART          Required
EXDATE           Ignore Reply with Not Supported
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
LAST-MODIFIED    Ignore
LOCATION         Ignore
ORGANIZER        Ignore
PERCENT-COMPLETE Ignore
PRIORITY         Required
RECURRENCE-ID    Ignore
        

RELATED-TO Ignore REQUEST-STATUS Ignore RDATE Ignore RRULE Ignore. The first instance occurs on the DTSTART property. If implemented, VTIMEZONE MUST also be implemented. RESOURCES Ignore SEQUENCE Required STATUS Required SUMMARY Ignore URL Ignore UID Required X- Ignore

相关-忽略请求-状态忽略RDATE忽略RRULE忽略。第一个实例发生在DTSTART属性上。如果实现,还必须实现VTIMEZONE。资源忽略序列必需状态必需摘要忽略URL忽略UID必需X-忽略

5.1.4 Journal-Related Fallbacks
5.1.4 与日志相关的回退
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
ADD              Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
CANCEL           Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
        
Method           Fallback
--------------   -----------------------------------------------------
PUBLISH          Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
ADD              Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
CANCEL           Implementations MAY ignore the METHOD type. The
                 REQUEST-STATUS "3.14;Unsupported capability" MUST be
                 returned.
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
iCalendar
Property         Fallback
--------------   -----------------------------------------------------
CALSCALE         Ignore; assume GREGORIAN.
PRODID           Ignore
METHOD           Required as described in the Method list above.
VERSION          Ignore
        
Journal-Related
Components       Fallback
--------------   -----------------------------------------------------
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
Journal-Related
Components       Fallback
--------------   -----------------------------------------------------
VTIMEZONE        Required if any DateTime value refers to a time zone.
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if JOURNAL-REQUEST is implemented; otherwise
                 ignore
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
CONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DTSTAMP          Required
DTSTART          Required
EXDATE           Ignore
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
LAST-MODIFIED    Ignore
ORGANIZER        Ignore
RECURRENCE-ID    Ignore
RELATED-TO       Ignore
RDATE            Ignore.
RRULE            Ignore. The first instance occurs on the DTSTART
                 property. If implemented, VTIMEZONE MUST also be
                 implemented.
SEQUENCE         Required
STATUS           Ignore
SUMMARY          Required
URL              Ignore
UID              Required
X-               Ignore
        
Component
Property         Fallback
--------------   -----------------------------------------------------
ATTACH           Ignore
ATTENDEE         Required if JOURNAL-REQUEST is implemented; otherwise
                 ignore
CATEGORIES       Ignore
CLASS            Ignore
COMMENT          Ignore
CONTACT          Ignore
CREATED          Ignore
DESCRIPTION      Required
DTSTAMP          Required
DTSTART          Required
EXDATE           Ignore
EXRULE           Ignore Reply with Not Supported. If implemented,
                 VTIMEZONE MUST also be implemented.
LAST-MODIFIED    Ignore
ORGANIZER        Ignore
RECURRENCE-ID    Ignore
RELATED-TO       Ignore
RDATE            Ignore.
RRULE            Ignore. The first instance occurs on the DTSTART
                 property. If implemented, VTIMEZONE MUST also be
                 implemented.
SEQUENCE         Required
STATUS           Ignore
SUMMARY          Required
URL              Ignore
UID              Required
X-               Ignore
        
5.2 Latency Issues
5.2 延迟问题

With a store-and-forward transport, it is possible for events to arrive out of sequence. That is, a "CANCEL" method may be received prior to receiving the associated "REQUEST" for the calendar component. This section discusses a few of these scenarios.

使用存储转发传输,事件可能会无序到达。也就是说,可以在接收日历组件的相关“请求”之前接收“取消”方法。本节讨论其中一些场景。

5.2.1 Cancellation of an Unknown Calendar Component.

5.2.1 取消未知日历组件。

When a "CANCEL" method is received before the original "REQUEST" method the calendar will be unable to correlate the "UID" property of the cancellation with an existing calendar component. It is suggested that messages that can not be correlated that also contain non-zero sequence numbers be held and not discarded. Implementations MAY age them out if no other messages arrive with the same "UID" property value and a lower sequence number.

当在原始“请求”方法之前收到“取消”方法时,日历将无法将取消的“UID”属性与现有日历组件关联。建议保留不可关联且包含非零序编号的消息,而不要丢弃这些消息。如果没有其他具有相同“UID”属性值和较低序列号的消息到达,则实现可能会使它们过时。

5.2.2 Unexpected Reply from an Unknown Delegate
5.2.2 来自未知代理的意外答复

When an "Attendee" delegates an item to another CU they MUST send a "REPLY" method to the "Organizer" using the "ATTENDEE" properties to indicate that the request was delegated and to whom. Hence, it is possible for an "Organizer" to receive an "REPLY" from a CU not listed as one of the original "Attendees". The resolution is left to the implementation but it is expected that the calendaring software will either accept the reply or hold it until the related "REPLY" method is received from the "Delegator". If the version of the "REPLY" method is out of date the "Organizer" SHOULD treat the message as a "REFRESH" message and update the delegate with the correct version.

当“与会者”将一个项目委托给另一个CU时,他们必须使用“与会者”属性向“组织者”发送“回复”方法,以指示请求已被委托以及委托给谁。因此,“组织者”可能会收到未列为原始“与会者”之一的CU的“回复”。解决方案留给实现,但预计日历软件将接受答复或保留答复,直到从“委托人”处收到相关的“答复”方法。如果“回复”方法的版本已过期,“组织者”应将该消息视为“刷新”消息,并使用正确的版本更新代表。

5.3 Sequence Number
5.3 序列号

Under some conditions, a CUA may receive requests and replies with the same "SEQUENCE" property value. The "DTSTAMP" property is utilized as a tie-breaker when two items with the same "SEQUENCE" property value are evaluated.

在某些情况下,CUA可能接收具有相同“序列”属性值的请求和响应。当评估具有相同“序列”属性值的两个项目时,“DTSTAMP”属性用作联系断路器。

6 Security Considerations

6安全考虑

ITIP is an abstract transport protocol which will be bound to a real-time transport, a store-and-forward transport, and perhaps other transports. The transport protocol will be responsible for providing facilities for authentication and encryption using standard Internet mechanisms that are mutually understood between the sender and receiver.

ITIP是一个抽象的传输协议,它将绑定到实时传输、存储转发传输以及其他传输。传输协议将负责使用发送方和接收方相互理解的标准互联网机制提供认证和加密设施。

6.1 Security Threats
6.1 安全威胁
6.1.1 Spoofing the "Organizer"
6.1.1 欺骗“组织者”

In iTIP, the "Organizer" (or someone working on the "Organizer's" behalf) is the only person authorized to make changes to an existing "VEVENT", "VTODO", "VJOURNAL" calendar component and republish it or redistribute updates to the "Attendees". An iCalendar object that maliciously changes or cancels an existing "VEVENT", "VTODO" or "VJOURNAL" calendar component may be constructed by someone other than the "Organizer" and republished or sent to the "Attendees".

在iTIP中,“组织者”(或代表“组织者”工作的人员)是唯一有权更改现有“VEVENT”、“VTODO”、“VJORY”日历组件并重新发布或向“与会者”重新分发更新的人员。恶意更改或取消现有“VEVENT”、“VTODO”或“VJOURNAL”日历组件的iCalendar对象可能由“组织者”以外的人构建,并重新发布或发送给“与会者”。

6.1.2 Spoofing the "Attendee"
6.1.2 欺骗“与会者”

In iTIP, an "Attendee" of a "VEVENT" or "VTODO" calendar component (or someone working on the "Attendee's" behalf) is the only person authorized to update any parameter associated with their "ATTENDEE" property and send it to the "Organizer". An iCalendar object that

在iTIP中,“VEVENT”或“VTODO”日历组件的“Attendee”(或代表“Attendee”工作的人员)是唯一有权更新与其“Attendee”属性关联的任何参数并将其发送给“Organizer”的人员。伊卡伦达物体

maliciously changes the "ATTENDEE" parameters may be constructed by someone other than the real "Attendee" and sent to the "Organizer".

恶意更改“与会者”参数可能由真正的“与会者”以外的人构建并发送给“组织者”。

6.1.3 Unauthorized Replacement of the Organizer
6.1.3 未经授权更换主办方

There will be circumstances when "Attendees" of an event or to-do decide, using out-of-band mechanisms, that the "Organizer" must be replaced. When the new "Organizer" sends out the updated "VEVENT" or "VTODO" the "Attendee's" CUA will detect that the "Organizer" has been changed, but it has no way of knowing whether or not the change was mutually agreed upon.

在某些情况下,活动或待办事项的“与会者”使用带外机制决定必须更换“组织者”。当新的“组织者”发送更新的“VEVENT”或“VTODO”时,“与会者”CUA将检测到“组织者”已被更改,但无法知道更改是否得到双方同意。

6.1.4 Eavesdropping
6.1.4 窃听

The iCalendar object is constructed with human-readable clear text. Any information contained in an iCalendar object may be read and/or changed by unauthorized persons while the object is in transit.

iCalendar对象是用人类可读的明文构建的。iCalendar对象中包含的任何信息都可能在对象传输过程中被未经授权的人员读取和/或更改。

6.1.5 Flooding a Calendar
6.1.5 淹没日历

Implementations MAY provide a means to automatically incorporate "REQUEST" methods into a calendar. This presents the opportunity for a calendar to be flooded with requests, which effectively block all the calendar's free time.

实现可以提供一种将“请求”方法自动合并到日历中的方法。这为日历提供了大量请求的机会,从而有效地阻止了日历的所有空闲时间。

6.1.6 Procedural Alarms
6.1.6 程序警报

The "REQUEST" methods for "VEVENT" and "VTODO" calendar components MAY contain "VALARM" calendar components. The "VALARM" calendar component may be of type "PROCEDURE" and MAY have an attachment containing an executable program. Implementations that incorporate these types of alarms are subject to any virus or malicious attack that may occur as a result of executing the attachment.

“VEVENT”和“VTODO”日历组件的“请求”方法可能包含“VALARM”日历组件。“VALARM”日历组件可以是“PROCEDURE”类型,并且可以具有包含可执行程序的附件。包含这些类型警报的实现会受到任何病毒或恶意攻击的影响,这些攻击可能是执行附件的结果。

6.1.7 Unauthorized REFRESH Requests
6.1.7 未经授权的刷新请求

It is possible for an "Organizer" to receive a "REFRESH" request from someone who is not an "Attendee" of an event or to-do. Only "Attendee's" of an event or to-do are authorized to receive replies to "REFRESH" requests. Replying to such requests to anyone who is not an "Attendee" may be a security problem.

“组织者”可能会收到来自非活动或待办事项“参与者”的“刷新”请求。只有活动或待办事项的“与会者”才有权接收对“刷新”请求的答复。向非“与会者”的任何人回复此类请求可能会带来安全问题。

6.2 Recommendations
6.2 建议

For an application where the information is sensitive or critical and the network is subject is subject to a high probability of attack, iTIP transactions SHOULD be encrypted. This may be accomplished using public key technology, specifically Security Multiparts for MIME

对于信息敏感或关键且网络易受攻击的应用程序,应加密iTIP事务。这可以使用公钥技术实现,特别是MIME的安全多部分

[RFC-1847] in the iTIP transport binding. This helps mitigate the threats of spoofing, eavesdropping and malicious changes in transit.

iTIP传输绑定中的[RFC-1847]。这有助于减轻欺骗、窃听和传输过程中恶意更改的威胁。

6.2.1 Use of [RFC-1847] to secure iTIP transactions
6.2.1 使用[RFC-1847]保护iTIP交易

iTIP transport bindings MUST provide a mechanism based on Security Multiparts for MIME [RFC-1847] to enable authentication of the sender's identity, and privacy and integrity of the data being transmitted. This allows the receiver of a signed iCalendar object to verify the identity of the sender. This sender may then be correlated to an "ATTENDEE" property in the iCalendar object. If the correlation is made and the sender is authorized to make the requested change or update then the operation may proceed. It also allows the message to be encrypted to prevent unauthorized reading of the message contents in transit. iTIP transport binding documents describe this process in detail.

iTIP传输绑定必须为MIME[RFC-1847]提供一种基于安全多部分的机制,以实现发送者身份的认证,以及所传输数据的隐私性和完整性。这允许签名iCalendar对象的接收方验证发送方的身份。然后,此发件人可能与iCalendar对象中的“ATTENDEE”属性关联。如果进行了关联,并且发送方被授权进行请求的更改或更新,则操作可以继续。它还允许对消息进行加密,以防止在传输过程中未经授权读取消息内容。iTIP传输绑定文档详细描述了此过程。

Implementations MAY provide controls for users to disable this capability.

实现可以为用户提供禁用此功能的控件。

6.2.2 Implementation Controls
6.2.2 实施控制

The threat of unauthorized replacement of the "Organizer" SHOULD be mitigated by a calendar system that uses this protocol by providing controls or alerts that make "Calendar Users" aware of such "Organizer" changes and allowing them to decide whether or not the request should be honored.

应通过使用此协议的日历系统减轻未经授权更换“组织者”的威胁,该系统提供控制或警报,使“日历用户”了解此类“组织者”更改,并允许他们决定是否应满足请求。

The threat of flooding a calendar SHOULD be mitigated by a calendar system that uses this protocol by providing controls that may be used to limit the acceptable sources for iTIP transactions, and perhaps the size of messages and volume of traffic, by source.

使用此协议的日历系统应通过提供可用于限制iTIP事务的可接受源的控制,以及可能的消息大小和通信量(按源)来减轻淹没日历的威胁。

The threat of malicious procedural alarms SHOULD be mitigated by a calendar system that uses this protocol by providing controls that may be used to disallow procedural alarms in iTIP transactions and/or remove all alarms from the object before delivery to the recipient.

应通过使用此协议的日历系统减轻恶意程序警报的威胁,该日历系统提供的控制可用于禁止iTIP事务中的程序警报和/或在交付给收件人之前从对象中删除所有警报。

The threat of unauthorized "REFRESH" requests SHOULD be mitigated by a calendar system that uses this protocol by providing controls or alerts that allow "Calendar User" to decide whether or not the request should be honored. An implementation MAY decide to maintain, for audit or historical purposes, "Calendar Users" who were part of an attendee list and who were subsequently uninvited. Similar controls or alerts should be provided when a "REFRESH" request is received from these "Calendar Users" as well.

未经授权的“刷新”请求的威胁应通过使用此协议的日历系统来减轻,该系统提供控制或警报,允许“日历用户”决定是否应执行该请求。出于审核或历史目的,实施可能会决定维护作为与会者列表一部分且随后未被邀请的“日历用户”。当收到来自这些“日历用户”的“刷新”请求时,也应提供类似的控制或警报。

7 Acknowledgments

7致谢

A hearty thanks to the following individuals who have participated in the drafting, review and discussion of this memo:

衷心感谢以下参与本备忘录起草、审查和讨论的个人:

Anik Ganguly, Dan Hickman, Paul Hill, Daryl Huff, Bruce Kahn, Antoine Leca, Bob Mahoney, John Noerenberg, Leo Parker, John Rose, Doug Royer, Vinod Seraphin, Richard Shusterman, Derik Stenerson, John Sun, Alexander Taler, Kevin Tsurutome.

安尼克·甘古利、丹·希克曼、保罗·希尔、达里尔·哈夫、布鲁斯·卡恩、安托万·莱卡、鲍勃·马奥尼、约翰·诺伦伯格、利奥·帕克、约翰·罗斯、道格·罗耶、维诺德·瑟拉芬、理查德·舒斯特曼、德里克·斯坦森、约翰·孙、亚历山大·塔勒、凯文·楚鲁托姆。

8 Bibliography

8参考书目

[iCAL] Dawson, F. and D. Stenerson, "Internet Calendaring and Scheduling Core Object Specification - iCalendar", RFC 2445, November 1998.

[iCAL]Dawson,F.和D.Stenerson,“互联网日历和调度核心对象规范-iCalendar”,RFC 24451998年11月。

[iMIP] Dawson, F., Mansour, S. and S. Silverberg, "iCalendar Message-Based Interoperability Protocol - iMIP", RFC 2447, November 1998.

[iMIP]Dawson,F.,Mansour,S.和S.Silverberg,“基于iCalendar消息的互操作性协议-iMIP”,RFC 2447,1998年11月。

[RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC-2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[US-ASCII] Coded Character Set--7-bit American Standard Code for Information Interchange, ANSI X3.4-1986.

[US-ASCII]编码字符集——信息交换用7位美国标准代码,ANSI X3.4-1986。

9 Authors' Addresses

9作者地址

The following address information is provided in a vCard v3.0, Electronic Business Card, format.

以下地址信息以vCard v3.0电子名片格式提供。

The authors of this memo are:

本备忘录的作者是:

   BEGIN:VCARD
   VERSION:3.0
   N:Dawson;Frank
   FN:Frank Dawson
   ORG:Lotus Development Corporation
   ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive;Raleigh;NC;27613-
    3502;USA
   TEL;TYPE=WORK,MSG:+1-919-676-9515
   TEL;TYPE=WORK,FAX:+1-919-676-9564
   EMAIL;TYPE=PREF,INTERNET:Frank_Dawson@Lotus.com
   EMAIL;TYPE=INTERNET:fdawson@earthlink.net
   URL:http://home.earthlink.net/~fdawson
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Dawson;Frank
   FN:Frank Dawson
   ORG:Lotus Development Corporation
   ADR;WORK;POSTAL;PARCEL:;;6544 Battleford Drive;Raleigh;NC;27613-
    3502;USA
   TEL;TYPE=WORK,MSG:+1-919-676-9515
   TEL;TYPE=WORK,FAX:+1-919-676-9564
   EMAIL;TYPE=PREF,INTERNET:Frank_Dawson@Lotus.com
   EMAIL;TYPE=INTERNET:fdawson@earthlink.net
   URL:http://home.earthlink.net/~fdawson
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Hopson;Ross
   FN:Ross Hopson
   ORG:On Technology, Inc.
   ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 1600;434 Fayetteville St.
     Mall\, Two Hannover Square;Raleigh;NC;27601
   TEL;TYPE=WORK,MSG:+1-919-890-4036
   TEL;TYPE=WORK,FAX:+1-919-890-4100
   EMAIL;TYPE=INTERNET:rhopson@on.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Hopson;Ross
   FN:Ross Hopson
   ORG:On Technology, Inc.
   ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 1600;434 Fayetteville St.
     Mall\, Two Hannover Square;Raleigh;NC;27601
   TEL;TYPE=WORK,MSG:+1-919-890-4036
   TEL;TYPE=WORK,FAX:+1-919-890-4100
   EMAIL;TYPE=INTERNET:rhopson@on.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Mansour;Steve
   FN:Steve Mansour
   ORG:Netscape Communications Corporation
   ADR;TYPE=WORK,POSTAL,PARCEL:;;501 East Middlefield Road;Mountain
     View;CA;94043;USA
   TEL;TYPE=WORK,MSG:+1-650-937-2378
   TEL;TYPE=WORK,FAX:+1-650-937-2103
   EMAIL;TYPE=INTERNET:sman@netscape.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Mansour;Steve
   FN:Steve Mansour
   ORG:Netscape Communications Corporation
   ADR;TYPE=WORK,POSTAL,PARCEL:;;501 East Middlefield Road;Mountain
     View;CA;94043;USA
   TEL;TYPE=WORK,MSG:+1-650-937-2378
   TEL;TYPE=WORK,FAX:+1-650-937-2103
   EMAIL;TYPE=INTERNET:sman@netscape.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Silverberg;Steve
   FN:Steve Silverberg
   ORG:Microsoft Corporation
   ADR;TYPE=WORK,POSTAL,PARCEL:;;One Microsoft Way;
   Redmond;WA;98052-6399;USA
   TEL;TYPE=WORK,MSG:+1-425-936-9277
   TEL;TYPE=WORK,FAX:+1-425-936-8019
   EMAIL;INTERNET:stevesil@Microsoft.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Silverberg;Steve
   FN:Steve Silverberg
   ORG:Microsoft Corporation
   ADR;TYPE=WORK,POSTAL,PARCEL:;;One Microsoft Way;
   Redmond;WA;98052-6399;USA
   TEL;TYPE=WORK,MSG:+1-425-936-9277
   TEL;TYPE=WORK,FAX:+1-425-936-8019
   EMAIL;INTERNET:stevesil@Microsoft.com
   END:VCARD
        

The iCalendar object is a result of the work of the Internet Engineering Task Force Calendaring and scheduling Working Group. The chairman of that working group is:

iCalendar对象是Internet工程任务组日历和日程安排工作组工作的结果。该工作组的主席是:

   BEGIN:VCARD
   VERSION:3.0
   N:Ganguly;Anik
   FN:Anik Ganguly
   ORG:Open Text Inc.
   ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 101;38777 West Six Mile Road;
    Livonia;MI;48152;USA
   TEL;TYPE=WORK,MSG:+1-734-542-5955
   EMAIL;TYPE=INTERNET:ganguly@acm.org
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Ganguly;Anik
   FN:Anik Ganguly
   ORG:Open Text Inc.
   ADR;TYPE=WORK,POSTAL,PARCEL:;Suite 101;38777 West Six Mile Road;
    Livonia;MI;48152;USA
   TEL;TYPE=WORK,MSG:+1-734-542-5955
   EMAIL;TYPE=INTERNET:ganguly@acm.org
   END:VCARD
        

The co-chairman of that working group is:

该工作组的共同主席是:

   BEGIN:VCARD
   VERSION:3.0
   N:Moskowitz;Robert
   FN:Robert Moskowitz
   NICKNAME:Bob
   EMAIL; TYPE=INTERNET:rgm-ietf@htt-consult.com
   END:VCARD
        
   BEGIN:VCARD
   VERSION:3.0
   N:Moskowitz;Robert
   FN:Robert Moskowitz
   NICKNAME:Bob
   EMAIL; TYPE=INTERNET:rgm-ietf@htt-consult.com
   END:VCARD
        
10. Full Copyright Statement
10. 完整版权声明

Copyright (C) The Internet Society (1998). All Rights Reserved.

版权所有(C)互联网协会(1998年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。