Network Working Group                                     P. Saint-Andre
Request for Comments: 3922                    Jabber Software Foundation
Category: Standards Track                                   October 2004
        
Network Working Group                                     P. Saint-Andre
Request for Comments: 3922                    Jabber Software Foundation
Category: Standards Track                                   October 2004
        

Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)

将可扩展消息和状态协议(XMPP)映射到公共状态和即时消息(CPIM)

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 (2004).

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

Abstract

摘要

This memo describes a mapping between the Extensible Messaging and Presence Protocol (XMPP) and the Common Presence and Instant Messaging (CPIM) specifications.

本备忘录描述了可扩展消息和状态协议(XMPP)与通用状态和即时消息(CPIM)规范之间的映射。

Table of Contents

目录

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Approach . . . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Address Mapping  . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Syntax Mapping of Instant Messages . . . . . . . . . . . . . .  5
   5.  Syntax Mapping of Presence Information . . . . . . . . . . . . 13
   6.  XMPP-CPIM Gateway as Presence Service  . . . . . . . . . . . . 26
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 31
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 32
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 33
   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 34
        
   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Approach . . . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Address Mapping  . . . . . . . . . . . . . . . . . . . . . . .  4
   4.  Syntax Mapping of Instant Messages . . . . . . . . . . . . . .  5
   5.  Syntax Mapping of Presence Information . . . . . . . . . . . . 13
   6.  XMPP-CPIM Gateway as Presence Service  . . . . . . . . . . . . 26
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 31
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 32
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 33
   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 34
        
1. Introduction
1. 介绍
1.1. Overview
1.1. 概述

The Instant Messaging and Presence (IMPP) Working Group has defined an abstract framework for interoperability among instant messaging (IM) and presence systems that are compliant with [IMP-REQS]. This framework is commonly called Common Presence and Instant Messaging or "CPIM". The CPIM family of specifications include a Common Profile for Instant Messaging [CPIM] (also called CPIM), a Common Profile for Presence [CPP], a CPIM Message Format [MSGFMT], and a Common Presence Information Data Format [PIDF]. (Note: To prevent confusion, Common Presence and Instant Messaging is referred to herein collectively as "the CPIM specifications", whereas the Common Profile for Instant Messaging is referred to as "CPIM".)

即时消息和状态(IMP)工作组定义了一个抽象框架,用于即时消息(IM)和状态系统之间的互操作性,该框架符合[IMP-REQS]。该框架通常被称为公共状态和即时消息或“CPIM”。CPIM系列规范包括用于即时消息[CPIM](也称为CPIM)的公共配置文件、用于状态[CPP]的公共配置文件、CPIM消息格式[MSGFMT]和公共状态信息数据格式[PIDF]。(注:为避免混淆,通用状态和即时消息在此统称为“CPIM规范”,而即时消息的通用配置文件称为“CPIM”。)

This memo describes how the Extensible Messaging and Presence Protocol ([XMPP-CORE], [XMPP-IM]) maps to the abstract model contained in the CPIM specifications, mainly for the purpose of establishing gateways between XMPP services and non-XMPP services that conform to [IMP-REQS]. Such a gateway, referred to herein as an "XMPP-CPIM gateway", may be established to interpret the protocols of one service and translate them into the protocols of the other service. We can visualize this relationship as follows:

本备忘录描述了可扩展消息和状态协议([XMPP-CORE]、[XMPP-IM])如何映射到CPIM规范中包含的抽象模型,主要用于在符合[IMP-REQS]的XMPP服务和非XMPP服务之间建立网关。可以建立这样的网关,在本文中称为“XMPP-CPIM网关”,以解释一个服务的协议并将其转换为另一个服务的协议。我们可以将这种关系形象化如下:

     +-------------+        +-------------+        +------------+
     |             |        |             |        |            |
     |    XMPP     |        |  XMPP-CPIM  |        |  Non-XMPP  |
     |   Service   | <----> |   Gateway   | <----> |  Service   |
     |             |        |             |        |            |
     +-------------+        +-------------+        +------------+
        
     +-------------+        +-------------+        +------------+
     |             |        |             |        |            |
     |    XMPP     |        |  XMPP-CPIM  |        |  Non-XMPP  |
     |   Service   | <----> |   Gateway   | <----> |  Service   |
     |             |        |             |        |            |
     +-------------+        +-------------+        +------------+
        

This memo defines a mapping for use by a gateway that translates between XMPP and a non-XMPP protocol via the CPIM specifications. Such a gateway is not an intermediate hop on a network of non-XMPP servers (whose native formats may or may not be defined by the CPIM specifications), but a dedicated translator between XMPP and a non-XMPP protocol, where the CPIM specifications define the common formats into which the protocols are translated for purposes of interworking.

此备忘录定义了网关使用的映射,该网关通过CPIM规范在XMPP和非XMPP协议之间进行转换。这样的网关不是非XMPP服务器(其本机格式可能由CPIM规范定义,也可能不由CPIM规范定义)网络上的中间跳,而是XMPP和非XMPP协议之间的专用转换器,其中CPIM规范定义了协议转换为的通用格式,以实现互通。

The mapping defined herein applies to instant messages and presence information that are not encrypted or signed for end-to-end security. For information about secure communications to or from an XMPP service through an XMPP-CPIM gateway, refer to [XMPP-E2E].

本文定义的映射适用于未针对端到端安全性进行加密或签名的即时消息和存在信息。有关通过XMPP-CPIM网关与XMPP服务进行安全通信的信息,请参阅[XMPP-E2E]。

1.2. Terminology
1.2. 术语

This memo inherits vocabulary defined in [IMP-MODEL]. Terms such as CLOSED, INSTANT INBOX, INSTANT MESSAGE, OPEN , PRESENCE SERVICE, PRESENTITY, SUBSCRIPTION, and WATCHER are used in the same meaning as defined therein.

本备忘录继承了[IMP-MODEL]中定义的词汇表。诸如“关闭”、“即时收件箱”、“即时消息”、“打开”、“状态服务”、“状态实体”、“订阅”和“观察者”等术语的含义与其中定义的含义相同。

This memo also inherits vocabulary defined in [XMPP-CORE]. Terms such as ENTITY, NODE IDENTIFIER, DOMAIN IDENTIFIER, RESOURCE IDENTIFIER, MESSAGE STANZA, and PRESENCE STANZA are used in the same meaning as defined therein.

此备忘录还继承了[XMPP-CORE]中定义的词汇表。实体、节点标识符、域标识符、资源标识符、消息节和状态节等术语的含义与其中定义的相同。

1.3. Conventions Used in this Document
1.3. 本文件中使用的公约

The capitalized 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 [TERMS].

本文件中大写的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[条款]中所述进行解释。

2. Approach
2. 方法

XMPP and CPIM are distinctly foreign technologies. Therefore, care must be taken in mapping between XMPP and the abstract syntax defined by the CPIM specifications.

XMPP和CPIM显然是国外技术。因此,在XMPP和CPIM规范定义的抽象语法之间进行映射时必须小心。

At root, XMPP is a data transport protocol for streaming XML elements (called "stanzas") between any two endpoints on the network; message and presence stanzas are two of the core data elements defined in XMPP and are often used to exchange instant messages and presence information between IM users (although the inherent extensibility of XML enables applications to use the general semantics of these stanza types for other purposes). XMPP is not based on [MIME]; instead, [XMPP-CORE] defines XML schemas for both message and presence stanzas (for example, the <body/> child of a message stanza contains XML character data that is usually intended to be read by a human user).

在根目录下,XMPP是一种数据传输协议,用于在网络上任意两个端点之间传输XML元素(称为“节”);消息和状态节是XMPP中定义的两个核心数据元素,通常用于在IM用户之间交换即时消息和状态信息(尽管XML固有的可扩展性使应用程序能够将这些节类型的一般语义用于其他目的)。XMPP不是基于[MIME];相反,[XMPP-CORE]为消息节和状态节定义了XML模式(例如,消息节的<body/>子节包含通常由用户读取的XML字符数据)。

The CPIM specifications provide common formats for instant messaging and presence through two [MIME] content-types: "Message/CPIM" for messages ([MSGFMT]) and "application/pidf+xml" for presence ([PIDF]). The syntax of "Message/CPIM" objects is similar to but stricter than that defined in [RFC2822], and provides the ability to include arbitrary MIME media types [MIMETYPES]. By contrast, each "application/pidf+xml" object is a complete XML document whose structure is defined by an XML schema.

CPIM规范通过两种[MIME]内容类型为即时消息和状态提供通用格式:“消息/CPIM”用于消息([MSGFMT]),而“应用程序/pidf+xml”用于状态([pidf])。“Message/CPIM”对象的语法类似于[RFC2822]中定义的语法,但更严格,并提供了包含任意MIME媒体类型[MIMETYPES]的能力。相比之下,每个“application/pidf+xml”对象都是一个完整的xml文档,其结构由xml模式定义。

The approach taken herein is to specify mappings from XMPP elements and attributes to the headers and MIME formats defined by [MSGFMT] and [PIDF] in order to comply with the semantics defined by [CPIM] and [CPP]. Naturally, mappings in the opposite direction are provided as well.

本文采用的方法是指定从XMPP元素和属性到[MSGFMT]和[PIDF]定义的头和MIME格式的映射,以符合[CPIM]和[CPP]定义的语义。当然,也会提供相反方向的映射。

3. Address Mapping
3. 地址映射
3.1. Overview
3.1. 概述

Address mapping may be required since the address formats used to identify XMPP entities (specified in [XMPP-CORE]) are different from those used to identify instant inboxes (the im: URI scheme specified in [CPIM]) and presentities (the pres: URI scheme specified in [CPP]). In particular, different characters are allowed in im: and pres: URIs than are allowed in XMPP addresses:

可能需要地址映射,因为用于标识XMPP实体(在[XMPP-CORE]中指定)的地址格式不同于用于标识即时收件箱(在[CPIM]中指定的im:URI方案)和存在实体(在[CPP]中指定的pres:URI方案)的地址格式。特别是,im:和pres:URI中允许的字符与XMPP地址中允许的字符不同:

o The following [US-ASCII] characters are allowed in im:/pres: URIs but not in XMPP addresses: #26; (&), #27; ('), and #2f; (/). o Many non-US-ASCII (specifically, UTF-8) characters are allowed in XMPP addresses but not allowed in im:/pres: URIs, since XMPP allows internationalized local-part addresses.

o im:/pres:URI中允许使用以下[US-ASCII]字符,但XMPP地址中不允许使用这些字符:#26;(&), #27; "(")和#2f ;;(/). o XMPP地址中允许使用许多非美国ASCII(特别是UTF-8)字符,但im:/pres:URI中不允许使用这些字符,因为XMPP允许国际化的本地部件地址。

Note: In this document we discuss characters allowed in local-part addresses only (i.e., we have ruled the mapping of domain names as out of scope for the initial version of this document, since it is a matter for the Domain Name System and the translation of fully internationalized domain names).

注:在本文件中,我们仅讨论本地部分地址中允许的字符(即,我们已将域名映射排除在本文件初始版本的范围之外,因为这是域名系统和完全国际化域名翻译的问题)。

3.2. XMPP to CPIM
3.2. XMPP到CPIM

The following is a high-level algorithm for mapping an XMPP address to an im: or pres: URI:

以下是将XMPP地址映射到im:或pres:URI的高级算法:

1. Split XMPP address into node identifier (local-part; mapping described in remaining steps), domain identifier (hostname; mapping is out of scope), and resource identifier (specifier for particular device or connection; discard this for cross-system interoperability)

1. 将XMPP地址拆分为节点标识符(本地部分;其余步骤中描述的映射)、域标识符(主机名;映射超出范围)和资源标识符(特定设备或连接的说明符;放弃此项以实现跨系统互操作性)

2. Apply Nodeprep profile of [STRINGPREP] (as specified in [XMPP-CORE]) for canonicalization (OPTIONAL)

2. 将[STRINGPREP](如[XMPP-CORE]中所述)的Nodeprep配置文件应用于规范化(可选)

3. Translate #26; to &, #27; to ', and #2f; to / respectively

3. 翻译#26;至&、#27;至’和#2f;至/分别

4. For each byte, if the byte is not in the set A-Za-z0-9!$*.?_~+= then change to %hexhex as described in Section 2.2.5 of [URL-GUIDE]

4. 对于每个字节,如果该字节不在集合A-Za-z0-9!$*。?\uz+=然后更改为[URL-GUIDE]第2.2.5节所述的%hexex

5. Combine resulting local-part with mapped hostname to form local@domain address

