CPIM
Click on the red underlined text to get to the source
... framework is commonly called Common Presence and Instant Messaging or
"CPIM". The CPIM family of specifications include a Common Profile
for Instant Messaging [CPIM ...
... Common Presence and Instant Messaging or
"CPIM". The CPIM family of specifications include a Common Profile
for Instant Messaging [CPIM] (also called CPIM ...
... 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 ...
... CPIM), a Common Profile for
Presence [CPP], a CPIM Message Format [MSGFMT], and a Common Presence
Information Data Format [PIDF ...
... 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".)
...
... "the CPIM specifications", whereas the Common Profile for Instant
Messaging is referred to as "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 ...
... 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
...
... between XMPP and a non-XMPP protocol via the CPIM specifications.
Such a gateway is not an intermediate hop on a network ...
... 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
...
... XMPP and a
non-XMPP protocol, where the CPIM specifications define the common
formats into which the protocols are translated for purposes of
interworking ...
...
XMPP and CPIM are distinctly foreign technologies. Therefore, care
must be taken in mapping between XMPP and the abstract syntax defined
...
... must be taken in mapping between XMPP and the abstract syntax defined
by the CPIM specifications.
At root ...
... human user).
The CPIM specifications provide common formats for instant messaging
and presence through two [MIME ...
... and presence through two [MIME] content-types: "Message/CPIM" for
messages ([MSGFMT]) and "application/pidf+xml" for presence ([PIDF ...
... 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
...
... service and a non-XMPP service using a "Message/CPIM"
object as the bearer of encapsulated text content in order to comply
...
... resource binding as defined in [XMPP-CORE]. Thus
an XMPP-CPIM gateway will receive from the sender's XMPP server a
...
... URI scheme to the front of the address, and MAY include a
CPIM "Formal-name" for the sender (if known).
...
... stanza maps to the 'To' header
of a "Message/CPIM" object. In XMPP, the sender SHOULD include a
...
... 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 ...
... URI scheme to the front of the address, and
MAY include a CPIM "Formal-name" for the recipient (if known).
Example: To Address Mapping ...
... 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.
...
... the message. There is no mapping of an XMPP 'type' attribute to a
"Message/CPIM" header, common MIME features, or encapsulated ...
... content. Therefore if an XMPP stanza received by an XMPP-CPIM
gateway possesses a 'type' attribute, the gateway SHOULD ignore the
value provided.
...
... if an XMPP message stanza received by an XMPP-CPIM gateway contains a
<thread/> child element, the gateway ...
... included, it maps to the 'Subject' header of a "Message/CPIM" object.
To map the XMPP <subject ...
... Subject' header of a
"Message/CPIM" object, the gateway SHOULD simply map the XML
character data of the XMPP ...
... 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
...
...
CPIM specifies the existence of "Message/CPIM" headers in addition to
those described above, but there is no exact analogue for those
...
... o Require -- specifies mandatory-to-recognize features
An XMPP-CPIM gateway MAY independently generate such headers based on
its own information (e.g., the datetime ...
...
This section defines the mapping of syntax primitives from
"Message/CPIM" objects with encapsualted text content to XMPP message
stanzas ...
...
The 'From' header of a "Message/CPIM" object maps to the 'from'
attribute of an XMPP message stanza ...
...
The 'To' header of a "Message/CPIM" object maps to the 'to' attribute
of an XMPP message stanza ...
... URI scheme from the front of the address and MUST remove the CPIM
"Formal-name" (if provided). If the gateway ...
... 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 ...
... stanza.
Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object
that contains a 'cc' header, it SHOULD NOT pass the information
...
... datetime at which a message stanza was sent. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object that contains a
'DateTime ...
... stanza was sent. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object that contains a
'DateTime' header ...
... tag" value supplied in the string
';lang=tag' included after the CPIM 'Subject' header name and colon.
...
... header to specify
the namespace of a feature extension. An XMPP-CPIM gateway MUST NOT
pass such headers through to the XMPP ...
...
"Message/CPIM" objects MAY include an optional 'Require' header to
specify mandatory-to-recognize features. In general, such a header ...
... XMPP receiving application rather
than the XMPP-CPIM gateway itself, the gateway cannot properly handle
the 'Require' header ...
... 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
...
... 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
...
... MIME header as
specified in [MIME]. If an XMPP-CPIM gateway receives a MIME object
that includes a Content-ID ...
... 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
...
... 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
...
... 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.
...
... service and a non-XMPP service using a "Message/CPIM"
object as the bearer of an encapsulated [PIDF ...
... XMPP
presence stanzas to "Message/CPIM" objects with encapsulated
"application/pidf+xml" objects.
...
... encapsulated MIME
object generated by an XMPP-CPIM gateway for presence information
MUST set the 'Content-type' header ...
... presence stanza maps to the 'From'
header of a "Message/CPIM" object. In XMPP, the sender's server
...
... resource binding as defined in [XMPP-CORE]. Thus
an XMPP-CPIM gateway will receive from the sender's XMPP server a
...
... URI scheme to the front of the address, and MAY
include a CPIM "Formal-name" for the sender (if known).
...
... presence stanza maps to the 'To' header
of a "Message/CPIM" object. In XMPP, the sender MAY include a 'to'
...
... address by
the sender's server). Thus an XMPP-CPIM gateway will receive from
the sender's XMPP ...
... presence stanza to the 'To' header of a
"Message/CPIM" object, the gateway MUST remove the resource
identifier ...
... Instant Messaging URI
scheme to the front of the address, and MAY include a CPIM
"Formal-name" for the recipient (if known).
...
... 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.
...
... probe for current presence; mappings for these other presence types
are defined under XMPP-CPIM Gateway as Presence Service (Section 6).
...
... 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 ...
... priority 0.992;
note that this is an example only, and that the exact mapping shall
be determined by the XMPP-CPIM gateway).
Example: Presence Priority ...
... 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
...
... CPIM Message Headers ...
...
CPIM specifies the existence of "Message/CPIM" headers in addition to
those described above, but there is no exact analogue for those
...
... subject or topic of the encapsulated
"Message/CPIM" object
o Require -- specifies mandatory-to-recognize features
...
... o Require -- specifies mandatory-to-recognize features
An XMPP-CPIM gateway MAY independently generate such headers based on
its own information (e.g., the datetime ...
... 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 ...
... 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
...
...
This section defines the mapping of syntax primitives from
"Message/CPIM" objects with encapsulated "application/pidf+xml"
objects to XMPP ...
...
The 'From' header of a "Message/CPIM" object maps to the <user@host>
portion of the 'from' attribute of an XMPP ...
... resource identifier portion XMPP 'from' attribute. Therefore, to map
the CPIM and PIDF information to the XMPP 'from' attribute, 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 ...
...
The 'To' header of a "Message/CPIM" object maps to the 'to' attribute
of an XMPP presence stanza ...
... URI scheme from the front of the address and MUST remove the CPIM
"Formal-name" (if provided). If the gateway possesses knowledge of
...
... courtesy copy" (non-primary addressee) for a presence stanza.
Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object
with encapsulated ...
... presence stanza.
Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object
with encapsulated PIDF ...
... datetime at which a presence stanza was sent. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated
...
... presence stanza was sent. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated
PIDF ...
... the 'Subject' header of a "Message/CPIM" object. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM ...
... header of a "Message/CPIM" object. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated
...
... CPIM" object. Therefore, if an
XMPP-CPIM gateway receives a "Message/CPIM" object with encapsulated
PIDF ...
... header to specify
the namespace of a feature extension. An XMPP-CPIM gateway MUST NOT
pass such headers through to the XMPP ...
...
"Message/CPIM" objects MAY include an optional 'Require' header to
specify mandatory-to-recognize features. An XMPP-CPIM gateway ...
... 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 ...
... MIME header as
specified in [MIME]. If an XMPP-CPIM gateway receives a MIME object
that includes a Content-ID ...
... entity on the non-XMPP side of an XMPP-CPIM gateway SHOULD NOT send
such a PIDF document to an XMPP ...
... PIDF document to an XMPP recipient if possible, and an
XMPP-CPIM gateway MUST NOT map such a PIDF document to an XMPP
...
... 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 ...
... XMPP presence
stanza. Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM"
object with encapsulated PIDF ...
... priority/> element. If an
XMPP-CPIM gateway maps these values, it SHOULD treat PIDF
priority ...
... XMPP priority 126; note that this is an example
only, and that the exact mapping shall be determined by the XMPP-CPIM
gateway).
...
... timestamp at which a presence stanza was sent.
Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object
with encapsulated ...
... presence stanza was sent.
Therefore, if an XMPP-CPIM gateway receives a "Message/CPIM" object
with encapsulated PIDF ...
... 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 ...
... XMPP-CPIM Gateway as Presence Service ...
... semantics for an abstract presence service. An
XMPP-CPIM gateway MAY function as such a presence service, and if so
an XMPP ...
... XMPP interactions with the presence service offered by an
XMPP-CPIM gateway, not the translation of such XMPP syntax into PIDF.
...
... 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 ...
... subscribe to the presence information of a
non-XMPP presentity through an XMPP-CPIM gateway, it MUST send a
presence stanza of type "subscribe ...
... "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST append the "pres:" Presence URI scheme to the front of the
...
... "target parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST append the "pres:" Presence URI scheme to the front of the
...
... whatever protocol it uses to interact with the gateway), the
XMPP-CPIM gateway MUST return a presence stanza of type "subscribed"
to the XMPP ...
... target presentity denies the subscription request, the
XMPP-CPIM gateway MUST return a presence stanza of type
"unsubscribed ...
... 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 ...
... subscribe to the
target; if this exception occurs, the XMPP-CPIM gateway MUST
return a <forbidden/> stanza error to the XMPP ...
... entity and the target presentity; if
this exception occurs, the XMPP-CPIM gateway SHOULD return a
<conflict/> stanza error to the XMPP ...
... subscription does not expire. Whether such refreshes are necessary
depends on the native protocol implemented by the CPIM-aware non-XMPP
service ...
... 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 the XMPP 'from' attribute (user@host). The XMPP-CPIM gateway
MUST remove the "pres:" Presence URI scheme ...
... to the XMPP 'to' attribute (user@host). The XMPP-CPIM gateway
MUST remove the "pres:" Presence URI scheme ...
... presence stanza of type "subscribed" to the watcher
presentity. The XMPP-CPIM gateway MUST then notify the watcher
presentity of the target ...
... unsubscribed" to the watcher
presentity. The XMPP-CPIM gateway MUST NOT invoke the notify
operation.
...
... entity
If any of these exceptions occurs, the XMPP-CPIM gateway MUST inform
the watcher presentity of failure.
...
... 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 ...
... [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
...
...
An XMPP-CPIM gateway invokes the CPP "notify operation" whenever the
presence information associated with an XMPP ...
... address of a presence stanza.
Therefore, an XMPP-CPIM gateway that acts as a presence service
SHOULD split a PIDF ...
... XMPP stanzas beyond necessity, an
XMPP-CPIM gateway SHOULD generate an XMPP presence stanza only if the
...
... information about multiple "resources" in multiple tuples rather than
in multiple PIDF documents, an XMPP-CPIM gateway SHOULD include
information about all of an XMPP ...
... non-XMPP entity. However, an XMPP-CPIM gateway MUST NOT generate a
PIDF document with zero <tuple/> children when receiving ...
... unsubscribe from the presence of a
non-XMPP presentity through an XMPP-CPIM gateway, it MUST send a
presence stanza of type "unsubscribe ...
... "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST append the "pres:" Presence URI scheme to the front of the
...
... "target parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST append the "pres:" Presence URI scheme to the front of the
...
... address) does not refer to a valid
presentity, the XMPP-CPIM gateway MUST return an <item-not-found/>
stanza error to the XMPP ...
... XMPP presentity's
subscription to the entity's presence through an XMPP-CPIM gateway,
it MUST send a presence stanza of type "unsubscribed ...
... "watcher parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST add the "pres:" Presence URI scheme to the front of the
...
... "target parameter" field (pres:user@host). The XMPP-CPIM gateway
MUST add the "pres:" Presence URI scheme to the front of the
...
... XMPP entity, the XMPP-CPIM gateway MUST NOT send further presence
notifications to the watcher ...
... 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 ...
... Klyne, G. and D. Atkins, "Common Presence and Instant Messaging (CPIM): Message Format", RFC 3862prop, August 2004. ...