5. 将生成的本地部件与映射的主机名组合在一起形成local@domain住址

6. Prepend with 'im:' scheme (for XMPP <message/> stanzas) or 'pres:' scheme (for XMPP <presence/> stanzas)

6. 在前面加上'im:'方案(对于XMPP<message/>节)或'pres:'方案(对于XMPP<presence/>节)

3.3. CPIM to XMPP
3.3. CPIM到XMPP

The following is a high-level algorithm for mapping an im: or pres: URI to an XMPP address:

以下是将im:或pres:URI映射到XMPP地址的高级算法:

1. Remove URI scheme

1. 删除URI方案

2. Split at the first '@' character into local-part and hostname (mapping the latter is out of scope)

2. 在第一个“@”字符处拆分为本地部分和主机名(映射后者超出范围)

3. Translate %hexhex to equivalent octets as described in Section 2.2.5 of [URL-GUIDE]

3. 按照[URL-GUIDE]第2.2.5节所述,将%hexhex转换为等效的八位字节

4. Treat result as a UTF-8 string

4. 将结果视为UTF-8字符串

5. Translate & to #26;, ' to #27;, and / to #2f respectively

5. 翻译成#26;,'至#27;,和/至#2f

6. Apply Nodeprep profile of [STRINGPREP] (as specified in [XMPP-CORE]) for canonicalization (OPTIONAL)

6. 将[STRINGPREP](如[XMPP-CORE]中所述)的Nodeprep配置文件应用于规范化(可选)

7. Recombine local-part with mapped hostname to form local@domain address

7. 将具有映射主机名的本地部件重新组合为local@domain住址

4. Syntax Mapping of Instant Messages
4. 即时消息的语法映射

This section describes how a gateway SHOULD map instant messages between an XMPP service and a non-XMPP service using a "Message/CPIM" object as the bearer of encapsulated text content in order to comply with the instant messaging semantics defined by [CPIM].

本节描述网关应如何使用“Message/CPIM”对象作为封装文本内容的载体,在XMPP服务和非XMPP服务之间映射即时消息,以符合[CPIM]定义的即时消息语义。

4.1. Message Syntax Mapping from XMPP to CPIM Specifications
4.1. 从XMPP到CPIM规范的消息语法映射

This section defines the mapping of syntax primitives from XMPP message stanzas to "Message/CPIM" objects with encapsulated text content.

本节定义了语法原语从XMPP消息节到带有封装文本内容的“message/CPIM”对象的映射。

Note: As specified in [MIME], the default Content-type of a MIME object is "Content-type: text/plain; charset=us-ascii". Because XMPP uses the [UTF-8] character encoding exclusively, the encapsulated MIME object generated by an XMPP-CPIM gateway MUST set the

注意:如[MIME]中所述,MIME对象的默认内容类型为“内容类型:text/plain;charset=us ascii”。因为XMPP专门使用[UTF-8]字符编码,所以由XMPP-CPIM网关生成的封装MIME对象必须设置

"Content-type" MUST be set to "text/plain" and the charset MUST be set to "utf-8".

“内容类型”必须设置为“文本/普通”,字符集必须设置为“utf-8”。

4.1.1. From Address
4.1.1. 发件人地址

The 'from' attribute of an XMPP message stanza maps to the 'From' header of a "Message/CPIM" object. In XMPP, the sender's server stamps or validates the "from" address and sets its value to the full <user@host/resource> negotiated between client and server during authentication and resource binding as defined in [XMPP-CORE]. Thus an XMPP-CPIM gateway will receive from the sender's XMPP server a message stanza containing a "from" address of the form <user@host/resource>. To map the 'from' attribute of an XMPP message stanza to the 'From' header of a "Message/CPIM" object, the gateway MUST remove the resource identifier, MUST append the "im:" Instant Messaging URI scheme to the front of the address, and MAY include a CPIM "Formal-name" for the sender (if known).

XMPP消息节的“from”属性映射到“message/CPIM”对象的“from”头。在XMPP中,发送方的服务器标记或验证“发件人”地址,并将其值设置为完整值<user@host/resource>按照[XMPP-CORE]中的定义,在身份验证和资源绑定期间在客户端和服务器之间协商。因此,XMPP-CPIM网关将从发送方的XMPP服务器接收包含表单“发件人”地址的消息节<user@host/资源>。要将XMPP消息节的“from”属性映射到“message/CPIM”对象的“from”头,网关必须删除资源标识符,必须将“im:”即时消息URI方案附加到地址的前面,并且可能包括发送方的CPIM“正式名称”(如果已知)。

Example: From Address Mapping

示例:来自地址映射

   XMPP 'from' attribute
     <message from='juliet@example.com/balcony'>
       ...
     </message>
        
   XMPP 'from' attribute
     <message from='juliet@example.com/balcony'>
       ...
     </message>
        
   CPIM 'From' header
     From: Juliet Capulet <im:juliet@example.com>
        
   CPIM 'From' header
     From: Juliet Capulet <im:juliet@example.com>
        
4.1.2. To Address
4.1.2. 解决

The 'to' attribute of an XMPP message stanza maps to the 'To' header of a "Message/CPIM" object. In XMPP, the sender SHOULD include a 'to' attribute on a message stanza, and MUST include it if the message is intended for delivery to another user. Thus an XMPP-CPIM gateway will receive from the sender's XMPP server a message stanza containing a "to" address of the form <user@host> or <user@host/resource>. To map the 'to' attribute of an XMPP message stanza to the 'To' header of a "Message/CPIM" object, the gateway MUST remove the resource identifier (if included), MUST append the "im:" Instant Messaging URI scheme to the front of the address, and MAY include a CPIM "Formal-name" for the recipient (if known).

XMPP消息节的“to”属性映射到“message/CPIM”对象的“to”头。在XMPP中,发送方应该在消息节中包含“to”属性,并且如果消息打算传递给另一个用户,则必须包含该属性。因此,XMPP-CPIM网关将从发送方的XMPP服务器接收一个消息节,其中包含表单的“to”地址<user@host>或<user@host/资源>。要将XMPP消息节的“To”属性映射到“message/CPIM”对象的“To”头,网关必须删除资源标识符(如果包含),必须将“im:”即时消息URI方案附加到地址的前面,并且可能包含收件人的CPIM“正式名称”(如果已知)。

Example: To Address Mapping

示例:解决映射问题

   XMPP 'to' attribute
     <message to='romeo@example.net/orchard'>
       ...
     </message>
        
   XMPP 'to' attribute
     <message to='romeo@example.net/orchard'>
       ...
     </message>
        
   CPIM 'To' header
     To: Romeo Montague <im:romeo@example.net>
        
   CPIM 'To' header
     To: Romeo Montague <im:romeo@example.net>
        
4.1.3. Stanza ID
4.1.3. 节ID

An XMPP message stanza MAY possess an 'id' attribute, which is used by the sending application for the purpose of tracking stanzas and is not a globally-unique identifier such as is defined by the MIME Content-ID header. Because the XMPP 'id' attribute does not have the same meaning as the MIME Content-ID header, it SHOULD NOT be mapped to that header; however, if the 'id' is known to be unique (e.g., if it is generated to be unique by the XMPP server and that fact is known by the XMPP-CPIM gateway), then it SHOULD be so mapped.

XMPP消息节可能具有“id”属性,发送应用程序使用该属性跟踪节,而不是MIME内容id头定义的全局唯一标识符。因为XMPP“id”属性与MIME内容id头的含义不同,所以不应该将其映射到该头;但是,如果已知“id”是唯一的(例如,如果XMPP服务器生成的“id”是唯一的,而XMPP-CPIM网关知道该事实),则应如此映射。

4.1.4. Message Type
4.1.4. 消息类型

An XMPP message stanza MAY possess a 'type' attribute, which is used by the sending application to capture the conversational context of the message. There is no mapping of an XMPP 'type' attribute to a "Message/CPIM" header, common MIME features, or encapsulated text content. Therefore if an XMPP stanza received by an XMPP-CPIM gateway possesses a 'type' attribute, the gateway SHOULD ignore the value provided.

XMPP消息节可能具有“type”属性,发送应用程序使用该属性捕获消息的会话上下文。XMPP“type”属性没有映射到“Message/CPIM”头、通用MIME功能或封装的文本内容。因此,如果XMPP-CPIM网关接收的XMPP节具有“type”属性,则网关应忽略提供的值。

4.1.5. Message Thread
4.1.5. 消息线程

An XMPP message stanza MAY contain a <thread/> child element to specify the conversation thread in which the message is situated. There is no mapping of an XMPP <thread/> element to a "Message/CPIM" header, common MIME features, or encapsulated text content. Therefore if an XMPP message stanza received by an XMPP-CPIM gateway contains a <thread/> child element, the gateway SHOULD ignore the value provided.

XMPP消息节可能包含一个子元素<thread/>,用于指定消息所在的对话线程。XMPP<thread/>元素没有映射到“Message/CPIM”头、通用MIME特性或封装的文本内容。因此,如果XMPP-CPIM网关接收到的XMPP消息节包含<thread/>子元素,那么网关应该忽略提供的值。

4.1.6. Message Subject
4.1.6. 消息主题
   An XMPP message stanza MAY include a <subject/> child element.  If
   included, it maps to the 'Subject' header of a "Message/CPIM" object.
   To map the XMPP <subject/> element to the 'Subject' header of a
   "Message/CPIM" object, the gateway SHOULD simply map the XML
   character data of the XMPP <subject/> element to the value of the
        
   An XMPP message stanza MAY include a <subject/> child element.  If
   included, it maps to the 'Subject' header of a "Message/CPIM" object.
   To map the XMPP <subject/> element to the 'Subject' header of a
   "Message/CPIM" object, the gateway SHOULD simply map the XML
   character data of the XMPP <subject/> element to the value of the
        

'Subject' header. The <subject/> element MAY include an 'xml:lang' attribute specifying the language in which the subject is written. If an 'xml:lang' attribute is provided, it MUST be mapped by including ';lang=tag' after the header name and colon, where 'tag' is the value of the 'xml:lang' attribute.

“主题”标题。<subject/>元素可能包含一个“xml:lang”属性,指定编写主题的语言。如果提供了'xml:lang'属性,则必须通过包含''来映射该属性;lang=tag'位于标题名和冒号之后,其中'tag'是'xml:lang'属性的值。

Example: Subject Mapping

示例:主题映射

   XMPP <subject/> element
     <subject>Hi!</subject>
     <subject xml:lang='cz'>Ahoj!</subject>
        
   XMPP <subject/> element
     <subject>Hi!</subject>
     <subject xml:lang='cz'>Ahoj!</subject>
        
   CPIM 'Subject' header
     Subject: Hi!
     Subject:;lang=cz Ahoj!
        
   CPIM 'Subject' header
     Subject: Hi!
     Subject:;lang=cz Ahoj!
        
4.1.7. Message Body
4.1.7. 消息体

The <body/> child element of an XMPP message stanza is used to provide the primary meaning of the message. The XML character data of the XMPP <body/> element maps to the encapsulated text message content.

XMPP消息节的<body/>子元素用于提供消息的主要含义。XMPP<body/>元素的XML字符数据映射到封装的文本消息内容。

Example: Message Body

示例:消息体

   XMPP message <body/>
     <message>
       <body>Wherefore art thou, Romeo?</body>
     </message>
        
   XMPP message <body/>
     <message>
       <body>Wherefore art thou, Romeo?</body>
     </message>
        
   Encapsulated MIME text content
     Content-type: text/plain; charset=utf-8
     Content-ID: <123456789@example.net>
        
   Encapsulated MIME text content
     Content-type: text/plain; charset=utf-8
     Content-ID: <123456789@example.net>
        

Wherefore art thou, Romeo?

你为什么,罗密欧?

4.1.8. Message Extensions
4.1.8. 消息扩展

As defined in [XMPP-CORE], an XMPP message stanza may contain "extended" content in any namespace in order to supplement or extend the semantics of the core message stanza. With the exception of extended information qualified by the 'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in [XMPP-E2E], an XMPP-CPIM gateway SHOULD ignore such information and not pass it through the gateway to the intended recipient. No mapping for such information is defined.

如[XMPP-CORE]中所定义,XMPP消息节可以在任何名称空间中包含“扩展”内容,以补充或扩展核心消息节的语义。除[xmpp-e2e]中定义的“urn:ietf:params:xml:ns:xmpp-e2e”命名空间限定的扩展信息外,xmpp-CPIM网关应忽略此类信息,而不应通过网关将其传递给预期收件人。未定义此类信息的映射。

4.1.9. Gateway-Generated CPIM Syntax
4.1.9. 网关生成的CPIM语法

CPIM specifies the existence of "Message/CPIM" headers in addition to those described above, but there is no exact analogue for those headers in the core XMPP specifications. These include:

CPIM除了上面描述的那些头之外,还指定了“Message/CPIM”头的存在,但是在核心XMPP规范中没有这些头的精确模拟。这些措施包括:

o cc -- specifies the address of an entity that is to receive a "courtesy copy" of the message (i.e., a non-primary addressee) o DateTime -- specifies the datetime at which the message was sent o NS -- specifies the namespace of a feature extension o Require -- specifies mandatory-to-recognize features

o cc——指定接收消息“礼节性副本”的实体(即非主要收件人)的地址o DateTime——指定消息发送的日期时间o NS——指定功能扩展的命名空间o Require——指定识别功能的强制要求

An XMPP-CPIM gateway MAY independently generate such headers based on its own information (e.g., the datetime at which it received a message stanza from an XMPP entity) or based on data encoded in non-core XMPP extensions, but rules for doing so are out of scope for this memo.

XMPP-CPIM网关可以基于自己的信息(例如,它从XMPP实体接收消息节的日期时间)或基于非核心XMPP扩展中编码的数据独立地生成这样的头,但这样做的规则不在本备忘录的范围内。

4.2. Message Syntax Mapping from CPIM Specifications to XMPP
4.2. 从CPIM规范到XMPP的消息语法映射

This section defines the mapping of syntax primitives from "Message/CPIM" objects with encapsualted text content to XMPP message stanzas.

本节定义了从带有封装文本内容的“Message/CPIM”对象到XMPP消息节的语法原语的映射。

4.2.1. From Address
4.2.1. 发件人地址

The 'From' header of a "Message/CPIM" object maps to the 'from' attribute of an XMPP message stanza. To map the CPIM 'From' header to the XMPP 'from' attribute, the gateway MUST remove the "im:" Instant Messaging URI scheme from the front of the address and MUST remove the CPIM "Formal-name" (if provided).

“Message/CPIM”对象的“From”头映射到XMPP消息节的“From”属性。要将CPIM“From”头映射到XMPP“From”属性,网关必须从地址前面删除“im:”即时消息URI方案,并且必须删除CPIM“正式名称”(如果提供)。

Example: From Address Mapping

示例:来自地址映射

   CPIM 'From' header
     From: Romeo Montague <im:romeo@example.net>
        
   CPIM 'From' header
     From: Romeo Montague <im:romeo@example.net>
        
   XMPP 'from' attribute
     <message from='romeo@example.net'>
       ...
     </message>
        
   XMPP 'from' attribute
     <message from='romeo@example.net'>
       ...
     </message>
        
4.2.2. To Address
4.2.2. 解决

The 'To' header of a "Message/CPIM" object maps to the 'to' attribute of an XMPP message stanza. To map the CPIM 'To' header to the XMPP 'to' attribute, the gateway MUST remove the "im:" Instant Messaging URI scheme from the front of the address and MUST remove the CPIM

“Message/CPIM”对象的“To”头映射到XMPP消息节的“To”属性。要将CPIM“To”头映射到XMPP“To”属性,网关必须从地址前面删除“im:”即时消息URI方案,并且必须删除CPIM

"Formal-name" (if provided). If the gateway possesses knowledge of the resource identifier in use by the XMPP entity, the gateway MAY append the resource identifier to the address.

“正式名称”(如提供)。如果网关拥有XMPP实体正在使用的资源标识符的知识,则网关可以将资源标识符附加到地址。

Example: To Address Mapping

示例:解决映射问题

   CPIM 'To' header
     To: Juliet Capulet <im:juliet@example.com>
        
   CPIM 'To' header
     To: Juliet Capulet <im:juliet@example.com>
        
   XMPP 'to' attribute
     <message to='juliet@example.com/balcony'>
       ...
     </message>
        
   XMPP 'to' attribute
     <message to='juliet@example.com/balcony'>
       ...
     </message>
        
4.2.3. Courtesy Copy
4.2.3. 礼节性副本

The core XMPP specification does not include syntax for specifying a "courtesy copy" (non-primary addressee) for a message stanza. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object that contains a 'cc' header, it SHOULD NOT pass the information contained in that header on to the XMPP recipient.

核心XMPP规范不包括为消息节指定“礼节副本”(非主要收件人)的语法。因此,如果XMPP-CPIM网关接收到包含“cc”头的“Message/CPIM”对象,则不应将该头中包含的信息传递给XMPP收件人。

4.2.4. DateTime Header
4.2.4. 日期时间报头

The core XMPP specification does not include syntax for specifying the datetime at which a message stanza was sent. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object that contains a 'DateTime' header, it SHOULD NOT pass the information contained in that header on to the XMPP recipient.

核心XMPP规范不包括用于指定发送消息节的日期时间的语法。因此,如果XMPP-CPIM网关接收到包含“DateTime”头的“Message/CPIM”对象,则不应将该头中包含的信息传递给XMPP收件人。

4.2.5. Message Subject
4.2.5. 消息主题

The 'Subject' header of a "Message/CPIM" object maps to the <subject/> child element of an XMPP message stanza. To map the CPIM 'Subject' header to the XMPP <subject/> element, the gateway SHOULD simply map the value of the 'Subject' header to the XML character data of the XMPP <subject/> element. The 'Subject' header MAY specify the "lang" in which the subject is written. If "lang" information is provided, it MUST be mapped to the 'xml:lang' attribute of the <subject/> element, where the value of the 'xml:lang' attribute is the "tag" value supplied in the string ';lang=tag' included after the CPIM 'Subject' header name and colon.

“Message/CPIM”对象的“Subject”头映射到XMPP消息节的<Subject/>子元素。要将CPIM'Subject'头映射到XMPP<Subject/>元素,网关只需将'Subject'头的值映射到XMPP<Subject/>元素的XML字符数据。“Subject”标题可以指定写入主题的“lang”。如果提供了“lang”信息,则必须将其映射到<subject/>元素的“xml:lang”属性,其中“xml:lang”属性的值是字符串中提供的“tag”值;lang=包含在CPIM“主题”标题名称和冒号之后的标记。

Example: Subject Mapping

示例:主题映射

   CPIM 'Subject' header
     Subject: Hi!
     Subject:;lang=cz Ahoj!
        
   CPIM 'Subject' header
     Subject: Hi!
     Subject:;lang=cz Ahoj!
        
   XMPP <subject/> element
     <subject>Hi!</subject>
     <subject xml:lang='cz'>Ahoj!</subject>
        
   XMPP <subject/> element
     <subject>Hi!</subject>
     <subject xml:lang='cz'>Ahoj!</subject>
        
4.2.6. Header Extensions
4.2.6. 标题扩展

"Message/CPIM" objects MAY include an optional 'NS' header to specify the namespace of a feature extension. An XMPP-CPIM gateway MUST NOT pass such headers through to the XMPP recipient, and no mapping for such headers is defined.

“Message/CPIM”对象可能包括可选的“NS”头,用于指定功能扩展的命名空间。XMPP-CPIM网关不得将此类头传递给XMPP收件人,并且未定义此类头的映射。

4.2.7. Require Header
4.2.7. 需要标题

"Message/CPIM" objects MAY include an optional 'Require' header to specify mandatory-to-recognize features. In general, such a header would be included by the non-XMPP sending application to (1) insist that the receiving application needs to understand functionality specified by a particular header or (2) indicate that some non-header semantics need to be implemented by the receiving application in order to understand the contents of the message (e.g., "Locale.MustRenderKanji"). Because the mandatory-to-recognize features would be required of the XMPP receiving application rather than the XMPP-CPIM gateway itself, the gateway cannot properly handle the 'Require' header without detailed knowledge about the capabilities of the XMPP receiving application. Therefore, it seems appropriate that the XMPP-CPIM gateway SHOULD return a warning or error to the non-XMPP sending application if it includes one or more 'Require' headers in a "Message/CPIM" object; the exact nature of the warning or error will depend on the nature of the non-XMPP technology used by the foreign system, and is not defined herein. Furthermore, any mapping of the 'Require' header into XMPP or an XMPP extension is left up to the implementation or to a future specification.

“消息/CPIM”对象可能包括一个可选的“Require”标题,用于指定识别特征的必需项。通常,非XMPP发送应用程序将包括这样的头,以(1)坚持接收应用程序需要理解特定头指定的功能,或(2)指示接收应用程序需要实现一些非头语义,以便理解消息的内容(例如。,“Locale.MustRenderKanji”)。由于XMPP接收应用程序需要强制识别功能,而不是XMPP-CPIM网关本身,因此在不详细了解XMPP接收应用程序功能的情况下,网关无法正确处理“Require”标头。因此,XMPP-CPIM网关应重新如果非XMPP发送应用程序在“消息/CPIM”中包含一个或多个“Require”头,则将警告或错误转到该应用程序“目标;警告或错误的确切性质将取决于国外系统使用的非XMPP技术的性质,此处未作定义。此外,“Require”头到XMPP或XMPP扩展的任何映射都由实现或未来的规范决定。

4.2.8. MIME Content-ID
4.2.8. MIME内容ID

XMPP does not include an element or attribute that captures a globally unique ID as is defined for the Content-ID MIME header as specified in [MIME]. If an XMPP-CPIM gateway receives a MIME object that includes a Content-ID, it MAY provide the Content-ID as the value of the message stanza's 'id' attribute, but this is OPTIONAL.

XMPP不包括捕获全局唯一ID的元素或属性,该ID是为[MIME]中指定的内容ID MIME头定义的。如果XMPP-CPIM网关接收到包含内容ID的MIME对象,它可能会提供该内容ID作为消息节的“ID”属性的值,但这是可选的。

Example: Content-ID for Encapsulated Object

示例:封装对象的内容ID

   MIME header
     Content-ID: <123456789@example.net>
        
   MIME header
     Content-ID: <123456789@example.net>
        
   XMPP 'id' attribute (OPTIONAL)
     <message id='123456789@example.net'>
       ...
     </message>
        
   XMPP 'id' attribute (OPTIONAL)
     <message id='123456789@example.net'>
       ...
     </message>
        
4.2.9. Message Body
4.2.9. 消息体

If the Content-type of an encapsulated MIME object is "text/plain", then the encapsulated text message content maps to the XML character data of the <body/> child element of an XMPP message stanza.

如果封装的MIME对象的内容类型为“text/plain”,则封装的文本消息内容映射到XMPP消息节的<body/>子元素的XML字符数据。

Example: Message Body

示例:消息体

   Encapsulated MIME text content
     Content-type: text/plain; charset=utf-8
     Content-ID: <123456789@example.net>
        
   Encapsulated MIME text content
     Content-type: text/plain; charset=utf-8
     Content-ID: <123456789@example.net>
        

Wherefore art thou?

你为什么?

   XMPP message <body/>
     <message id='123456789@example.net'>
       <body>Wherefore art thou?</body>
     </message>
        
   XMPP message <body/>
     <message id='123456789@example.net'>
       <body>Wherefore art thou?</body>
     </message>
        

If the Content-Type is not "text/plain", the XMPP-CPIM gateway MAY map the content to an XMPP extension but MUST NOT map it to the <body/> child of the XMPP message stanza, which is allowed to contain XML character data only. The only exception to this rule is a multi-part MIME object of the kind specified in [XMPP-E2E], which is to be mapped as described in that memo.

如果内容类型不是“text/plain”,XMPP-CPIM网关可以将内容映射到XMPP扩展,但不能将其映射到XMPP消息节的<body/>子级,该子级仅允许包含XML字符数据。此规则的唯一例外是[XMPP-E2E]中指定类型的多部分MIME对象,该对象将按照该备忘录中的描述进行映射。

If the charset is "US-ASCII" or "UTF-8", the gateway MUST map the "Message/CPIM" object; otherwise it SHOULD NOT.

如果字符集为“US-ASCII”或“UTF-8”,网关必须映射“Message/CPIM”对象;否则就不应该。

4.2.10. Gateway-Generated XMPP Syntax
4.2.10. 网关生成的XMPP语法

XMPP specifies the existence of a 'type' attribute for XMPP message stanzas, which enables the sender to define the conversational context of the message. There is no exact analogue for this attribute in CPIM. An XMPP-CPIM gateway MAY independently generate the 'type' attribute based on its own information, but this is OPTIONAL and rules for doing so are out of scope for this memo.

XMPP为XMPP消息节指定“type”属性的存在,这使发送者能够定义消息的会话上下文。在CPIM中,此属性没有精确的相似性。XMPP-CPIM网关可以根据自己的信息独立生成“type”属性,但这是可选的,并且这样做的规则不在本备忘录的范围内。

5. Syntax Mapping of Presence Information
5. 状态信息的语法映射

This section describes how a gateway SHOULD map presence information between an XMPP service and a non-XMPP service using a "Message/CPIM" object as the bearer of an encapsulated [PIDF] object in order to comply with the presence semantics defined by [CPP].

本节描述网关如何使用“Message/CPIM”对象作为封装的[PIDF]对象的承载,在XMPP服务和非XMPP服务之间映射存在信息,以符合[CPP]定义的存在语义。

5.1. Presence Syntax Mapping from XMPP to CPIM Specifications
5.1. 从XMPP到CPIM规范的存在语法映射

This section defines the mapping of syntax primitives from XMPP presence stanzas to "Message/CPIM" objects with encapsulated "application/pidf+xml" objects.

本节使用封装的“application/pidf+xml”对象定义语法原语从XMPP presence节到“Message/CPIM”对象的映射。

Note: As specified in [MIME], the default Content-type of a MIME object is "Content-type: text/plain; charset=us-ascii". Because XMPP uses the [UTF-8] character encoding exclusively and because PIDF specifies the "application/pidf+xml" MIME type, the encapsulated MIME object generated by an XMPP-CPIM gateway for presence information MUST set the 'Content-type' header for that object. The "Content-type" MUST be set to "application/pidf+xml" and the charset MUST be set to "utf-8".

注意:如[MIME]中所述,MIME对象的默认内容类型为“内容类型:text/plain;charset=us ascii”。因为XMPP专门使用[UTF-8]字符编码,并且因为PIDF指定了“应用程序/PIDF+xml”MIME类型,所以XMPP-CPIM网关为状态信息生成的封装MIME对象必须为该对象设置“内容类型”头。“内容类型”必须设置为“应用程序/pidf+xml”,字符集必须设置为“utf-8”。

5.1.1. From Address
5.1.1. 发件人地址

The 'from' attribute of an XMPP presence stanza maps to the 'From' header of a "Message/CPIM" object. In XMPP, the sender's server stamps or validates the "from" address and sets its value to the <user@host/resource> negotiated between client and server during authenticating and resource binding as defined in [XMPP-CORE]. Thus an XMPP-CPIM gateway will receive from the sender's XMPP server a presence stanza containing a "from" address of the form <user@host/resource>. To map the 'from' attribute of an XMPP presence stanza to the 'From' header of a "Message/CPIM" object, the gateway MUST remove the resource identifier, MUST append the "im:" Instant Messaging URI scheme to the front of the address, and MAY include a CPIM "Formal-name" for the sender (if known).

XMPP状态节的“from”属性映射到“Message/CPIM”对象的“from”头。在XMPP中,发送方的服务器标记或验证“发件人”地址,并将其值设置为<user@host/resource>按照[XMPP-CORE]中的定义,在身份验证和资源绑定期间,客户端和服务器之间协商。因此,XMPP-CPIM网关将从发送方的XMPP服务器接收包含表单“发件人”地址的状态节<user@host/资源>。要将XMPP状态节的“from”属性映射到“Message/CPIM”对象的“from”头,网关必须删除资源标识符,必须将“im:”即时消息URI方案附加到地址的前面,并且可能包括发送方的CPIM“正式名称”(如果已知)。

Example: From Address Mapping

示例:来自地址映射

   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   CPIM 'From' header
     From: Juliet Capulet <im:juliet@example.com>
        
   CPIM 'From' header
     From: Juliet Capulet <im:juliet@example.com>
        

In addition, the 'from' attribute of an XMPP presence stanza maps to the 'entity' attribute of a PIDF <presence/> root element. To map the XMPP 'from' attribute to the PIDF 'entity' attribute, the gateway MUST remove the resource identifier and MUST append the "pres:" Instant Messaging URI scheme to the front of the address.

此外,XMPP presence节的“from”属性映射到PIDF<presence/>根元素的“entity”属性。要将XMPP“from”属性映射到PIDF“entity”属性,网关必须删除资源标识符,并且必须将“pres:”即时消息URI方案附加到地址的前面。

Example: From Address Mapping (PIDF)

示例:来自地址映射(PIDF)

   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   PIDF 'entity' attribute
     <presence entity='pres:juliet@example.com'>
       ...
     </presence>
        
   PIDF 'entity' attribute
     <presence entity='pres:juliet@example.com'>
       ...
     </presence>
        

Finally, an XMPP-CPIM gateway SHOULD map the resource identifier of the XMPP address contained in the XMPP 'from' attribute to the 'id' attribute of the PIDF <tuple/> child element.

最后,XMPP-CPIM网关应该将XMPP“from”属性中包含的XMPP地址的资源标识符映射到PIDF<tuple/>子元素的“id”属性。

Example: Resource Identifier Mapping

示例:资源标识符映射

   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   PIDF 'id' for <tuple/>
     <presence entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
       </tuple>
     </presence>
        
   PIDF 'id' for <tuple/>
     <presence entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
       </tuple>
     </presence>
        
5.1.2. To Address
5.1.2. 解决

The 'to' attribute of an XMPP presence stanza maps to the 'To' header of a "Message/CPIM" object. In XMPP, the sender MAY include a 'to' attribute on a presence stanza, and MUST include it if the presence stanza is intended for delivery directly to another user (presence stanzas intended for broadcasting are stamped with a 'to' address by the sender's server). Thus an XMPP-CPIM gateway will receive from the sender's XMPP server a presence stanza containing a "to" address of the form <user@host> or <user@host/resource>. To map the 'to' attribute of an XMPP presence stanza to the 'To' header of a "Message/CPIM" object, the gateway MUST remove the resource

XMPP状态节的“to”属性映射到“Message/CPIM”对象的“to”头。在XMPP中,发送方可以在状态节上包含“to”属性,如果状态节打算直接传递给另一个用户,则发送方必须包含该属性(用于广播的状态节由发送方的服务器加盖“to”地址的印章)。因此,XMPP-CPIM网关将从发送方的XMPP服务器接收一个状态节,其中包含表单的“to”地址<user@host>或<user@host/资源>。要将XMPP状态节的“To”属性映射到“Message/CPIM”对象的“To”头,网关必须删除该资源

identifier (if included), MUST append the "im:" Instant Messaging URI scheme to the front of the address, and MAY include a CPIM "Formal-name" for the recipient (if known).

标识符(如果包含),必须将“im:”即时消息URI方案附加到地址的前面,并且可能包含收件人的CPIM“正式名称”(如果已知)。

Example: To Address Mapping

示例:解决映射问题

   XMPP 'to' attribute
     <presence to='romeo@example.net/orchard'>
       ...
     </presence>
        
   XMPP 'to' attribute
     <presence to='romeo@example.net/orchard'>
       ...
     </presence>
        
   CPIM 'To' header
     To: Romeo Montague <im:romeo@example.net>
        
   CPIM 'To' header
     To: Romeo Montague <im:romeo@example.net>
        
5.1.3. Stanza ID
5.1.3. 节ID

An XMPP presence stanza MAY possess an 'id' attribute, which is used by the sending application for the purpose of tracking stanzas and is not a globally-unique identifier such as is defined by the MIME Content-ID header. Because the XMPP 'id' attribute does not have the same meaning as the MIME Content-ID header, it SHOULD NOT be mapped to that header; however, if the 'id' is known to be unique (e.g., if it is generated to be unique by the XMPP server and that fact is known by the XMPP-CPIM gateway), then it SHOULD be so mapped.

XMPP状态节可能具有“id”属性,发送应用程序使用该属性跟踪节,而不是由MIME内容id头定义的全局唯一标识符。因为XMPP“id”属性与MIME内容id头的含义不同,所以不应该将其映射到该头;但是,如果已知“id”是唯一的(例如,如果XMPP服务器生成的“id”是唯一的,而XMPP-CPIM网关知道该事实),则应如此映射。

5.1.4. Presence Type
5.1.4. 存在类型

An XMPP presence stanza MAY possess a 'type' attribute. If no 'type' attribute is included, the presence stanza indicates that the sender is available; this state maps to the PIDF basic presence type of OPEN. If the 'type' attribute has a value of "unavailable", the presence stanza indicates that the sender is no longer available; this state maps to the PIDF basic presence type of CLOSED. Thus both the absence of a 'type' attribute and a 'type' attribute set to a value of "unavailable" correspond to the [CPP] "notify operation". All other presence types are used to manage presence subscriptions or probe for current presence; mappings for these other presence types are defined under XMPP-CPIM Gateway as Presence Service (Section 6).

XMPP状态节可能具有“type”属性。如果未包含“类型”属性,则状态节表示发送者可用;此状态映射到打开的PIDF基本存在类型。如果“type”属性的值为“unavailable”,则状态节表示发送者不再可用;此状态映射到关闭的PIDF基本存在类型。因此,缺少“type”属性和设置为“unavailable”值的“type”属性都对应于[CPP]“notify operation”。所有其他状态类型用于管理状态订阅或探测当前状态;这些其他存在类型的映射在XMPP-CPIM网关下定义为存在服务(第6节)。

Example: Available Presence

示例:可用状态

   XMPP available presence
     <presence from='juliet@example.com/balcony'/>
        
   XMPP available presence
     <presence from='juliet@example.com/balcony'/>
        
   PIDF basic presence (OPEN)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:juliet@example.com'>
        
   PIDF basic presence (OPEN)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:juliet@example.com'>
        
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
         </status>
       </tuple>
     </presence>
        
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
         </status>
       </tuple>
     </presence>
        

Example: Unavailable Presence

示例:不可用状态

   XMPP unavailable presence
     <presence from='juliet@example.com/balcony' type='unavailable'/>
        
   XMPP unavailable presence
     <presence from='juliet@example.com/balcony' type='unavailable'/>
        
   PIDF basic presence (CLOSED)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='balcony'>
         <status>
           <basic>closed</basic>
         </status>
       </tuple>
     </presence>
        
   PIDF basic presence (CLOSED)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='balcony'>
         <status>
           <basic>closed</basic>
         </status>
       </tuple>
     </presence>
        
5.1.5. Show Element
5.1.5. 显示元素

The <show/> child element of an XMPP presence stanza provides additional information about the sender's availability. The XML character data of the XMPP <show/> element maps to extended <status/> content in PIDF. The defined values of the <show/> element are 'away', 'chat', 'dnd', and 'xa'; as soon as values are specified for extended status states in the 'urn:ietf:params:xml:ns:pidf:im' namespace, the XMPP values will be mapped to the PIDF values.

XMPP状态节的<show/>子元素提供了有关发送方可用性的附加信息。XMPP<show/>元素的XML字符数据映射到PIDF中的扩展<status/>内容。<show/>元素的定义值为'away'、'chat'、'dnd'和'xa';一旦在“urn:ietf:params:xml:ns:pidf:im”命名空间中为扩展状态状态指定了值,XMPP值就会映射到pidf值。

Example: Show Element

示例:Show元素

   XMPP <show/> element
     <presence from='juliet@example.com/balcony'>
       <show>away</show>
     </presence>
        
   XMPP <show/> element
     <presence from='juliet@example.com/balcony'>
       <show>away</show>
     </presence>
        
   PIDF extended presence information
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
        
   PIDF extended presence information
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
        
           <im:im>away</im:im>
         </status>
       </tuple>
     </presence>
        
           <im:im>away</im:im>
         </status>
       </tuple>
     </presence>
        
5.1.6. Status Element
5.1.6. 状态元素

The <status/> child element of an XMPP presence stanza provides a user-defined, natural-language description of the sender's detailed availability state. The XMPP <status/> element maps to the PIDF <note/> child of the PIDF <tuple/> element.

XMPP presence节的<status/>子元素提供了发送方详细可用性状态的用户定义的自然语言描述。XMPP<status/>元素映射到PIDF<tuple/>元素的PIDF<note/>子元素。

Example: Status Element

示例:状态元素

   XMPP <status/> element
     <presence from='juliet@example.com/balcony'>
       <show>away</show>
       <status>retired to the chamber</status>
     </presence>
        
   XMPP <status/> element
     <presence from='juliet@example.com/balcony'>
       <show>away</show>
       <status>retired to the chamber</status>
     </presence>
        
   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
           <im:im>away</im:im>
         </status>
         <note>retired to the chamber</note>
       </tuple>
     </presence>
        
   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         <status>
           <basic>open</basic>
           <im:im>away</im:im>
         </status>
         <note>retired to the chamber</note>
       </tuple>
     </presence>
        
5.1.7. Presence Priority
5.1.7. 存在优先级
   An XMPP presence stanza MAY contain a <priority/> child element whose
   value is an integer between -128 and +127.  The value of this element
   MAY be mapped to the 'priority' attribute of the <contact/> child of
   the PIDF <tuple/> element.  If the value of the XMPP <priority/>
   element is negative, an XMPP-CPIM gateway MUST NOT map the value. The
   range of allowable values for the PIDF 'priority' attribute is any
   decimal number from zero to one inclusive, with a maximum of three
   decimal places.  If an XMPP-CPIM gateway maps these values, it SHOULD
   treat XMPP <priority>0</priority> as PIDF priority='0' and XMPP
   <priority>127</priority> as PIDF priority='1', mapping intermediate
   values appropriately so that they are unique (e.g., XMPP priority 1
   to PIDF priority 0.007, XMPP priority 2 to PIDF priority 0.015, and
        
   An XMPP presence stanza MAY contain a <priority/> child element whose
   value is an integer between -128 and +127.  The value of this element
   MAY be mapped to the 'priority' attribute of the <contact/> child of
   the PIDF <tuple/> element.  If the value of the XMPP <priority/>
   element is negative, an XMPP-CPIM gateway MUST NOT map the value. The
   range of allowable values for the PIDF 'priority' attribute is any
   decimal number from zero to one inclusive, with a maximum of three
   decimal places.  If an XMPP-CPIM gateway maps these values, it SHOULD
   treat XMPP <priority>0</priority> as PIDF priority='0' and XMPP
   <priority>127</priority> as PIDF priority='1', mapping intermediate
   values appropriately so that they are unique (e.g., XMPP priority 1
   to PIDF priority 0.007, XMPP priority 2 to PIDF priority 0.015, and
        

so on up through mapping XMPP priority 126 to PIDF priority 0.992; note that this is an example only, and that the exact mapping shall be determined by the XMPP-CPIM gateway).

通过将XMPP优先级126映射到PIDF优先级0.992,依此类推;请注意,这只是一个示例,确切的映射应由XMPP-CPIM网关确定)。

Example: Presence Priority

示例:存在优先级

   XMPP <status/> element
     <presence from='juliet@example.com/balcony'>
       <priority>13</priority>
     </presence>
        
   XMPP <status/> element
     <presence from='juliet@example.com/balcony'>
       <priority>13</priority>
     </presence>
        
   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
         <contact priority='0.102'>im:juliet@example.com</contact>
       </tuple>
     </presence>
        
   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
         <contact priority='0.102'>im:juliet@example.com</contact>
       </tuple>
     </presence>
        
5.1.8. Presence Extensions
5.1.8. 状态扩展

As defined in [XMPP-CORE], an XMPP presence stanza may contain "extended" content in any namespace in order to supplement or extend the semantics of the core presence stanza. With the exception of extended information qualified by the 'urn:ietf:params:xml:ns:xmpp-e2e' namespace as defined in [XMPP-E2E], an XMPP-CPIM gateway SHOULD ignore such information and not pass it through the gateway to the intended recipient. No mapping for such information is defined.

如[XMPP-CORE]中所定义,XMPP呈现节可以在任何名称空间中包含“扩展”内容,以补充或扩展核心呈现节的语义。除[xmpp-e2e]中定义的“urn:ietf:params:xml:ns:xmpp-e2e”命名空间限定的扩展信息外,xmpp-CPIM网关应忽略此类信息,而不应通过网关将其传递给预期收件人。未定义此类信息的映射。

5.1.9. Gateway-Generated CPIM and PIDF Syntax
5.1.9. 网关生成的CPIM和PIDF语法
5.1.9.1. CPIM Message Headers
5.1.9.1. CPIM消息头

CPIM specifies the existence of "Message/CPIM" headers in addition to those described above, but there is no exact analogue for those headers in the core XMPP specifications. These include:

CPIM除了上面描述的那些头之外,还指定了“Message/CPIM”头的存在,但是在核心XMPP规范中没有这些头的精确模拟。这些措施包括:

o cc -- specifies the address of an entity that is to receive a "courtesy copy" of the presence information (i.e., a non-primary addressee)

o cc——指定接收状态信息“礼节副本”的实体(即非主要收件人)的地址

o DateTime -- specifies the datetime at which the presence information was sent

o DateTime--指定发送状态信息的日期时间

o NS -- specifies the namespace of a feature extension

o NS—指定功能扩展的命名空间

o Subject -- specifies the subject or topic of the encapsulated "Message/CPIM" object

o 主题——指定封装的“Message/CPIM”对象的主题

o Require -- specifies mandatory-to-recognize features

o Require--指定识别特征的必需项

An XMPP-CPIM gateway MAY independently generate such headers based on its own information (e.g., the datetime at which it received a presence stanza from an XMPP entity) or based on data encoded in non-core XMPP extensions, but rules for doing so are out of scope for this memo.

XMPP-CPIM网关可以基于自己的信息(例如,它从XMPP实体接收到状态节的日期时间)或基于非核心XMPP扩展中编码的数据独立地生成这样的报头,但这样做的规则不在本备忘录的范围内。

5.1.9.2. PIDF Elements
5.1.9.2. PIDF元素

PIDF specifies the existence of XML elements in addition to those described above, but there is no exact analogue for those XML elements in the core XMPP specifications. These include:

PIDF除了上面描述的XML元素外,还指定了XML元素的存在,但是在核心XMPP规范中,这些XML元素没有精确的相似性。这些措施包括:

o <contact/> -- specifies an address (e.g., an im:, tel:, or mailto: URI) at which one may communicate with the presentity; an XMPP-CPIM gateway MAY include this element, in which case it SHOULD set its value to the <user@host> of the XMPP sender, prepended by the "im:" Instant Messaging URI scheme.

o <contact/>——指定一个地址(例如,im:、电话:、或mailto:URI),在该地址可以与实体进行通信;XMPP-CPIM网关可能包含此元素,在这种情况下,它应将其值设置为<user@host>由“im:”即时消息URI方案预先设置的XMPP发送方的。

o <timestamp/> -- specifies the datetime at which the presence information was sent; an XMPP-CPIM gateway MAY independently generate this element based on its own information (e.g., the datetime at which it received the presence stanza from an XMPP entity) or based on data encoded in non-core XMPP extensions, but rules for doing so are out of scope for this memo.

o <timestamp/>——指定发送状态信息的日期时间;XMPP-CPIM网关可以基于其自身的信息(例如,它从XMPP实体接收到状态节的日期时间)或基于非核心XMPP扩展中编码的数据独立生成此元素,但这样做的规则不在本备忘录的范围内。

5.2. Presence Syntax Mapping from CPIM Specifications to XMPP
5.2. 从CPIM规范到XMPP的存在语法映射

This section defines the mapping of syntax primitives from "Message/CPIM" objects with encapsulated "application/pidf+xml" objects to XMPP presence stanzas.

本节定义了语法原语从带有封装的“application/pidf+xml”对象的“Message/CPIM”对象到XMPP presence节的映射。

Note: An XMPP-CPIM gateway MUST NOT map to an XMPP presence stanza a "Message/CPIM" object whose encapsulated MIME object has a Content-type other than "application/pidf+xml" (with the exception of multi-part MIME objects as specified in [XMPP-E2E]).

注意:XMPP-CPIM网关不得将其封装的MIME对象的内容类型不是“应用程序/pidf+xml”的“消息/CPIM”对象映射到XMPP存在节(在[XMPP-E2E]中指定的多部分MIME对象除外)。

5.2.1. From Address
5.2.1. 发件人地址
   The 'From' header of a "Message/CPIM" object maps to the <user@host>
   portion of the 'from' attribute of an XMPP presence stanza, and the
   'id' attribute of the PIDF <tuple/> child element maps to the
   resource identifier portion XMPP 'from' attribute.  Therefore, to map
   the CPIM and PIDF information to the XMPP 'from' attribute, the
        
   The 'From' header of a "Message/CPIM" object maps to the <user@host>
   portion of the 'from' attribute of an XMPP presence stanza, and the
   'id' attribute of the PIDF <tuple/> child element maps to the
   resource identifier portion XMPP 'from' attribute.  Therefore, to map
   the CPIM and PIDF information to the XMPP 'from' attribute, the
        

gateway MUST remove the "im:" Instant Messaging URI scheme from the front of the address and MUST remove the CPIM "Formal-name" (if provided) in order to generate the <user@host> portion of the XMPP 'from' attribute, then add a '/' character followed by the value of the PIDF <tuple/> element's 'id' attribute.

网关必须从地址前面删除“im:”即时消息URI方案,并且必须删除CPIM“正式名称”(如果提供),以便生成<user@host>部分XMPP'from'属性,然后添加一个“/”字符,后跟PIDF<tuple/>元素的'id'属性的值。

Example: From Address Mapping

示例:来自地址映射

   CPIM 'From' header
     From: Romeo Montague <im:romeo@example.net>
        
   CPIM 'From' header
     From: Romeo Montague <im:romeo@example.net>
        
   XMPP 'from' attribute
     <presence from='romeo@example.net'>
       ...
     </presence>
        
   XMPP 'from' attribute
     <presence from='romeo@example.net'>
       ...
     </presence>
        

Example: Resource Identifier Mapping

示例:资源标识符映射

   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   XMPP 'from' attribute
     <presence from='juliet@example.com/balcony'>
       ...
     </presence>
        
   PIDF 'id' for <tuple/>
     <presence entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
       </tuple>
     </presence>
        
   PIDF 'id' for <tuple/>
     <presence entity='pres:juliet@example.com'>
       <tuple id='balcony'>
         ...
       </tuple>
     </presence>
        
5.2.2. To Address
5.2.2. 解决

The 'To' header of a "Message/CPIM" object maps to the 'to' attribute of an XMPP presence stanza. To map the CPIM 'To' header to the XMPP 'to' attribute, the gateway MUST remove the "im:" Instant Messaging URI scheme from the front of the address and MUST remove the CPIM "Formal-name" (if provided). If the gateway possesses knowledge of the resource identifier in use by the XMPP entity, the gateway MAY append the resource identifier to the address.

“Message/CPIM”对象的“To”头映射到XMPP状态节的“To”属性。要将CPIM“To”头映射到XMPP“To”属性,网关必须从地址前面删除“im:”即时消息URI方案,并且必须删除CPIM“正式名称”(如果提供)。如果网关拥有XMPP实体正在使用的资源标识符的知识,则网关可以将资源标识符附加到地址。

Example: To Address Mapping

示例:解决映射问题

   CPIM 'To' header
     To: Juliet Capulet <im:juliet@example.com>
        
   CPIM 'To' header
     To: Juliet Capulet <im:juliet@example.com>
        
   XMPP 'to' attribute
     <presence to='juliet@example.com/balcony'>
       ...
     </presence>
        
   XMPP 'to' attribute
     <presence to='juliet@example.com/balcony'>
       ...
     </presence>
        
5.2.3. Courtesy Copy
5.2.3. 礼节性副本

The core XMPP specification does not include syntax for specifying a "courtesy copy" (non-primary addressee) for a presence stanza. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated PIDF object that contains a 'cc' header, it SHOULD NOT pass the information contained in that header on to the XMPP recipient.

核心XMPP规范不包括为状态节指定“礼节副本”(非主要收件人)的语法。因此,如果XMPP-CPIM网关接收到包含“cc”头的封装PIDF对象的“Message/CPIM”对象,则不应将该头中包含的信息传递给XMPP收件人。

5.2.4. DateTime Header
5.2.4. 日期时间报头

The core XMPP specification does not include syntax for specifying the datetime at which a presence stanza was sent. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated PIDF object that contains a 'DateTime' header, it SHOULD NOT pass the information contained in that header on to the XMPP recipient.

核心XMPP规范不包括用于指定发送状态节的日期时间的语法。因此,如果XMPP-CPIM网关接收到包含“DateTime”头的封装PIDF对象的“Message/CPIM”对象,则不应将该头中包含的信息传递给XMPP收件人。

5.2.5. Subject Header
5.2.5. 主题标题

An XMPP presence stanza contains no information that can be mapped to the 'Subject' header of a "Message/CPIM" object. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated PIDF object that contains a 'Subject' header, it SHOULD NOT pass the information contained in that header on to the XMPP recipient.

XMPP状态节不包含可映射到“Message/CPIM”对象的“Subject”头的信息。因此,如果XMPP-CPIM网关接收到带有包含“主题”头的封装PIDF对象的“消息/CPIM”对象,则不应将该头中包含的信息传递给XMPP收件人。

5.2.6. Header Extensions
5.2.6. 标题扩展

"Message/CPIM" objects MAY include an optional 'NS' header to specify the namespace of a feature extension. An XMPP-CPIM gateway MUST NOT pass such headers through to the XMPP recipient, and no mapping for such headers is defined.

“Message/CPIM”对象可能包括可选的“NS”头,用于指定功能扩展的命名空间。XMPP-CPIM网关不得将此类头传递给XMPP收件人,并且未定义此类头的映射。

5.2.7. Require Header
5.2.7. 需要标题

"Message/CPIM" objects MAY include an optional 'Require' header to specify mandatory-to-recognize features. An XMPP-CPIM gateway MUST NOT pass such headers through to the XMPP recipient, and no mapping for such headers is defined.

“消息/CPIM”对象可能包括一个可选的“Require”标题,用于指定识别特征的必需项。XMPP-CPIM网关不得将此类头传递给XMPP收件人,并且未定义此类头的映射。

5.2.8. MIME Content-ID
5.2.8. MIME内容ID

XMPP does not include an element or attribute that captures a globally unique ID as is defined for the Content-ID MIME header as specified in [MIME]. If an XMPP-CPIM gateway receives a MIME object that includes a Content-ID, it MAY provide the Content-ID as the value of the presence stanza's 'id' attribute, but this is OPTIONAL.

XMPP不包括捕获全局唯一ID的元素或属性,该ID是为[MIME]中指定的内容ID MIME头定义的。如果XMPP-CPIM网关接收到包含内容ID的MIME对象,它可能会提供该内容ID作为状态节的“ID”属性的值,但这是可选的。

Example: Content-ID for Encapsulated Object

示例:封装对象的内容ID

   MIME header
     Content-ID: <123456789@example.net>
        
   MIME header
     Content-ID: <123456789@example.net>
        
   XMPP 'id' attribute (OPTIONAL)
     <presence id='123456789@example.net'>
       ...
     </presence>
        
   XMPP 'id' attribute (OPTIONAL)
     <presence id='123456789@example.net'>
       ...
     </presence>
        
5.2.9. Basic Presence Status
5.2.9. 基本存在状态

The basic presence status types defined in PIDF are OPEN and CLOSED. The PIDF basic presence status of OPEN maps to an XMPP presence stanza that possesses no 'type' attribute (indicating default availability). The PIDF basic presence status of CLOSED maps to an XMPP presence stanza that possesses a 'type' attribute with a value of "unavailable".

PIDF中定义的基本状态类型为打开和关闭。OPEN的PIDF基本状态映射到不具有“type”属性(表示默认可用性)的XMPP状态节。关闭状态的PIDF基本状态映射到XMPP状态节,该状态节具有值为“unavailable”的“type”属性。

Example: OPEN Presence

例如:公开露面

   PIDF basic presence (OPEN)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
         </status>
       </tuple>
     </presence>
        
   PIDF basic presence (OPEN)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
         </status>
       </tuple>
     </presence>
        
   XMPP available presence
     <presence from='romeo@example.net/orchard'/>
        
   XMPP available presence
     <presence from='romeo@example.net/orchard'/>
        

Example: CLOSED Presence

示例:封闭式存在

   PIDF basic presence (CLOSED)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>closed</basic>
         </status>
       </tuple>
     </presence>
        
   PIDF basic presence (CLOSED)
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>closed</basic>
         </status>
       </tuple>
     </presence>
        
   XMPP unavailable presence
     <presence from='romeo@example.net/orchard'
               type='unavailable'/>
        
   XMPP unavailable presence
     <presence from='romeo@example.net/orchard'
               type='unavailable'/>
        
5.2.10. Extended Status Information
5.2.10. 扩展状态信息

PIDF documents may contain extended <status/> content. As of this writing there are no pre-defined extended status states that can be mapped to the defined values of the XMPP <show/> element ('away', 'chat', 'dnd', and 'xa'). Once PIDF extensions for such extended status states are defined within the Internet Standards Process, a gateway SHOULD map those extensions; however, any such mapping is out of scope for this memo, since the relevant PIDF extensions have not yet been defined.

PIDF文档可能包含扩展的<status/>内容。在撰写本文时,没有预定义的扩展状态可以映射到XMPP<show/>元素('away'、'chat'、'dnd'和'xa')的定义值。一旦在互联网标准流程中定义了此类扩展状态的PIDF扩展,网关应映射这些扩展;但是,由于尚未定义相关的PIDF扩展,因此任何此类映射都超出了本备忘录的范围。

Example: Extended Status Information (provisional)

示例:扩展状态信息(暂定)

   PIDF extended presence information
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
           <im:im>busy</im:im>
         </status>
       </tuple>
     </presence>
        
   PIDF extended presence information
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
           <im:im>busy</im:im>
         </status>
       </tuple>
     </presence>
        
   XMPP <show/> element
     <presence from='romeo@example.net/orchard'>
       <show>dnd</show>
     </presence>
        
   XMPP <show/> element
     <presence from='romeo@example.net/orchard'>
       <show>dnd</show>
     </presence>
        
5.2.11. Note Element
5.2.11. 注释元素

A PIDF <tuple/> element may contain a <note/> child that provides a user-defined, natural-language description of the sender's detailed availability state. The PIDF <note/> element maps to the XMPP <status/> element.

PIDF<tuple/>元素可能包含一个子元素,该子元素提供发送方详细可用性状态的用户定义的自然语言描述。PIDF<note/>元素映射到XMPP<status/>元素。

Example: Note Element

示例:Note元素

   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
           <im:im>busy</im:im>
         </status>
         <note>Wooing Juliet</note>
       </tuple>
     </presence>
        
   PIDF <note/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               xmlns:im='urn:ietf:params:xml:ns:pidf:im'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         <status>
           <basic>open</basic>
           <im:im>busy</im:im>
         </status>
         <note>Wooing Juliet</note>
       </tuple>
     </presence>
        
   XMPP <status/> element
     <presence from='romeo@example.net/orchard'>
       <show>dnd</show>
       <status>Wooing Juliet</status>
     </presence>
        
   XMPP <status/> element
     <presence from='romeo@example.net/orchard'>
       <show>dnd</show>
       <status>Wooing Juliet</status>
     </presence>
        

A PIDF document with zero tuples MAY contain one or more <note/> elements as direct children of the PIDF <presence/> element. There is no mapping of such a PIDF document to an XMPP presence stanza; an entity on the non-XMPP side of an XMPP-CPIM gateway SHOULD NOT send such a PIDF document to an XMPP recipient if possible, and an XMPP-CPIM gateway MUST NOT map such a PIDF document to an XMPP presence stanza (see Zero Resources (Section 6.3.2)).

具有零元组的PIDF文档可以包含一个或多个<note/>元素作为PIDF<presence/>元素的直接子元素。没有将这样的PIDF文档映射到XMPP存在节;如果可能,XMPP-CPIM网关非XMPP端的实体不应将此类PIDF文档发送给XMPP收件人,并且XMPP-CPIM网关不得将此类PIDF文档映射到XMPP存在节(请参阅零资源(第6.3.2节))。

5.2.12. Contact Element
5.2.12. 接触元件
   A PIDF document may contain a <contact/> element specifying the URI
   of an address at which the principal can be contacted (e.g., an im:,
   tel:, or mailto: URI).  The core XMPP specification does not include
   syntax for specifying the URI of a contact address, since the contact
   address is implicit in the 'from' attribute of the XMPP presence
   stanza.  Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM"
   object with encapsulated PIDF object that contains a <contact/>
        
   A PIDF document may contain a <contact/> element specifying the URI
   of an address at which the principal can be contacted (e.g., an im:,
   tel:, or mailto: URI).  The core XMPP specification does not include
   syntax for specifying the URI of a contact address, since the contact
   address is implicit in the 'from' attribute of the XMPP presence
   stanza.  Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM"
   object with encapsulated PIDF object that contains a <contact/>
        

element, it SHOULD NOT pass the XML character data of the <contact/> element on to the XMPP recipient. (However, see Inclusion of Complete PIDF Document (Section 5.2.15) below.)

元素,它不应将<contact/>元素的XML字符数据传递给XMPP收件人。(但是,请参见以下完整的PIDF文件(第5.2.15节)的内容。)

Example: PIDF Contact Element

示例:PIDF接触元素

   PIDF <contact/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         ...
         <contact>im:romeo@example.net</contact>
       </tuple>
     </presence>
        
   PIDF <contact/> element
     <?xml version='1.0' encoding='UTF-8'?>
     <presence xmlns='urn:ietf:params:xml:ns:pidf'
               entity='pres:romeo@example.net'>
       <tuple id='orchard'>
         ...
         <contact>im:romeo@example.net</contact>
       </tuple>
     </presence>
        
   XMPP presence stanza
     <presence from='romeo@example.net/orchard'/>
        
   XMPP presence stanza
     <presence from='romeo@example.net/orchard'/>
        
5.2.13. Presence Priority
5.2.13. 存在优先级

The <contact/> child of the PIDF <tuple/> element MAY possess a 'priority' attribute whose value is a decimal number between zero and one (with a maximum of three decimal places). The value of this attribute MAY be mapped to the <priority/> child element of an XMPP presence stanza. An XMPP-CPIM gateway MUST NOT map PIDF priority values to negative values of the XMPP <priority/> element. If an XMPP-CPIM gateway maps these values, it SHOULD treat PIDF priority='0' as XMPP <priority>0</priority> and PIDF priority='1' as <priority>127</priority>, mapping intermediate values appropriately so that they are unique (e.g., PIDF priorities between 0.001 and 0.007 to XMPP priority 1, PIDF priorities between 0.008 and 0.015 to XMPP priority 2, and so on up through mapping PIDF priorities between 0.992 and 0.999 to XMPP priority 126; note that this is an example only, and that the exact mapping shall be determined by the XMPP-CPIM gateway).

PIDF<tuple/>元素的<contact/>子元素可能拥有一个“priority”属性,该属性的值是介于0和1之间的十进制数(最多有三位小数)。该属性的值可以映射到XMPP presence节的<priority/>子元素。XMPP-CPIM网关不得将PIDF优先级值映射到XMPP<priority/>元素的负值。如果XMPP-CPIM网关映射这些值,它应该将PIDF priority='0'视为XMPP<priority>0</priority>,将PIDF priority='1'视为<priority>127</priority>,适当地映射中间值,以使它们是唯一的(例如,通过将0.992和0.999之间的PIDF优先级映射到XMPP优先级126,将0.001和0.007之间的PIDF优先级映射到XMPP优先级1,将0.008和0.015之间的PIDF优先级映射到XMPP优先级2,依此类推;请注意,这只是一个示例,确切的映射应由XMPP-CPIM网关确定)。

5.2.14. Timestamp Element
5.2.14. 时间戳元素

The core XMPP specification does not include syntax for specifying the datetime or timestamp at which a presence stanza was sent. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated PIDF object that contains a <timestamp/> element, it SHOULD NOT pass the XML character data of the <timestamp/> element on to the XMPP recipient.

核心XMPP规范不包括用于指定发送状态节的日期时间或时间戳的语法。因此,如果XMPP-CPIM网关接收到包含<timestamp/>元素的封装PIDF对象的“Message/CPIM”对象,则不应将<timestamp/>元素的XML字符数据传递给XMPP接收方。

5.2.15. Inclusion of Complete PIDF Document
5.2.15. 包含完整的PIDF文件

Certain PIDF elements do not map to XMPP presence stanza syntax (e.g., the XML character data of the <contact/> element). However, an XMPP client may be able to handle such information by parsing a native PIDF document. To make this possible, an XMPP-CPIM gateway MAY include the complete PIDF document as a child element of the presence stanza, as described in [XMPP-PIDF]. If an XMPP client does not understand this extended data, it naturally MUST ignore it.

某些PIDF元素不映射到XMPP presence节语法(例如,<contact/>元素的XML字符数据)。但是,XMPP客户机可以通过解析本地PIDF文档来处理此类信息。为了实现这一点,XMPP-CPIM网关可以包括完整的PIDF文档作为状态节的子元素,如[XMPP-PIDF]中所述。如果XMPP客户机不理解此扩展数据,它自然必须忽略它。

6. XMPP-CPIM Gateway as Presence Service
6. XMPP-CPIM网关作为状态服务

[CPP] defines semantics for an abstract presence service. An XMPP-CPIM gateway MAY function as such a presence service, and if so an XMPP entity can use defined XMPP syntax to interact with the gateway's presence service. Because [PIDF] does not specify syntax for semantic operations such as subscribe, this section defines only the XMPP interactions with the presence service offered by an XMPP-CPIM gateway, not the translation of such XMPP syntax into PIDF. (Note: Detailed information about XMPP presence services can be found in [XMPP-IM]; as much as possible, an XMPP-CPIM gateway SHOULD implement the syntax, semantics, and server business rules defined therein.)

[CPP]定义抽象状态服务的语义。XMPP-CPIM网关可以作为这样的存在服务运行,如果是这样,XMPP实体可以使用定义的XMPP语法与网关的存在服务交互。由于[PIDF]没有为诸如订阅之类的语义操作指定语法,因此本节仅定义XMPP与XMPP-CPIM网关提供的状态服务的交互,而不是将此类XMPP语法转换为PIDF。(注意:有关XMPP状态服务的详细信息可在[XMPP-IM]中找到;XMPP-CPIM网关应尽可能实现其中定义的语法、语义和服务器业务规则。)

6.1. Requesting a Subscription
6.1. 请求订阅

If an XMPP entity wants to subscribe to the presence information of a non-XMPP presentity through an XMPP-CPIM gateway, it MUST send a presence stanza of type "subscribe" to the target presentity. The syntax mapping is as follows:

如果XMPP实体希望通过XMPP-CPIM网关订阅非XMPP实体的状态信息,则必须向目标实体发送“订阅”类型的状态节。语法映射如下所示:

o The XMPP 'from' attribute (user@host) MUST be mapped to the CPP "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway MUST append the "pres:" Presence URI scheme to the front of the address.

o XMPP的“from”属性(user@host)必须映射到CPP“观察者参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案附加到地址的前面。

o The XMPP 'to' attribute (user@host) MUST be mapped to the CPP "target parameter" field (pres:user@host). The XMPP-CPIM gateway MUST append the "pres:" Presence URI scheme to the front of the address.

o XMPP的“to”属性(user@host)必须映射到CPP“目标参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案附加到地址的前面。

o There is no XMPP mapping for the CPP "duration parameter", since XMPP subscriptions are active until they have been explicitly "unsubscribed".

o CPP“duration参数”没有XMPP映射,因为XMPP订阅在被显式“取消订阅”之前是活动的。

o The XMPP 'id' attribute SHOULD be mapped to the CPP "TransID" field.

o XMPP“id”属性应映射到CPP“TransID”字段。

If the target presentity approves the subscription request (through whatever protocol it uses to interact with the gateway), the XMPP-CPIM gateway MUST return a presence stanza of type "subscribed" to the XMPP entity and notify the XMPP entity of the target's current available presence. Thereafter, until the subscription is cancelled, the gateway MUST notify the subscribing XMPP entity every time the target's presence information changes.

如果目标实体批准订阅请求(通过其用于与网关交互的任何协议),XMPP-CPIM网关必须向XMPP实体返回类型为“subscribed”的状态节,并将目标当前可用状态通知XMPP实体。此后,在取消订阅之前,网关必须在每次目标的状态信息更改时通知订阅XMPP实体。

If the target presentity denies the subscription request, the XMPP-CPIM gateway MUST return a presence stanza of type "unsubscribed" to the XMPP entity and MUST NOT invoke the notify operation.

如果目标呈现实体拒绝订阅请求,XMPP-CPIM网关必须向XMPP实体返回类型为“unsubscribed”的呈现节,并且不得调用notify操作。

In addition to the approval and denial cases, one of the following exceptions may occur:

除批准和拒绝情况外,还可能出现以下例外情况之一:

o The target parameter (XMPP "to" address) does not refer to a valid presentity; if this exception occurs, the XMPP-CPIM gateway MUST return an <item-not-found/> stanza error to the XMPP entity.

o 目标参数(XMPP“to”address)未引用有效的存在实体;如果发生此异常,XMPP-CPIM网关必须向XMPP实体返回<item not found/>节错误。

o Access control rules do not permit the entity to subscribe to the target; if this exception occurs, the XMPP-CPIM gateway MUST return a <forbidden/> stanza error to the XMPP entity.

o 访问控制规则不允许实体订阅目标;如果发生此异常,XMPP-CPIM网关必须向XMPP实体返回一个<forbidden/>节错误。

o There exists a pre-existing subscription or in-progress subscribe operation between the XMPP entity and the target presentity; if this exception occurs, the XMPP-CPIM gateway SHOULD return a <conflict/> stanza error to the XMPP entity.

o XMPP实体和目标实体之间存在预先存在的订阅或正在进行的订阅操作;如果发生此异常,XMPP-CPIM网关应向XMPP实体返回<conflict/>节错误。

XMPP services assume that a subscription is active until it is explicitly terminated. However, non-XMPP services may implement subscriptions of limited duration, which must be periodically refreshed in order to mimic the permanence of XMPP subscriptions. Therefore, an XMPP-to-CPIM gateway may need to send such refreshes to the non-XMPP entity on behalf of the XMPP entity to that the subscription does not expire. Whether such refreshes are necessary depends on the native protocol implemented by the CPIM-aware non-XMPP service to which the gateway is translating.

XMPP服务假定订阅在显式终止之前处于活动状态。但是,非XMPP服务可以实现有限持续时间的订阅,必须定期刷新,以模拟XMPP订阅的持久性。因此,XMPP到CPIM网关可能需要代表XMPP实体向非XMPP实体发送此类刷新,以确保订阅不会过期。是否需要进行此类刷新取决于网关正在转换到的支持CPIM的非XMPP服务所实现的本机协议。

6.2. Receiving a Subscription Request
6.2. 接收订阅请求

If a non-XMPP presentity wants to subscribe to the presence information of an XMPP entity through an XMPP-CPIM gateway, it MUST use whatever protocol it uses to interact with the gateway in order to request the subscription; subject to local access rules, the gateway MUST then send a presence stanza of type "subscribe" to the XMPP entity from the non-XMPP watcher. The syntax mapping is as follows:

如果非XMPP实体希望通过XMPP-CPIM网关订阅XMPP实体的状态信息,则必须使用其用于与网关交互的任何协议来请求订阅;根据本地访问规则,网关必须从非XMPP观察者向XMPP实体发送“订阅”类型的状态节。语法映射如下所示:

o The CPP "watcher parameter" field (pres:user@host) MUST be mapped to the XMPP 'from' attribute (user@host). The XMPP-CPIM gateway MUST remove the "pres:" Presence URI scheme from the front of the address.

o CPP“观察者参数”字段(压力:user@host)必须映射到XMPP“from”属性(user@host). XMPP-CPIM网关必须从地址前面删除“pres:”状态URI方案。

o The CPP "target parameter" field (pres:user@host) MUST be mapped to the XMPP 'to' attribute (user@host). The XMPP-CPIM gateway MUST remove the "pres:" Presence URI scheme from the front of the address.

o CPP“目标参数”字段(压力:user@host)必须映射到XMPP“to”属性(user@host). XMPP-CPIM网关必须从地址前面删除“pres:”状态URI方案。

o There is no XMPP mapping for the CPP "duration parameter", since XMPP subscriptions are active until they have been explicitly "unsubscribed".

o CPP“duration参数”没有XMPP映射,因为XMPP订阅在被显式“取消订阅”之前是活动的。

o The CPP "TransID" field SHOULD be mapped to the XMPP 'id' attribute.

o CPP“TransID”字段应映射到XMPP“id”属性。

If the target XMPP entity approves the subscription request, it MUST send a presence stanza of type "subscribed" to the watcher presentity. The XMPP-CPIM gateway MUST then notify the watcher presentity of the target XMPP entity's current available presence. Thereafter, until the subscription is cancelled, the gateway MUST notify the watcher presentity every time the target's presence information changes.

如果目标XMPP实体批准订阅请求,它必须向观察者呈现实体发送类型为“subscribed”的呈现节。然后,XMPP-CPIM网关必须将目标XMPP实体的当前可用状态通知观察者实体。此后,在取消订阅之前,网关必须在每次目标的状态信息更改时通知观察者状态实体。

If the target XMPP entity denies the subscription request, it MUST send a presence stanza of type "unsubscribed" to the watcher presentity. The XMPP-CPIM gateway MUST NOT invoke the notify operation.

如果目标XMPP实体拒绝订阅请求,则必须向观察者呈现实体发送类型为“unsubscribed”的呈现节。XMPP-CPIM网关不能调用notify操作。

In addition to the approval and denial cases, one of the following exceptions MAY occur:

除批准和拒绝情况外,还可能出现以下例外情况之一:

o The target parameter (XMPP "to" address) does not refer to a valid XMPP entity

o 目标参数(XMPP“to”address)未引用有效的XMPP实体

o Access control rules do not permit the watcher presentity to subscribe to the target XMPP entity

o 访问控制规则不允许观察者实体订阅目标XMPP实体

o There exists a pre-existing subscription or in-progress subscribe operation between the watcher presentity and the target XMPP entity

o 观察者存在实体和目标XMPP实体之间存在预先存在的订阅或正在进行的订阅操作

If any of these exceptions occurs, the XMPP-CPIM gateway MUST inform the watcher presentity of failure.

如果出现上述任何异常,XMPP-CPIM网关必须将故障通知观察者实体。

XMPP services assume that a subscription is active until it is explicitly terminated. With the exception of handling duration parameters whose value is zero, handling duration parameters will be highly dependent on the implementation and requirements of the XMPP-CPIM gateway. Since there are no explicit requirements for supporting a "duration parameter" specified in either [IMP-MODEL] or [IMP-REQS], duration parameter mapping is a local issue that falls outside the scope of this memo. However, an XMPP-CPIM gateway MAY keep track of the duration parameter if received from an entity on the non-XMPP service and delete the subscription after that duration parameter expires.

XMPP服务假定订阅在显式终止之前处于活动状态。除值为零的处理持续时间参数外,处理持续时间参数将高度依赖于XMPP-CPIM网关的实现和要求。由于没有明确要求支持[IMP-MODEL]或[IMP-REQS]中指定的“持续时间参数”,因此持续时间参数映射是一个本地问题,不属于本备忘录的范围。但是,如果从非XMPP服务上的实体接收到持续时间参数,XMPP-CPIM网关可能会跟踪该参数,并在该持续时间参数过期后删除订阅。

6.3. The Notify Operation
6.3. 通知操作

An XMPP-CPIM gateway invokes the CPP "notify operation" whenever the presence information associated with an XMPP entity or CPP presentity changes and there are subscribers to that information on the other side of the gateway. The syntax mapping for presence information related to a notify operation is defined under Mapping for Presence (Section 5).

当与XMPP实体或CPP存在实体相关联的存在信息发生变化且网关另一端有该信息的订户时,XMPP-CPIM网关调用CPP“通知操作”。与notify操作相关的状态信息的语法映射在状态映射(第5节)下定义。

6.3.1. Multiple Resources
6.3.1. 多种资源

Semantically, PIDF contains the notion of multiple presence "tuples". Normally, a PIDF document will contain at least one tuple but MAY contain more than one tuple (or zero tuples, for which see next section). In the terminology of XMPP, each tuple would map to presence information for a separate resource. However, XMPP does not include the ability to send presence information about more than one resource at a time, since the resource that generates the presence information is contained in the 'from' address of a presence stanza. Therefore, an XMPP-CPIM gateway that acts as a presence service SHOULD split a PIDF document that contains multiple tuples into multiple XMPP presence stanzas, and SHOULD generate only one PIDF document (with multiple tuples) if an XMPP user currently has multiple connected resources.

从语义上讲,PIDF包含多个存在“元组”的概念。通常,PIDF文档将至少包含一个元组,但可能包含多个元组(或零元组,请参见下一节)。在XMPP术语中,每个元组将映射到单独资源的状态信息。但是,XMPP不包括一次发送多个资源的状态信息的功能,因为生成状态信息的资源包含在状态节的“发件人”地址中。因此,充当状态服务的XMPP-CPIM网关应将包含多个元组的PIDF文档拆分为多个XMPP状态节,并且如果XMPP用户当前有多个连接的资源,则应仅生成一个PIDF文档(具有多个元组)。

In the interest of not multiplying XMPP stanzas beyond necessity, an XMPP-CPIM gateway SHOULD generate an XMPP presence stanza only if the presence information contained in a PIDF tuple communicates a change in the availability status of the device or application associated with that tuple ID.

为了不在必要的情况下增加XMPP节,XMPP-CPIM网关应仅在包含在PIDF元组中的存在信息传达与该元组ID相关联的设备或应用程序的可用性状态的变化时生成XMPP存在节。

In the interest of complying with the PIDF recommendation to provide information about multiple "resources" in multiple tuples rather than in multiple PIDF documents, an XMPP-CPIM gateway SHOULD include

为了遵守PIDF建议,在多元组中而不是在多个PIDF文档中提供有关多个“资源”的信息,XMPP-CPIM网关应包括

information about all of an XMPP user's resources in one PIDF document (with one tuple for each resource), even if the availability status of only one resource has changed.

关于一个PIDF文档中XMPP用户所有资源的信息(每个资源有一个元组),即使只有一个资源的可用性状态已更改。

6.3.2. Zero Resources
6.3.2. 零资源

A PIDF document may contain zero tuples. For example:

PIDF文档可能包含零元组。例如:

PIDF Document with Zero Tuples

具有零元组的PIDF文档

     <presence entity='pres:juliet@example.com'
               xmlns='urn:ietf:params:xml:ns:pidf'/>
        
     <presence entity='pres:juliet@example.com'
               xmlns='urn:ietf:params:xml:ns:pidf'/>
        

Because (1) the 'entity' attribute of a PIDF <presence/> element maps to the <user@host> portion of an XMPP address and (2) the 'id' attribute of a PIDF <tuple/> element maps to the resource identifier portion of an XMPP address, a PIDF document that contains zero tuples would provide presence information about a <user@host> rather than a <user@host/resource> when mapped to XMPP. Although the notion of presence notifications about a mere user rather than one of the user's resources is nearly meaningless in the XMPP context, an XMPP-CPIM gateway SHOULD map a PIDF document with zero tuples to an XMPP presence stanza whose 'from' address is the user@host of the non-XMPP entity. However, an XMPP-CPIM gateway MUST NOT generate a PIDF document with zero <tuple/> children when receiving a presence stanza from an XMPP entity (i.e., all PIDF documents communicated by the gateway to a non-XMPP service MUST contain at least one <tuple/> element).

因为(1)PIDF<presence/>元素的“entity”属性映射到<user@host>XMPP地址的一部分和(2)PIDF<tuple/>元素的“id”属性映射到XMPP地址的资源标识符部分,包含零元组的PIDF文档将提供有关<user@host>而不是<user@host/资源>映射到XMPP时。尽管在XMPP上下文中,关于一个用户而不是一个用户资源的状态通知的概念几乎毫无意义,但XMPP-CPIM网关应该将具有零元组的PIDF文档映射到“from”地址为user@host非XMPP实体的。但是,当从XMPP实体接收到状态节时,XMPP-CPIM网关不得生成包含零<tuple/>子级的PIDF文档(即,网关与非XMPP服务通信的所有PIDF文档必须至少包含一个<tuple/>元素)。

6.4. Unsubscribing
6.4. 退订

If an XMPP entity wants to unsubscribe from the presence of a non-XMPP presentity through an XMPP-CPIM gateway, it MUST send a presence stanza of type "unsubscribe" to the target presentity. The syntax mapping is as follows:

如果XMPP实体希望通过XMPP-CPIM网关从非XMPP实体的状态中取消订阅,则必须向目标实体发送“取消订阅”类型的状态节。语法映射如下所示:

o The XMPP 'from' attribute (user@host) MUST be mapped to the CPP "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway MUST append the "pres:" Presence URI scheme to the front of the address.

o XMPP的“from”属性(user@host)必须映射到CPP“观察者参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案附加到地址的前面。

o The XMPP 'to' attribute (user@host) MUST be mapped to the CPP "target parameter" field (pres:user@host). The XMPP-CPIM gateway MUST append the "pres:" Presence URI scheme to the front of the address.

o XMPP的“to”属性(user@host)必须映射到CPP“目标参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案附加到地址的前面。

o The CPP "duration parameter" MUST be set to zero.

o CPP“持续时间参数”必须设置为零。

o The XMPP 'id' attribute SHOULD be mapped to the CPP "TransID" field.

o XMPP“id”属性应映射到CPP“TransID”字段。

If the target parameter (XMPP "to" address) does not refer to a valid presentity, the XMPP-CPIM gateway MUST return an <item-not-found/> stanza error to the XMPP entity.

如果目标参数(XMPP“to”地址)未引用有效的存在实体,XMPP-CPIM网关必须向XMPP实体返回<item not found/>节错误。

Upon receiving the presence stanza of type "unsubscribe" from the XMPP entity, the XMPP-CPIM gateway MUST NOT send further presence notifications to the XMPP entity.

从XMPP实体接收到类型为“unsubscribe”的状态节后,XMPP-CPIM网关不得向XMPP实体发送进一步的状态通知。

6.5. Cancelling a Subscription
6.5. 取消订阅

If an XMPP entity wants to cancel a non-XMPP presentity's subscription to the entity's presence through an XMPP-CPIM gateway, it MUST send a presence stanza of type "unsubscribed" to the target presentity. The syntax mapping is as follows:

如果XMPP实体希望通过XMPP-CPIM网关取消非XMPP实体对实体状态的订阅,则必须向目标实体发送“unsubscribed”类型的状态节。语法映射如下所示:

o The XMPP 'from' attribute (user@host) MUST be mapped to the CPP "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway MUST add the "pres:" Presence URI scheme to the front of the address.

o XMPP的“from”属性(user@host)必须映射到CPP“观察者参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案添加到地址的前面。

o The XMPP 'to' attribute (user@host) MUST be mapped to the CPP "target parameter" field (pres:user@host). The XMPP-CPIM gateway MUST add the "pres:" Presence URI scheme to the front of the address. o The CPP "duration parameter" MUST be set to zero.

o XMPP的“to”属性(user@host)必须映射到CPP“目标参数”字段(压力:user@host). XMPP-CPIM网关必须将“pres:”状态URI方案添加到地址的前面。o CPP“持续时间参数”必须设置为零。

o The XMPP 'id' attribute SHOULD be mapped to the CPP "TransID" field.

o XMPP“id”属性应映射到CPP“TransID”字段。

Upon receiving the presence stanza of type "unsubscribed" from the XMPP entity, the XMPP-CPIM gateway MUST NOT send further presence notifications to the watcher presentity.

从XMPP实体接收到类型为“unsubscribed”的状态节后,XMPP-CPIM网关不得向观察者状态实体发送进一步的状态通知。

7. Security Considerations
7. 安全考虑

Detailed security considerations for instant messaging and presence protocols are given in [IMP-REQS], specifically in Sections 5.1 through 5.4.

[IMP-REQS]中给出了即时消息和状态协议的详细安全注意事项,特别是第5.1至5.4节。

This document specifies methods for exchanging instant messages and presence information through a gateway that implements [CPIM] and [CPP]. Such a gateway MUST be compliant with the minimum security requirements of the instant messaging and presence protocols with which it interfaces. The introduction of gateways to the security model of instant messaging and presence in RFC 2779 also introduces

本文档指定了通过实现[CPIM]和[CPP]的网关交换即时消息和状态信息的方法。这样的网关必须符合即时消息和与之接口的存在协议的最低安全要求。RFC2779中即时消息和状态安全模型的网关介绍也介绍了

some new risks. In particular, end-to-end security properties (especially confidentiality and integrity) between instant messaging and presence user agents that interface through an XMPP-CPIM gateway can be provided only if common formats are supported; these formats are specified fully in [XMPP-E2E].

一些新的风险。特别是,只有在支持通用格式的情况下,才能提供即时消息和通过XMPP-CPIM网关接口的状态用户代理之间的端到端安全属性(尤其是机密性和完整性);这些格式在[XMPP-E2E]中有详细说明。

8. References
8. 工具书类
8.1. Normative References
8.1. 规范性引用文件

[CPIM] Peterson, J., "Common Profile for Instant Messaging (CPIM)", RFC 3860, August 2004.

[CPIM]Peterson,J.,“即时消息的通用配置文件(CPIM)”,RFC3860,2004年8月。

[CPP] Peterson, J., "Common Profile for Presence (CPP)", RFC 3859, August 2004.

[CPP]Peterson,J.,“存在的共同特征(CPP)”,RFC 38592004年8月。

[IMP-MODEL] Day, M., Rosenberg, J., and H. Sugano, "A Model for Presence and Instant Messaging", RFC 2778, February 2000.

[IMP-MODEL]Day,M.,Rosenberg,J.,和H.Sugano,“状态和即时信息模型”,RFC 27782000年2月。

[IMP-REQS] Day, M., Aggarwal, S., Mohr, G., and J. Vincent, "Instant Messaging / Presence Protocol Requirements", RFC 2779, February 2000.

[IMP-REQS]Day,M.,Aggarwal,S.,Mohr,G.,和J.Vincent,“即时消息/存在协议要求”,RFC 27792000年2月。

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

[MIME]Freed,N.和N.Borenstein,“多用途Internet邮件扩展(MIME)第一部分:Internet邮件正文格式”,RFC 20451996年11月。

[MSGFMT] Klyne, G. and D. Atkins, "Common Presence and Instant Messaging (CPIM): Message Format", RFC 3862, August 2004.

[MSGFMT]Klyne,G.和D.Atkins,“常见状态和即时消息(CPIM):消息格式”,RFC 3862,2004年8月。

[PIDF] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and J. Peterson, "Presence Information Data Format (PIDF)", RFC 3863, August 2004.

[PIDF]Sugano,H.,Fujimoto,S.,Klyne,G.,Batman,A.,Carr,W.,和J.Peterson,“状态信息数据格式(PIDF)”,RFC 38632004年8月。

[STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of Internationalized Strings (stringprep)", RFC 3454, December 2002.

[STRINGPREP]Hoffman,P.和M.Blanchet,“国际化弦的准备(STRINGPREP)”,RFC 3454,2002年12月。

[TERMS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[术语]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[URL-GUIDE] Masinter, L., Alvestrand, H., Zigmond, D., and R. Petke, "Guidelines for new URL Schemes", RFC 2718, November 1999.

[URL-GUIDE]Masinter,L.,Alvestrand,H.,Zigmond,D.,和R.Petke,“新URL方案指南”,RFC 2718,1999年11月。

[US-ASCII] Cerf, V., "ASCII format for network interchange", RFC 20, October 1969.

[US-ASCII]Cerf,V.,“网络交换的ASCII格式”,RFC 20,1969年10月。

[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.

[UTF-8]Yergeau,F.,“UTF-8,ISO 10646的转换格式”,STD 63,RFC 3629,2003年11月。

[XMPP-CORE] Saint-Andre, P., Ed., "Extensible Messaging and Presence Protocol (XMPP): Core", RFC 3920, October 2004.

[XMPP-CORE]Saint Andre,P.,Ed.“可扩展消息和状态协议(XMPP):CORE”,RFC 3920,2004年10月。

[XMPP-E2E] Saint-Andre, P., Ed., "End-to-End Signing and Object Encryption in the Extensible Messaging and Presence Protocol (XMPP)", RFC 3923, October 2004.

[XMPP-E2E]Saint Andre,P.,Ed.“可扩展消息和状态协议(XMPP)中的端到端签名和对象加密”,RFC 39232004年10月。

[XMPP-IM] Saint-Andre (ed.), P., "Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence", RFC 3921, October 2004.

[XMPP-IM]Saint Andre(ed.),P.“可扩展消息传递和状态协议(XMPP):即时消息传递和状态”,RFC 39212004年10月。

8.2. Informative References
8.2. 资料性引用

[RFC2822] Resnick, P., Ed., "Internet Message Format", RFC 2822, April 2001.

[RFC2822]Resnick,P.,Ed.,“互联网信息格式”,RFC 2822,2001年4月。

[MIMETYPES] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.

[MIMETYPES]Freed,N.和N.Borenstein,“多用途Internet邮件扩展(MIME)第二部分:媒体类型”,RFC 20461996年11月。

[XMPP-PIDF] Saint-Andre, P., "Transporting Presence Information Data/Format (PIDF) over the Extensible Messaging and Presence Protocol (XMPP)", Work in Progress, February 2004.

[XMPP-PIDF]Saint Andre,P.,“通过可扩展消息和状态协议(XMPP)传输状态信息数据/格式(PIDF)”,正在进行的工作,2004年2月。

Author's Address

作者地址

Peter Saint-Andre Jabber Software Foundation

Peter Saint Andre Jabbe软件基金会

   EMail: stpeter@jabber.org
        
   EMail: stpeter@jabber.org
        

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (2004).

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

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/S HE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

本文件及其包含的信息是按“原样”提供的,贡献者、其代表或赞助的组织(如有)、互联网协会和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Intellectual Property

知识产权

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the IETF's procedures with respect to rights in IETF Documents can be found in BCP 78 and BCP 79.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关IETF文件中权利的IETF程序信息,请参见BCP 78和BCP 79。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。