summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7463.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc7463.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc7463.txt')
-rw-r--r--doc/rfc/rfc7463.txt4034
1 files changed, 4034 insertions, 0 deletions
diff --git a/doc/rfc/rfc7463.txt b/doc/rfc/rfc7463.txt
new file mode 100644
index 0000000..36c27cc
--- /dev/null
+++ b/doc/rfc/rfc7463.txt
@@ -0,0 +1,4034 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) A. Johnston, Ed.
+Request for Comments: 7463 Avaya
+Updates: 3261, 4235 M. Soroushnejad, Ed.
+Category: Standards Track V. Venkataramanan
+ISSN: 2070-1721 Sylantro Systems Corp.
+ March 2015
+
+
+ Shared Appearances of a Session Initiation Protocol (SIP)
+ Address of Record (AOR)
+
+Abstract
+
+ This document describes the requirements and implementation of a
+ group telephony feature commonly known as Bridged Line Appearance
+ (BLA) or Multiple Line Appearance (MLA), or Shared Call/Line
+ Appearance (SCA). When implemented using the Session Initiation
+ Protocol (SIP), it is referred to as shared appearances of an Address
+ of Record (AOR) since SIP does not have the concept of lines. This
+ feature is commonly offered in IP Centrex services and IP Private
+ Branch Exchange (IPBX) offerings and is likely to be implemented on
+ SIP IP telephones and SIP feature servers used in a business
+ environment. This feature allows several user agents (UAs) to share
+ a common AOR, learn about calls placed and received by other UAs in
+ the group, and pick up or join calls within the group. This document
+ discusses use cases, lists requirements, and defines extensions to
+ implement this feature. This specification updates RFCs 3261 and
+ 4235.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc7463.
+
+Copyright Notice
+
+ Copyright (c) 2015 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+
+
+
+Johnston, et al. Standards Track [Page 1]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Conventions Used in This Document . . . . . . . . . . . . . . 5
+ 3. Usage Scenarios . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.1. Executive/Assistant Arrangement . . . . . . . . . . . . . 5
+ 3.2. Call Group . . . . . . . . . . . . . . . . . . . . . . . 5
+ 3.3. Single Line Extension . . . . . . . . . . . . . . . . . . 6
+ 3.4. Changing UAs . . . . . . . . . . . . . . . . . . . . . . 6
+ 4. Requirements and Implementation . . . . . . . . . . . . . . . 6
+ 4.1. Requirements . . . . . . . . . . . . . . . . . . . . . . 6
+ 4.2. Implementation . . . . . . . . . . . . . . . . . . . . . 8
+ 5. Normative Description . . . . . . . . . . . . . . . . . . . . 10
+ 5.1. Elements . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 5.2. Shared Appearance Dialog Package Extensions . . . . . . . 11
+ 5.2.1. The <appearance> Element . . . . . . . . . . . . . . 11
+ 5.2.2. The <exclusive> Element . . . . . . . . . . . . . . . 12
+ 5.2.3. The <joined-dialog> Element . . . . . . . . . . . . . 12
+ 5.2.4. The <replaced-dialog> Element . . . . . . . . . . . . 13
+ 5.3. Shared Appearance User Agents . . . . . . . . . . . . . . 13
+ 5.3.1. Appearance Numbers and Call Context . . . . . . . . . 16
+ 5.3.2. Appearance Numbers and Call Control . . . . . . . . . 17
+ 5.3.3. Appearance Numbers and Transfer . . . . . . . . . . . 18
+ 5.4. Appearance Agent . . . . . . . . . . . . . . . . . . . . 18
+ 6. XML Schema Definition . . . . . . . . . . . . . . . . . . . . 21
+ 7. Alert-Info Appearance Parameter Definition . . . . . . . . . 23
+
+
+
+Johnston, et al. Standards Track [Page 2]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ 8. User Interface Considerations . . . . . . . . . . . . . . . . 24
+ 8.1. Appearance Number Rendering . . . . . . . . . . . . . . . 24
+ 8.1.1. Single Appearance UAs . . . . . . . . . . . . . . . . 24
+ 8.1.2. Dual Appearance UAs . . . . . . . . . . . . . . . . . 24
+ 8.1.3. Shared Appearance UAs with Fixed Appearance Number . 25
+ 8.1.4. Shared Appearance UAs with Variable Appearance
+ Numbers . . . . . . . . . . . . . . . . . . . . . . . 25
+ 8.1.5. Example User Interface Issues . . . . . . . . . . . . 25
+ 8.2. Call State Rendering . . . . . . . . . . . . . . . . . . 26
+ 9. Interoperability with Non-shared Appearance UAs . . . . . . . 26
+ 9.1. Appearance Assignment . . . . . . . . . . . . . . . . . . 26
+ 9.2. Appearance Release . . . . . . . . . . . . . . . . . . . 27
+ 9.3. UAs Supporting Dialog Events but Not Shared Appearance . 27
+ 10. Provisioning Considerations . . . . . . . . . . . . . . . . . 27
+ 11. Example Message Flows . . . . . . . . . . . . . . . . . . . . 28
+ 11.1. Registration and Subscription . . . . . . . . . . . . . 28
+ 11.2. Appearance Selection for Incoming Call . . . . . . . . . 32
+ 11.3. Outgoing Call without Appearance Seizure . . . . . . . . 35
+ 11.4. Outgoing Call with Appearance Seizure . . . . . . . . . 38
+ 11.5. Outgoing Call without Using an Appearance Number . . . . 42
+ 11.6. Appearance Release . . . . . . . . . . . . . . . . . . . 44
+ 11.7. Appearance Pickup . . . . . . . . . . . . . . . . . . . 45
+ 11.8. Call between UAs within the Group . . . . . . . . . . . 50
+ 11.9. Consultation Hold with Appearances . . . . . . . . . . . 52
+ 11.10. Joining or Bridging an Appearance . . . . . . . . . . . 55
+ 11.11. Loss of Appearance during Allocation . . . . . . . . . . 58
+ 11.12. Appearance Seizure Contention Race Condition . . . . . . 59
+ 11.13. Appearance Agent Subscription to UAs . . . . . . . . . . 60
+ 11.14. Appearance Pickup Race Condition Failure . . . . . . . . 62
+ 11.15. Appearance Seizure Incoming/Outgoing Contention Race
+ Condition . . . . . . . . . . . . . . . . . . . . . . . 65
+ 12. Security Considerations . . . . . . . . . . . . . . . . . . . 66
+ 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 67
+ 13.1. SIP Event Header Field Parameter: shared . . . . . . . . 67
+ 13.2. SIP Alert-Info Header Field Parameter: appearance . . . 68
+ 13.3. URN Sub-Namespace Registration: sa-dialog-info . . . . . 68
+ 13.4. XML Schema Registration . . . . . . . . . . . . . . . . 68
+ 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 69
+ 14.1. Normative References . . . . . . . . . . . . . . . . . . 69
+ 14.2. Informative References . . . . . . . . . . . . . . . . . 70
+ Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 71
+ Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 71
+
+1. Introduction
+
+ The feature and functionality requirements for SIP user agents (UAs)
+ supporting business telephony applications differ greatly from basic
+ SIP UAs, both in terms of services and end-user experience. In
+
+
+
+Johnston, et al. Standards Track [Page 3]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ addition to basic SIP support [RFC3261], many of the services in a
+ business environment require the support for SIP extensions such as
+ REFER [RFC3515], SUBSCRIBE/NOTIFY [RFC6665], PUBLISH [RFC3903], the
+ SIP Replaces [RFC3891], and Join [RFC3911] header fields, etc. Many
+ of the popular business services have been documented in the SIP
+ Service Examples [RFC5359].
+
+ This specification details a method for implementing a group
+ telephony feature known variously in telephony as Bridged Line
+ Appearance (BLA) or Multiple Line Appearances (MLA), one of the more
+ popular advanced features expected of SIP IP telephony devices in a
+ business environment. Other names for this feature include Shared
+ Call/Line Appearance (SCA), Shared Call Status and Multiple Call
+ Appearance (MCA). A variant of this feature is known as Single Line
+ Extension.
+
+ This document looks at how this feature can be implemented using
+ standard SIP [RFC3261] in conjunction with SIP events [RFC6665] and
+ publication [RFC3903] (carrying the SIP dialog state event package
+ [RFC4235]) for exchanging status among UAs.
+
+ In traditional telephony, the line is physical. A common scenario in
+ telephony is for a number of business telephones to share a single or
+ a small number of lines. The sharing or appearance of these lines
+ between a number of phones is what gives this feature its name. A
+ common scenario in SIP is for a number of business telephones to
+ share a single or a small number of Address of Record (AOR) URIs.
+
+ In addition, an AOR can have multiple appearances on a single UA in
+ terms of the user interface. The appearance number relates to the
+ user interface for the telephone; typically, each appearance of an
+ AOR has a visual display (lamp that can change color or blink or a
+ screen icon) and a button (used to select the appearance) where each
+ appearance number is associated with a different dialog to/from the
+ AOR. The telephony concept of line appearance is still relevant to
+ SIP due to the user interface considerations. It is important to
+ keep the appearance number construct because:
+
+ 1. Human users are used to the concept and will expect it in
+ replacement systems (e.g., an overhead page announcement says
+ "Joe pickup line 3").
+
+ 2. It is a useful structure for user interface representation.
+
+ The purpose of the appearance number is to identify active calls to
+ facilitate sharing between users (e.g., passing a call from one user
+ to another). If a telephone has enough buttons/lamps, the appearance
+ number could be the positional sequence number of the button. If
+
+
+
+Johnston, et al. Standards Track [Page 4]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ not, it may still be desirable to present the call state, but the
+ appearance number should be displayed so that users know which call,
+ for example, is on hold on which key.
+
+ In this document, except for the usage scenarios in the next section,
+ we will use the term "appearance" rather than "line appearance" since
+ SIP does not have the concept of lines. Note that this does not mean
+ that a conventional telephony user interface (lamps and buttons) must
+ be used: implementations may use another metaphor as long as the
+ appearance number is readily apparent to the user. Each AOR has a
+ separate appearance numbering space. As a result, a given UA user
+ interface may have multiple occurrences of the same appearance
+ number, but they will be for different AORs.
+
+2. Conventions Used in This Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [RFC2119]
+ and indicate requirement levels for compliant mechanisms.
+
+3. Usage Scenarios
+
+ The following examples are common applications of the shared
+ appearances feature and are mentioned here as informative use cases.
+ All these example usages can be supported by the shared appearances
+ feature described in this document. The main differences relate to
+ the user interface considerations of the device.
+
+3.1. Executive/Assistant Arrangement
+
+ The appearances on the executive's UA also appear on the assistant's
+ UA. The assistant may answer incoming calls to the executive and
+ then place the call on hold for the executive to pick up. The
+ assistant can always see the state of all calls on the executive's
+ UA.
+
+3.2. Call Group
+
+ Users with similar business needs or tasks can be assigned to
+ specific groups and share an AOR. For example, an IT department
+ staff of five might answer a help line that has three appearances on
+ each phone in the IT work area. A call answered on one phone can be
+ put on hold and picked up on another phone. A shout or an IM to
+ another staff member can result in them taking over a call on a
+ particular appearance. Another phone can request to be added/joined/
+ bridged to an existing appearance resulting in a conference call.
+
+
+
+
+Johnston, et al. Standards Track [Page 5]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+3.3. Single Line Extension
+
+ In this scenario, incoming calls are offered to a group of UAs. When
+ one answers, the other UAs are informed. If another UA in the group
+ seizes the line (i.e., goes off-hook), it is immediately bridged or
+ joined in with the call. This mimics the way residential telephone
+ extensions usually operate.
+
+3.4. Changing UAs
+
+ A user is on a call on one UA and wishes to change devices and
+ continue the call on another UA. They place the call on hold, note
+ the appearance number of the call, then walk to another UA. They are
+ able to identify the same appearance number on the other UA, pick up
+ the call, and continue the conversation.
+
+4. Requirements and Implementation
+
+ The next section details the requirements and discusses the
+ implementation of the shared appearances feature.
+
+4.1. Requirements
+
+ The basic requirements of the shared appearances feature can be
+ summarized as follows:
+
+ REQ-1: Incoming calls to the AOR must be offered to a group of UAs
+ and can be answered by any of them.
+
+ REQ-2: Each UA in the group must be able to learn the call status
+ of the others in the group for the purpose of rendering this
+ information to the user.
+
+ REQ-3: A UA must be able to join (also called bridge or conference
+ together) or pick up (take) an active call of another UA in
+ the group in a secure way.
+
+ REQ-4: The mechanism should require the minimal amount of
+ configuration. UAs registering against the group AOR should
+ be able to participate in the shared appearance group
+ without manual configuration of group members.
+
+ REQ-5: The mechanism must scale for large numbers of appearances
+ and large numbers of UAs without introducing excessive
+ messaging traffic.
+
+ REQ-6: Each call or session (incoming or outgoing) should be
+ assigned a common "appearance" number from a managed pool
+
+
+
+Johnston, et al. Standards Track [Page 6]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ administered for the AOR group. Once the session has
+ terminated, the appearance number is released back into the
+ pool and can be reused by another incoming or outgoing
+ session.
+
+ REQ-7: Each UA in the group must be able to learn the status of all
+ appearances of the group.
+
+ REQ-8: There must be mechanisms to resolve appearance contention
+ among the UAs in the group. Contention in this context
+ means an appearance number being associated with multiple
+ dialogs that are not mixed or otherwise associated.
+
+ REQ-9: The mechanism must allow all UAs receiving an incoming
+ session request to utilize the same appearance number at the
+ time of alerting.
+
+ REQ-10: The mechanism must have a way of reconstructing appearance
+ state after an outage that does not result in excessive
+ traffic and processing.
+
+ REQ-11: The mechanism must have backwards compatibility such that a
+ UA that is unaware of the feature can still register against
+ the group AOR and make and receive calls.
+
+ REQ-12: The mechanism must not allow UAs outside the group to
+ select, seize, or manipulate appearance numbers.
+
+ REQ-13: For privacy reasons, there must be a mechanism so that
+ appearance information is not leaked outside the group of
+ UAs (e.g., "So who do you have on line 1?").
+
+ REQ-14: The mechanism must support a way for UAs to request
+ exclusivity on a line appearance. Exclusivity means that
+ the UA requesting it desires a private conversation with the
+ external party and other UAs must not be allowed to join or
+ take the call. Exclusivity may be requested at the start of
+ an incoming or outgoing session or during the session. An
+ exclusivity request may be accepted or rejected by the
+ entity providing the shared appearance service. Therefore,
+ the mechanism must provide a way of communicating the result
+ back to the requester UA.
+
+ REQ-15: The mechanism should support a way for a UA to seize a
+ particular appearance number for outgoing requests prior to
+ sending the actual request. This is often called seizure.
+
+
+
+
+
+Johnston, et al. Standards Track [Page 7]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ REQ-16: The mechanism should support a way for a UA to seize a
+ particular appearance number and also send the request at
+ the same time. This is needed when an automatic ringdown
+ feature (a telephone configured to immediately dial a phone
+ number when it goes off-hook) is combined with shared
+ appearances. In this case, seizing the line is integrated
+ with dialing.
+
+4.2. Implementation
+
+ This section non-normatively discusses the implementation of the
+ shared appearances feature. The normative description is in
+ Section 5. Many of the requirements for this service can be met
+ using standard SIP mechanisms such as:
+
+ o A SIP Forking Proxy and Registrar/Location Service meets REQ-1.
+
+ o The SIP Dialog Package meets REQ-2.
+
+ o The combination of the SIP Replaces and Join header fields meets
+ REQ-3.
+
+ o The use of a State Agent for the Dialog Package meets REQ-4 and
+ REQ-5.
+
+ REQ-6 suggests the need for an entity that manages the appearance
+ resource. Just as conferencing systems commonly have a single point
+ of control, known as a focus, a shared appearance group has a single
+ point of control of the appearance shared resource. This is defined
+ as an Appearance Agent for a group. While an Appearance Agent can be
+ part of a centralized server, it could also be co-resident in a
+ member UA that has taken on this functionality for a group. The
+ Appearance Agent knows or is able to determine the dialog state of
+ all members of the group.
+
+ While the appearance resource could be managed cooperatively by a
+ group of UAs without any central control, this is outside the scope
+ of this document. It is also possible that the Appearance Agent
+ logic could be distributed in all UAs in the group. For example,
+ rules that govern assigning appearance numbers for incoming requests
+ (e.g., lowest available appearance number) and rules for contention
+ handling (e.g., when two UAs request the use of the same appearance
+ number, hash dialog identifiers and compare with the lowest hash
+ winning) would need to be defined and implemented.
+
+ To best meet REQ-9, the appearance number for an incoming INVITE
+ needs to be contained in the INVITE, in addition to being delivered
+ in the dialog package NOTIFY. Otherwise, if the NOTIFY is delayed or
+
+
+
+Johnston, et al. Standards Track [Page 8]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ lost, a UA in the group might receive an incoming INVITE but might
+ not know which appearance number to render during alerting.
+
+ This specification defines an extension parameter, which is
+ normatively defined in Section 7, for the Alert-Info header field in
+ RFC 3261 to carry the appearance number:
+
+ Alert-Info: <urn:alert:service:normal>;appearance=1
+
+ The following list describes the operation of the shared appearances
+ feature.
+
+ 1. A UA is configured with the AOR of a shared appearance group. It
+ registers against the AOR, then attempts a dialog state
+ subscription to the AOR. If the subscription fails, loops back
+ to itself, or returns an error, it knows there is no State Agent
+ and, hence, no Appearance Agent and this feature is not
+ implemented.
+
+ 2. If the subscription receives a 200 OK, the UA knows there is a
+ State Agent and that the feature is implemented. The UA then
+ follows the steps in this list.
+
+ 3. Information learned about the dialog state of other UAs in the
+ group is rendered to the user.
+
+ 4. Incoming calls are forked to all UAs in the group, and any may
+ answer. UAs receive the appearance number to use in rendering
+ the incoming call in a NOTIFY from the Appearance Agent and in
+ the INVITE itself. The UA will also receive a notification if
+ the call is answered by another UA in the group so this
+ information can be rendered to the user.
+
+ 5. For outgoing calls, the operation depends on the implementation.
+ If the user seizes a particular appearance number for the call,
+ the UA publishes the trying state dialog information with the
+ desired appearance number and waits for a 2xx response before
+ sending the INVITE.
+
+ 6. For outgoing calls, if the user does not seize a particular
+ appearance or does not care, the INVITE can be sent immediately,
+ and the appearance number learned as the call progresses from a
+ notification from the Appearance Agent.
+
+ 7. For outgoing calls, if the user does not want an appearance
+ number assigned (such as during a consultation call or if a UA is
+ fetching 'service media' such as music on hold [RFC7088]), the UA
+
+
+
+
+Johnston, et al. Standards Track [Page 9]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ also publishes prior to sending the INVITE but does not include
+ an appearance number in the publication.
+
+ 8. Established calls within the group may be joined (bridged) or
+ taken (picked) by another UA. Information in the dialog package
+ notifications can be used to construct Join or Replaces header
+ fields. Since the same appearance number is used for these types
+ of operations, this information is published prior to sending the
+ INVITE Join or INVITE Replaces.
+
+ 9. The Appearance Agent may not have direct access to the complete
+ dialog state of some or all of the UAs in the group. If this is
+ the case, the Appearance Agent will subscribe to the dialog state
+ of individual UAs in the group to obtain this information. In
+ any case, the Appearance Agent will send normal notifications
+ (via the subscriptions established by the UAs in step 1) every
+ time the aggregate dialog state of the AOR changes, including
+ when calls are placed, answered, placed on and off hold, and hung
+ up.
+
+5. Normative Description
+
+ This section normatively describes the shared appearances feature
+ extensions. The following definitions are used throughout this
+ document:
+
+ Appearance number: An appearance number is a positive integer
+ associated with one or more dialogs of an AOR. Appearance numbers
+ are managed by an Appearance Agent and displayed and rendered to
+ the user by UAs that support this specification. When an
+ appearance number is assigned or requested, generally the assigned
+ number is the smallest positive integer that is not currently
+ assigned as an appearance number to a dialog for this AOR. This
+ specification does not define an upper limit on appearance
+ numbers; however, using appearance numbers that are not easily
+ represented using common integer representations is likely to
+ cause failures.
+
+ Seizing: An appearance can be reserved prior to a call being placed
+ by seizing the appearance. An appearance can be seized by
+ communicating an artificial state of "trying" prior to actually
+ initiating a dialog (i.e., sending the INVITE), in order to appear
+ as if it were already initiating a dialog.
+
+ Selecting (or Not-Seizing): An appearance is merely selected (i.e.,
+ not seized) if there is no such communication of artificial state
+ of "trying" prior to initiating a dialog: i.e., the state is
+
+
+
+
+Johnston, et al. Standards Track [Page 10]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ communicated when the dialog is actually initiated. The
+ appearance number is learned after the INVITE is sent.
+
+5.1. Elements
+
+ A complete system to implement this feature consists of:
+
+ 1. UAs that support publications, subscriptions, and notifications
+ for the SIP dialog event package and the shared appearance dialog
+ package extensions and behavior.
+
+ 2. An Appearance Agent consisting of a State Agent for the dialog
+ event package that implements an Event State Compositor (ESC) and
+ the shared appearance dialog package extensions and behavior.
+ The Appearance Agent also has logic for assigning and releasing
+ appearance numbers and resolving appearance number contention.
+
+ 3. A forking proxy server that can communicate with the State Agent.
+
+ 4. A registrar that supports the registration event package.
+
+ The behavior of these elements is described normatively in the
+ following sections after the definitions of the dialog package
+ extensions.
+
+5.2. Shared Appearance Dialog Package Extensions
+
+ This specification defines four new elements as extensions to the SIP
+ Dialog Event package [RFC4235]. The schema is defined in Section 6.
+ The elements are <appearance>, <exclusive>, <joined-dialog>, and
+ <replaced-dialog>, which are sub-elements of the <dialog> element.
+
+5.2.1. The <appearance> Element
+
+ The <appearance> element, a child of the <dialog> element, is used to
+ convey the appearance number of the dialog described by the parent
+ <dialog> element. When sent by a UA in a PUBLISH with parent
+ <dialog> with state attribute "trying" to the Appearance Agent, the
+ UA is requesting assignment of the given appearance number to the
+ current or future dialog with the given dialog identifiers. When an
+ <appearance> element is sent by the Appearance Agent in a NOTIFY, it
+ indicates that the appearance number has been assigned to the
+ specified dialog.
+
+ Note that a <dialog-info> element describes the contained dialogs
+ from the point of view of the UA (named by the "entity" attribute),
+ regardless of whether the containing request is sent by the UA or the
+ Appearance Agent. In particular, if the UA sent a request within the
+
+
+
+Johnston, et al. Standards Track [Page 11]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ described dialog, the To header field URI would match the <remote>
+ <identity> value and the to-tag parameter would match the remote-tag
+ attribute. Similarly, the From header field URI would match the
+ <local> <identity> value and the from-tag parameter would match the
+ local-tag attribute.
+
+5.2.2. The <exclusive> Element
+
+ The <exclusive> element, a child of the <dialog> element, is a
+ boolean, which, when true, indicates that the UA is not willing to
+ accept an INVITE with a Join or Replaces header field targeted to the
+ dialog described by the <dialog> element that is the parent of the
+ <exclusive> element. For example, some shared appearance systems
+ only allow call pickup when the call is on hold. In this case, the
+ <exclusive> element should be set to "false" when the call is held
+ and "true" when the call is not held, rather than having the
+ "exclusive" value implied by the hold state.
+
+ It is important to note that this element is a hint. In order to
+ prevent another UA from taking or joining a call, a UA can, in
+ addition to setting the <exclusive> tag, not report full dialog
+ information to the Appearance Agent. Not having the full dialog
+ information (Call-ID, remote-tag, and local-tag) prevents another UA
+ from constructing a Join or Replaces header field. Although a UA may
+ set <exclusive> to "true", the UA must still be ready to reject an
+ INVITE Join relating to this dialog. If these dialog identifiers
+ have already been shared with the Appearance Agent, the UA could send
+ an INVITE Replaces to change them and then not report the new ones to
+ the Appearance Agent.
+
+ If the proxy knows which dialogs are marked exclusive, the proxy MAY
+ enforce this exclusivity by rejecting INVITE Join and INVITE Replaces
+ requests containing those dialog identifiers with a 403 (Forbidden)
+ response.
+
+ Note that exclusivity has nothing to do with appearance number
+ selection or seizing -- instead, it is about call control
+ operations that can be performed on a dialog.
+
+ If the <exclusive> element is not present, it is assumed to be false.
+
+5.2.3. The <joined-dialog> Element
+
+ The <joined-dialog> element, a child of the <dialog> element, is used
+ to convey dialog identifiers of any other dialogs that are joined
+ (mixed or bridged) with the dialog. Only the UA that is the common
+ endpoint of the mixed dialogs (and thus controlling the mixing
+ operation) should include this element in publications to the
+
+
+
+Johnston, et al. Standards Track [Page 12]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Appearance Agent. Note that this element should still be used even
+ when the Join header field was not used to join the dialogs. For
+ example, two separate dialogs on a UA could be joined without any SIP
+ call control operations. Joined dialogs will share the same
+ appearance number.
+
+ If the <joined-dialog> element is not present, it is assumed that the
+ dialog is not joined or to be joined to any other dialog.
+
+5.2.4. The <replaced-dialog> Element
+
+ The <replaced-dialog> element, a child of the <dialog> element, is
+ used to convey dialog identifiers of any other dialogs that will be
+ or have been replaced with this dialog. For example, a UA in the
+ group picking up a call on another UA by sending an INVITE with
+ Replaces would include this element for the replacing dialog.
+ Replaced dialogs will share the same appearance number.
+
+ If the <replaced-dialog> element is not present, it is assumed that
+ the dialog has not replaced or is not to replace to any other dialog.
+
+5.3. Shared Appearance User Agents
+
+ UAs that support the shared appearances feature use the dialog state
+ package [RFC4235] with the shared appearance extensions and the
+ 'shared' Event header field parameter defined in Section 13.
+
+ UAs use the dialog package extensions in Section 5.2 along with
+ SUBSCRIBE [RFC6665], NOTIFY [RFC6665], and PUBLISH [RFC3903].
+ SUBSCRIBE, NOTIFY, and PUBLISH requests for the dialog event package
+ include the 'shared' Event header field parameter as required by this
+ specification.
+
+ The presence of the 'shared' Event header field parameter tells
+ the Appearance Agent that the UA supports this specification.
+
+ Upon initialization, the UA MUST subscribe to the dialog event
+ package of the AOR and refresh the subscription per the SIP Events
+ Framework [RFC6665]. If the SUBSCRIBE request fails, then no
+ Appearance Agent may be present and this feature is not active for
+ this AOR. The UA MAY periodically retry the subscription to see if
+ conditions have changed at intervals no shorter than four hours.
+
+ Four hours was chosen to limit the subscription test to six per
+ day per UA. Increasing this interval would reduce this failure
+ traffic but take longer for a newly activated Appearance Agent to
+ be discovered.
+
+
+
+
+Johnston, et al. Standards Track [Page 13]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ UAs can also use the presence of the 'shared' Event header field
+ parameter in NOTIFYs to discover the presence of an Appearance Agent
+ for the AOR.
+
+ UAs that implement the shared appearances feature, call pickup,
+ joining, and bridging MUST support sending an INVITE with Replaces
+ [RFC3891] or Join [RFC3911]. The User Agent Client (UAC) needs to
+ include the to-tag and from-tag information in the Replaces or Join
+ header so that the correct dialog will be matched by the User Agent
+ Server (UAS) per the rules in RFCs 3891 and 3911.
+
+ All UAs that implement the shared appearances feature and support
+ INVITE MUST support receiving an INVITE with a Replaces [RFC3891] or
+ a Join [RFC3911] header field.
+
+ When publishing or notifying dialog package information, a UA
+ includes the largest set of dialog identification available at the
+ time of publication, with the exception that a UA may omit
+ information if it wishes to prevent other UAs from joining or picking
+ up a call. Dialog identification includes local and remote target
+ URIs, call-id, to-tag, and from-tag. While this dialog
+ identification information is optional in [RFC4235], it is essential
+ in the shared appearances feature, allowing call control operations.
+ When placing calls on hold, use the "+sip.rendering=no" feature tag
+ to indicate this in dialog package notifications. Using the full SDP
+ session description instead forces the endpoint to do a lot of extra
+ parsing, unnecessarily complicating the code and inviting errors.
+
+ The accurate rendering of the idle/active/alerting/hold state of
+ other UAs in the group is an important part of the shared
+ appearances feature.
+
+ A UA that does not need to seize a particular appearance number (or
+ doesn't care) would just send an INVITE as normal to place an
+ outbound call.
+
+ If the call is an emergency call, a UA MUST never wait for a
+ confirmed seizure before sending an INVITE. Instead, the emergency
+ call MUST proceed without waiting for the PUBLISH transaction.
+
+ If a UA requires a particular appearance number, the a UA MUST send a
+ dialog package PUBLISH request and wait for a 2xx response before
+ sending the INVITE. This is required in the following situations:
+
+ 1. When the user seizes a particular appearance number for an
+ outgoing call (e.g., seizing the appearance and going "off-hook",
+ if the UA's user interface uses this metaphor).
+
+
+
+
+Johnston, et al. Standards Track [Page 14]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ 2. When the user has requested that an appearance number not be used
+ for an outgoing call (i.e., during a consultation call, a
+ 'service media' call such as for music on hold [RFC7088], or for
+ a call not considered part of the shared appearance group).
+
+ 3. When the user has selected to join (or bridge) an existing call.
+
+ 4. When the user has selected to replace (or take) an existing call.
+
+ Note that when a UA seizes an appearance prior to establishment of a
+ dialog (numbers 1 and 2 in the above list), not all dialog
+ information will be available. In particular, when a UA publishes an
+ attempt to seize an appearance prior to knowing the destination URI,
+ minimal or no dialog information may be available. For example, in
+ some cases, only the local target URI for the call will be known: not
+ any dialog information. If the From tag and Call-ID were not present
+ in the initial PUBLISH, a new PUBLISH MUST be sent as soon as this
+ information is available.
+
+ The first publication will cause the Appearance Agent to reserve
+ the appearance number for this UA. If the publication does not
+ have any dialog identifiers (e.g., Call-ID or local-tag), the
+ Appearance Agent cannot assign the appearance number to a
+ particular dialog of the UA until the second publication, which
+ will contain some dialog identifiers.
+
+ This publication state is refreshed as described in [RFC3903] during
+ the early dialog state or the Appearance Agent may reassign the
+ appearance number. Once the dialog has transitioned to the confirmed
+ state, no publication refreshes are necessary.
+
+ This specification assumes that the Appearance Agent has other
+ means besides UA publication to learn about the state of UA
+ dialogs. In this specification, PUBLISH is used to indicate
+ desired and intended appearance number operations. Once a dialog
+ transitions from early to confirmed, this role is over; hence, no
+ publication refreshes are needed.
+
+ Appearance numbers are a shorthand label for active and pending
+ dialogs related to an AOR. Many of the features and services built
+ using this extension rely on the correct rendering of this
+ information to the human user. In addition, the group nature of the
+ feature means that the rendering must be similar between different
+ vendors and different models. Failure to do so will greatly reduce
+ the value and usefulness of these protocol extensions. In a
+ correctly designed user interface for this feature, the appearances
+ number for each active and pending dialog is explicitly (i.e., by
+ appearance number) or implicitly (using a user interface metaphor
+
+
+
+Johnston, et al. Standards Track [Page 15]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ that makes the numbering and ordering clear to the user) rendered to
+ the user. The far-end identity of each dialog (e.g., the remote
+ party identity) is not a useful replacement for the appearance
+ number. The state of each appearance is also to be rendered (idle,
+ active, busy, joined, etc.). UAs can tell that a set of dialogs are
+ joined (bridged or mixed) together by the presence of one or more
+ <joined-dialog> elements containing other SIP dialog identifiers.
+ Appearance numbers of dialogs can be learned by dialog package
+ notifications containing the <appearance> element from the Appearance
+ Agent or from the 'appearance' Alert-Info parameter in an incoming
+ INVITE. Should they conflict, the dialog package notification takes
+ precedence.
+
+ A user may select an appearance number but then abandon placing a
+ call (go back on-hook). In this case, the UA frees up the appearance
+ number by removing the event state with a PUBLISH as described in
+ [RFC3903]. A failure to do this will require unnecessary operations
+ by the Appearance Agent and tie up appearance numbers that could
+ otherwise be used by other UAs in the shared appearance group.
+
+ A UA SHOULD register against the AOR only if it is likely the UA will
+ be answering incoming calls. If the UA is mainly going to be
+ monitoring the status of the shared appearance group calls and
+ picking or joining calls, the UA SHOULD only subscribe to the AOR and
+ not register against the AOR. If a monitoring UA registers rather
+ than just subscribing, it generates large amounts of unnecessary
+ network traffic.
+
+ All subscribed UAs will receive dialog package NOTIFYs of trying
+ state for incoming INVITEs.
+
+ A UA MUST NOT insert an 'appearance' parameter into an Alert-Info
+ header field in an INVITE or other request.
+
+ The Appearance Agent is solely responsible for doing this.
+
+5.3.1. Appearance Numbers and Call Context
+
+ There are cases where two separate dialogs at a UA are not mixed but
+ share the same 'context'. That is, they relate to each other and
+ should not be treated the same as any other two dialogs within the
+ group. One example of this is a 'consultation call' where a user
+ puts an existing dialog on hold, then calls another user, before
+ switching back to the original dialog. Another case, described
+ below, occurs during transfer operations, where for a transient
+ period, a UA is involved in dialogs with two other UAs, but the
+ dialogs are related, and should not be treated as independent
+ dialogs. These cases are best handled by not assigning an appearance
+
+
+
+Johnston, et al. Standards Track [Page 16]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ number to a newly created dialog when it shares a context with an
+ existing dialog. But if the preexisting dialog is terminated, its
+ appearance number should be reassigned to the newly created dialog.
+
+ A UA that wants to place a call but does not have an appearance
+ number assigned sends a PUBLISH before sending the INVITE. The
+ PUBLISH does not have an 'appearance' element present, but it does
+ have the 'shared' Event header field parameter present. If the
+ Appearance Agent policy does not allow calls without an assigned
+ appearance number, a 400 (Bad Request) response is sent by the
+ Appearance Agent and the UA will republish either selecting/seizing
+ an appearance number or send the INVITE without publishing, in which
+ case the Appearance Agent will assign one.
+
+ Note that if an Appearance Agent rejects calls without an
+ appearance number, certain operations such as consultation calls,
+ transfer, and music on hold may be negatively impacted.
+
+5.3.2. Appearance Numbers and Call Control
+
+ When an INVITE is generated to attempt to bridge or take a call
+ (i.e., contains Join or Replaces with a dialog identifier of another
+ dialog in the shared appearance group), the UA MUST first send a
+ PUBLISH to the Appearance Agent. This PUBLISH will contain:
+
+ 1. The appearance number of the joined or replaced call in the
+ <appearance> element
+
+ 2. The dialog information from the Join header field in the <joined-
+ dialog> element, if the dialog is being joined
+
+ 3. The dialog information from the Replaces header field in the
+ <replaced-dialog> element, if the dialog is being replaced
+
+ Note that this information is provided to the Appearance Agent so
+ that it can provide proper appearance assignment behavior. If the
+ INVITE Join or Replaces was sent without publishing first, the
+ Appearance Agent might assign a new appearance number to this
+ INVITE, which would be a mistake. With Join, the publication has
+ the <joined-dialog> element to prevent the Appearance Agent from
+ generating a 400 (Bad Request) response due to the reuse of an
+ appearance number. For Replaces, the purpose of the <replaced-
+ dialog> is to prevent a race condition where the BYE could cause
+ the appearance number to be released when it should stay with the
+ replacing dialog.
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 17]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+5.3.3. Appearance Numbers and Transfer
+
+ During a transfer operation, it is important that the appearance
+ number not change during the operation. Consider the example of
+ Alice, a member of a shared appearance group, who is talking to
+ Carol, who is outside the shared appearance group. Carol transfers
+ Alice to David, who is also outside the shared appearance group. For
+ example, if Alice is using appearance 3 for the session with Carol,
+ the resulting session with David should also use appearance number 3.
+ Otherwise, an appearance number change can cause a "jump" on the UI
+ and confusion to the user. There are two possible scenarios using
+ the terminology of RFC 5589: Alice is the transferee in any type of
+ transfer (receives the REFER) or the transfer target in an attended
+ transfer (receives the INVITE with Replaces).
+
+ If Alice is the transferee, the triggered INVITE from the REFER is
+ treated as a consultation call. Alice SHOULD publish requesting that
+ the Appearance Agent not assign an appearance number for this INVITE.
+ When the transfer completes, Alice SHOULD publish again to move the
+ appearance number from the dialog with Carol to the dialog with
+ David. If a PUBLISH is sent to move the appearance number, the
+ publication MUST be sent prior to sending the BYE to Carol to avoid a
+ race condition where the Appearance Agent reassigns the appearance
+ number after seeing the BYE.
+
+ If Alice is the target, the incoming INVITE will contain a Replaces
+ header field. As a result, the Appearance Agent will have reused the
+ appearance number of the dialog with Carol, and this appearance
+ number will continue to be used after the dialog with Carol has been
+ terminated.
+
+5.4. Appearance Agent
+
+ An Appearance Agent defined in this specification MUST implement a
+ dialog package state agent for the UAs registered against the AOR.
+ The Appearance Agent MUST support the appearance dialog package
+ extensions defined in Section 5.2 and use the 'shared' Event header
+ field parameter. The Appearance Agent MUST support publications and
+ subscriptions for this event package.
+
+ The Appearance Agent MUST have a way of discovering the state of all
+ dialogs associated with the AOR. If this information is not
+ available from a call stateful proxy or Back-to-Back User Agent
+ (B2BUA), the Appearance Agent can use the registration event package
+ [RFC3680] to learn of UAs associated with the AOR and subscribe to
+ their dialog event state. An Appearance Agent can also subscribe to
+ a UA's dialog event state in order to reconstruct state. As a
+ result, the registrar MUST support the registration event package.
+
+
+
+Johnston, et al. Standards Track [Page 18]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Dialog package notifications are recommended by RFC 4235 to "only
+ contain information on the dialogs whose state or participation
+ information has changed." This specification extends RFC 4235 as
+ follows. The Appearance Agent SHOULD send dialog event state
+ notifications whenever the following events happen to UAs in the AOR
+ group:
+
+ 1. A call is received, placed, answered, or terminated.
+
+ 2. A call is placed on or off hold.
+
+ 3. A call is joined or replaced.
+
+ 4. An appearance number is reserved or released.
+
+ The Appearance Agent MUST allocate an appearance number for all
+ incoming calls and send immediate notifications to the UAs subscribed
+ to the shared group AOR. A new appearance number is allocated except
+ for an incoming INVITE with a Join or Replaces header field. For
+ this case, the appearance number should match the appearance number
+ of the dialog being joined or replaced. If the INVITE Replaces or
+ Join comes from outside the shared appearance group, the Appearance
+ Agent will include a <joined-dialog> or <replaced-dialog> element in
+ the NOTIFY containing the dialog information from the Replaces or
+ Joined header field.
+
+ The Appearance Agent MUST be able to communicate with the forking
+ proxy to learn about incoming calls and also to pass the appearance
+ number to the proxy or ensure the Alert-Info header field is included
+ in the INVITE with the appropriate appearance number.
+
+ Note that UAs need to be able to handle incoming INVITEs without
+ an appearance number assigned. This could be caused by a failure
+ of the Appearance Agent or other error condition. Although the
+ proper rendering of the INVITE may not be possible, this is better
+ than ignoring or failing the INVITE.
+
+ An Appearance Agent SHOULD assign an appearance number to an outgoing
+ dialog if a PUBLISH has not been received selecting/seizing a
+ particular appearance number.
+
+ Note that if the shared appearance group has appearance-unaware
+ UAs making calls, the Appearance Agent will still allocate
+ appearance numbers for INVITEs sent by those UAs.
+
+ An Appearance Agent receiving a PUBLISH with an appearance number
+ checks to make sure the publication is valid. An appearance number
+ can be assigned to only one dialog unless there is a <joined-dialog>
+
+
+
+Johnston, et al. Standards Track [Page 19]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ or <replaced-dialog> element indicating that the dialog will be/has
+ been replaced or joined. A 400 (Bad Request) response is returned if
+ the chosen appearance number is invalid, and an immediate NOTIFY
+ SHOULD be sent to the UA containing full dialog event state.
+
+ An Appearance Agent receiving a PUBLISH without an appearance number
+ but with the 'shared' Event header field parameter present interprets
+ this as a request by the UA to not assign an appearance number. If
+ the Appearance Agent policy does not allow this, a 400 (Bad Request)
+ response is returned. If policy does allow this, a 200 (OK) response
+ is returned and no appearance number is allocated. An Appearance
+ Agent does not have to share this dialog information (i.e., send a
+ NOTIFY) with other UAs in the group as the information will not be
+ rendered by the other UAs.
+
+ The Appearance Agent allocates an appearance number to a dialog from
+ the time the appearance is requested via a PUBLISH or from the
+ receipt of an INVITE to the time when the last dialog associated with
+ the appearance is terminated, including all dialogs that are joined
+ or replaced. During the early dialog state, the Appearance Agent
+ controls the rate of dialog state publication using the Expires
+ header field in 200 (OK) responses to PUBLISH requests. An interval
+ of 3 minutes is RECOMMENDED. After the dialog associated with the
+ publication has been confirmed, the expiration of the publication
+ state has no effect on the appearance allocation. If the publication
+ contains no dialog state information, the Appearance Agent MUST
+ reserve the appearance number for the UA but cannot assign the
+ appearance to any particular dialog of the UA. When the publication
+ state is updated with any dialog information, the appearance number
+ can then be assigned to the particular dialog. A UA that has been
+ allocated an appearance number using a PUBLISH MAY free up the
+ appearance number by removing the event state with a PUBLISH as
+ described in [RFC3903].
+
+ If an INVITE is sent by a member of the group to the shared AOR
+ (i.e., they call their own AOR), the Appearance Agent MUST assign two
+ appearance numbers. The first appearance number will be the one
+ selected or assigned to the outgoing INVITE. The second appearance
+ number will be another one assigned by the Appearance Agent for the
+ INVITE as it is forked back to the members of the group.
+
+ The is to preserve a common behavior in legacy systems.
+
+ If an INVITE is sent by a member of the group using the shared AOR or
+ sent to the shared AOR and no appearance number is available, the
+ proxy MAY reject the INVITE with a 403 (Forbidden) response code.
+
+
+
+
+
+Johnston, et al. Standards Track [Page 20]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Appearance numbers are only used for dialogs in which one or more UAs
+ associated with the group AOR are participants. If an incoming
+ INVITE to the group AOR is forwarded to another AOR, the appearance
+ number is immediately freed up and can be assigned to another dialog.
+
+6. XML Schema Definition
+
+ The 'appearance', 'joined-dialog', 'replaced-dialog', and 'exclusive'
+ elements are defined within a new XML namespace URI. This namespace
+ is "urn:ietf:params:xml:ns:sa-dialog-info". The schema for these
+ elements is:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 21]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <xs:schema
+ targetNamespace="urn:ietf:params:xml:ns:sa-dialog-info"
+ xmlns="urn:ietf:params:xml:ns:sa-dialog-info"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified">
+
+
+ <xs:element name="joined-dialog" minOccurs="0"
+ maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="call-id" type="xs:string"
+ use="mandatory"/>
+ <xs:attribute name="local-tag" type="xs:string"
+ use="mandatory"/>
+ <xs:attribute name="remote-tag" type="xs:string"
+ use="mandatory"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="replaced-dialog" minOccurs="0"
+ maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="call-id" type="xs:string"
+ use="mandatory"/>
+ <xs:attribute name="local-tag" type="xs:string"
+ use="mandatory"/>
+ <xs:attribute name="remote-tag" type="xs:string"
+ use="mandatory"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="appearance" minOccurs="0" maxOccurs="1">
+ <xs:simpleType type="xs:integer">
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element name="exclusive" minOccurs="0" maxOccurs="1">
+ <xs:simpleType type="xs:boolean">
+ </xs:simpleType>
+ </xs:element>
+ </xs:schema>
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 22]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+7. Alert-Info Appearance Parameter Definition
+
+ This specification extends [RFC3261] to add an 'appearance' parameter
+ to the Alert-Info header field and also to allow proxies to modify or
+ delete the Alert-Info header field.
+
+ The changes to the ABNF [RFC5234] in RFC 3261 are:
+
+ alert-param = LAQUOT absoluteURI RAQUOT *( SEMI
+ (generic-param / appearance-param) )
+ appearance-param = "appearance" EQUAL 1*DIGIT
+
+ A proxy inserting an 'appearance' Alert-Info parameter follows normal
+ Alert-Info policies. To indicate the appearance number for this
+ dialog, the proxy adds the Alert-Info header field with the
+ 'appearance' parameter to the INVITE. If an Alert-Info is already
+ present, the proxy adds the 'appearance' parameter to the Alert-Info
+ header field. If an appearance number parameter is already present
+ (associated with another AOR or by mistake), the value is rewritten
+ adding the new appearance number. There MUST NOT be more than one
+ appearance parameter in an Alert-Info header field.
+
+ If no special ringtone is desired, a normal ringtone SHOULD be
+ indicated using the urn:alert:service:normal in the Alert-Info, as
+ per [RFC7462]. The appearance number present in an Alert-Info header
+ field SHOULD be rendered by the UA to the user, following the
+ guidelines in Section 5.3. If the INVITE is forwarded to another
+ AOR, the appearance parameter in the Alert-Info SHOULD be removed
+ before forwarding outside the group.
+
+ The determination as to what value to use in the appearance parameter
+ can be done at the proxy that forks the incoming request to all the
+ registered UAs.
+
+ There is a variety of ways the proxy can determine what value it
+ should use to populate this parameter. For example, the proxy
+ could fetch this information by initiating a SUBSCRIBE request
+ with Expires: 0 to the Appearance Agent for the AOR to fetch the
+ list of lines that are in use. Alternatively, it could act like a
+ UA that is a part of the shared appearance group and SUBSCRIBE to
+ the State-Agent like any other UA. This would ensure that the
+ active dialog information is available without having to poll on a
+ need basis. It could keep track of the list of active calls for
+ the appearance AOR based on how many unique INVITE requests it has
+ forked to or received from the appearance AOR. Another approach
+ would be for the Proxy to first send the incoming INVITE to the
+ Appearance Agent, which would redirect to the shared appearance
+
+
+
+
+Johnston, et al. Standards Track [Page 23]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ group URI and escape the proper Alert-Info header field for the
+ Proxy to recurse and distribute to the other UAs in the group.
+
+ The Appearance Agent needs to know about all incoming requests to
+ the AOR in order to seize the appearance number. One way in which
+ this could be done is for the Appearance Agent to register against
+ the AOR with a higher q value. This will result in the INVITE
+ being sent to the Appearance Agent first, then being offered to
+ the UAs in the group.
+
+8. User Interface Considerations
+
+ The appearance number allocated to a call is an important concept
+ that enables calls to be handled by multiple devices with
+ heterogeneous user interfaces in a manner that still allows users to
+ see a consistent model. Careful treatment of the appearance number
+ is essential to meet the expectations of the users. Also, rendering
+ the correct call/appearance state to users is also important.
+
+8.1. Appearance Number Rendering
+
+ Since different UAs have different user interface capabilities, it is
+ usual to find that some UAs have restrictions that others do not.
+ Perfect interoperability across all UAs is clearly not possible, but
+ by careful design, interoperability up to the limits of each UA can
+ be achieved.
+
+ The following guidelines suggest how the appearance number should be
+ handled in three typical user interface implementations.
+
+8.1.1. Single Appearance UAs
+
+ These devices are constrained by only having the capability of
+ displaying status indications for a single appearance. The UA SHOULD
+ still send messages annotated with appearance number "1". Any call
+ indications for appearances other than for number "1" SHOULD be
+ rejected with a 480 (Temporarily Unavailable) or 486 (Busy Here)
+ response. Note that this means that a single appearance UA cannot
+ answer its own call to the shared AOR, since this call would use a
+ second appearance number.
+
+8.1.2. Dual Appearance UAs
+
+ These devices are essentially single appearance phones that implement
+ call waiting. They have a very simple user interface that allows
+ them to switch between two appearances (toggle or flash hook) and
+ perhaps audible tones to indicate the status of the other appearance.
+ Only appearance numbers "1" and "2" will be used by these UAs.
+
+
+
+Johnston, et al. Standards Track [Page 24]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+8.1.3. Shared Appearance UAs with Fixed Appearance Number
+
+ This UA is the typical 'business-class' hard-phone. A number of
+ appearances are typically configured statically and labeled on
+ buttons, and calls may be managed using these configured appearances.
+ Any calls outside this range should be rejected, and not mapped to a
+ free button. Users of these devices often seize specific appearance
+ numbers for outgoing calls, and the UA will need to seize the
+ appearance number and wait for confirmation from the Appearance Agent
+ before proceeding with calls.
+
+8.1.4. Shared Appearance UAs with Variable Appearance Numbers
+
+ This UA is typically a soft-phone or graphically rich user interface
+ hard-phone. In these cases, even the idea of an appearance index may
+ seem unnecessary. However, for these phones to be able to interwork
+ successfully with other phone types, it is important that they still
+ use the appearance index to govern the order of appearance of calls
+ in progress. No specific guidance on presentation is given except
+ that the order should be consistent. These devices can typically
+ make calls without waiting for confirmation from the Appearance Agent
+ on the appearance number.
+
+8.1.5. Example User Interface Issues
+
+ The problems faced by each style of user interface are readily seen
+ in this example:
+
+ 1. A call arrives at the shared appearance group and is assigned an
+ appearance number of "1". All UAs should be able to render to
+ the user the arrival of this call.
+
+ 2. Another call arrives at the shared appearance group and is
+ assigned an appearance number of "2". The single appearance UA
+ should not present this call to the user. Other UAs should have
+ no problems presenting this call distinctly from the first call.
+
+ 3. The first call clears, releasing appearance number "1". The
+ single appearance UA should now be indicating no calls since it
+ is unable to manage calls other than on the first appearance.
+ Both shared appearance UAs should clearly show that appearance
+ number "1" is now free, but that there is still a call on
+ appearance number "2".
+
+ 4. A third call arrives and is assigned the appearance number of
+ "1". All UAs should be able to render the arrival of this new
+ call to the user. Multiple appearance UAs should continue to
+ indicate the presence of the second call, and they should also
+
+
+
+Johnston, et al. Standards Track [Page 25]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ ensure that the presentation order is related to the appearance
+ number and not the order of call arrival.
+
+8.2. Call State Rendering
+
+ UAs that implement the shared appearances feature typically have a
+ user interface that provides the state of other appearances in the
+ group. As dialog state NOTIFYs from the Appearance Agent are
+ processed, this information can be rendered. Even the simplest user
+ interface typically has three states: idle, active, and hold. The
+ idle state, usually indicated by lamp off, is indicated for an
+ appearance when the appearance number is not associated with any
+ dialogs, as reported by the Appearance Agent. The active state,
+ usually indicated by a lamp on, means that an appearance number is
+ associated with at least one dialog, as reported by the Appearance
+ Agent. The hold state, often indicated by a blinking lamp, means the
+ call state from the perspective of the UA in the shared appearance
+ group is hold. This can be determined by the presence of the
+ "+sip.rendering=no" feature tag [RFC3840] with the local target URI.
+ Note that the hold state of the remote target URI is not relevant to
+ this display. For joined dialogs, the state is rendered as hold only
+ if all local target URIs are indicated with the "+sip.rendering=no"
+ feature tag.
+
+9. Interoperability with Non-shared Appearance UAs
+
+ It is desirable to allow a basic UA that does not directly support
+ shared appearance to be part of a shared appearance group. To
+ support this, the Proxy must collaborate with the Appearance Agent.
+ This is not required in the basic shared appearance architecture;
+ consequently, shared appearance interoperability with non-shared
+ appearance UAs will not be available in all shared appearance
+ deployments.
+
+ First, a UA that does not support dialog events or the shared
+ appearances feature will be discussed. Then, a UA that does support
+ dialog events but not the shared appearances feature will be
+ discussed.
+
+9.1. Appearance Assignment
+
+ A UA that has no knowledge of appearances will only have appearance
+ numbers for outgoing calls if assigned by the Appearance Agent. If
+ the non-shared appearance UA does not support Join or Replaces, all
+ dialogs SHOULD be marked "exclusive" to indicate that these options
+ are not available. Marking these dialogs "exclusive" provides a
+ better user experience and avoids extra SIP messaging failures.
+
+
+
+
+Johnston, et al. Standards Track [Page 26]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+9.2. Appearance Release
+
+ In all cases, the Appearance Agent must be aware of the dialog
+ lifetime to release appearances back into the group.
+
+ It is also desirable that any dialog state changes (such as hold,
+ etc.) be made available to other UAs in the group through the Dialog
+ Event Package. If the Appearance Agent includes a proxy that Record-
+ Routes for dialogs from the non-shared-appearance-aware UA, the
+ Appearance Agent will know about the state of dialogs including hold,
+ etc. This information could be determined from inspection of non-
+ end-to-end-encrypted INVITE and re-INVITE messages and added to the
+ dialog information conveyed to other UAs.
+
+9.3. UAs Supporting Dialog Events but Not Shared Appearance
+
+ Interoperability with UAs that support dialog events but not the
+ shared appearances feature is more straightforward. As before, all
+ appearance number assignments must be done by the Appearance Agent.
+ The Appearance Agent SHOULD still include appearance information in
+ NOTIFYs -- this UA will simply ignore this extra information. This
+ type of UA will also ignore appearance number limitations and may
+ attempt to join or replace dialogs marked exclusive. As a result,
+ the Proxy or UAs need to reject such requests or the dialogs will be
+ joined or taken.
+
+10. Provisioning Considerations
+
+ UAs can automatically discover if this feature is active for an AOR
+ by looking for the 'shared' Event header field parameter in a
+ response to a dialog package SUBSCRIBE to the AOR, so no provisioning
+ for this is needed.
+
+ The registrar will need to be provisioned to accept either first or
+ third party registrations for the shared AOR. First party
+ registration means the To and From URIs in the REGISTER request are
+ the shared AOR URI. Third-party registration means the To URI is the
+ shared AOR URI and the From URI is a different AOR, perhaps that of
+ the individual user. Either the credentials of the shared AOR or the
+ user MUST be accepted by the registrar and the Appearance Agent,
+ depending on the authorization policy in place for the domain.
+
+ If the Appearance Agent needs to subscribe to the dialog state of the
+ UAs, then the Appearance Agent and the UAs need to be provisioned
+ with credentials so the UAs can authenticate the Appearance Agent.
+
+ In some cases, UAs in the shared appearance group might have a UI
+ limitation on the number of appearances that can be rendered.
+
+
+
+Johnston, et al. Standards Track [Page 27]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Typically, this will be hard-phones with buttons/lamps instead of
+ more flexible UIs. In this case, it can be useful for the Appearance
+ Agent to know this maximum number. This can allow the Appearance
+ Agent to apply policy when this limit is reached, e.g., deny a call.
+ However, this mechanism does not provide any way to discover this by
+ protocol means.
+
+11. Example Message Flows
+
+ The next section shows call flow and message examples. The flows and
+ descriptions are non-normative. Note that, in these examples, all
+ INVITEs sent by a UA in the group will be From the shared AOR
+ (sip:HelpDesk@example.com in this case), and all INVITES sent to the
+ group will have a Request-URI of the shared AOR. Any other requests
+ would not apply to this feature and would be handled using normal SIP
+ mechanisms.
+
+ Note that the first 12 examples assume the Appearance Agent is aware
+ of dialog state events. The example in Section 11.13 shows the case
+ where this is not the case, and, as a result, the Appearance Agent
+ initiates a subscription to users of the shared AOR. Any of the
+ other call flow examples could have shown this mode of operation as
+ it is equally valid.
+
+11.1. Registration and Subscription
+
+ Bob and Alice are in a shared appearance group identified by the
+ shared appearance AOR sip:HelpDesk@example.com. Bob REGISTERs using
+ contact sip:bob@ua2.example.com. Alice REGISTERs with contact
+ sip:alice@ua1.example.com.
+
+ UAs for Alice and Bob subscribe to the dialog package for the
+ appearance AOR and publish dialog state to the Appearance Agent.
+ Message exchanges between the Registrar, Appearance Agent, Alice, and
+ Bob are shown below. The call flow examples below do not show the
+ authentication of subscriptions, publications, and notifications. It
+ should be noted that for security purposes, all publications and
+ subscriptions must be authorized before they are accepted.
+
+ Also note that registrations and subscriptions must all be refreshed
+ by Alice at intervals determined by the expiration intervals returned
+ by the Registrar or Appearance Agent.
+
+ Registrar Appearance Agent Alice Bob
+ | | | |
+ | | | |
+ |<--------------------------- REGISTER F1<| |
+ | | | |
+
+
+
+Johnston, et al. Standards Track [Page 28]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ |>F2 200 OK ----------------------------->| |
+ | | | |
+ | |<----- SUBSCRIBE F3<| |
+ | | | |
+ | |>F4 200 OK -------->| |
+ | | | |
+ | |>F5 NOTIFY -------->| |
+ | | | |
+ | |<-------- 200 OK F6<| |
+ | | | |
+ |<-------------------------------------------- REGISTER F7<|
+ | | | |
+ |>F8 200 OK ---------------------------------------------->|
+ | | | |
+ | |<---------------------- SUBSCRIBE F9<|
+ | | | |
+ | |>F10 200 OK ------------------------>|
+ | | | |
+ | |>F11 NOTIFY ------------------------>|
+ | | | |
+ | |<------------------------ 200 OK F12<|
+ | | | |
+
+ Figure 1. Registration and Subscription Example
+
+ F1-F2: Alice registers AOR with
+ contact: <sip:alice@ua1.example.com>
+
+ F1 Alice ----> Registrar
+
+ REGISTER sip:registrar.example.com SIP/2.0
+ Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bK527b54da8ACC7B09
+ From: <sip:alice@example.com>;tag=CDF9A668-909E2BDD
+ To: <sip:HelpDesk@example.com>
+ CSeq: 2 REGISTER
+ Call-ID: d3281184-518783de-cc23d6bb
+ Contact: <sip:alice@ua1.example.com>
+ Max-Forwards: 70
+ Expires: 3600
+ Content-Length: 0
+
+
+ F2 Registrar ----> Alice
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bK527b54da8ACC7B09
+ CSeq: 2 REGISTER
+ Call-ID: d3281184-518783de-cc23d6bb
+
+
+
+Johnston, et al. Standards Track [Page 29]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ From: <sip:alice@example.com>;tag=CDF9A668-909E2BDD
+ To: <sip:HelpDesk@example.com>;tag=1664573879820199
+ Contact: <sip:alice@ua1.example.com>;expires=3600
+ Content-Length: 0
+
+
+ F3 to F6: Alice also subscribes to the events associated with the
+ Appearance AOR. Appearance Agent notifies Alice of the status.
+
+ F3 Alice ----> Appearance Agent
+
+ SUBSCRIBE sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKf10fac97E7A76D6A
+ From: <sip:alice@example.com>;tag=925A3CAD-CEBB276E
+ To: <sip:HelpDesk@example.com>
+ CSeq: 91 SUBSCRIBE
+ Call-ID: ef4704d9-bb68aa0b-474c9d94
+ Contact: <sip:alice@ua1.example.com>
+ Event: dialog;shared
+ Accept: application/dialog-info+xml
+ Max-Forwards: 70
+ Expires: 3700
+ Content-Length: 0
+
+
+ F4 Appearance Agent ----> Alice
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKf10fac97E7A76D6A
+ CSeq: 91 SUBSCRIBE
+ Call-ID: ef4704d9-bb68aa0b-474c9d94
+ From: <sip:alice@example.com>;tag=925A3CAD-CEBB276E
+ To: <sip:HelpDesk@example.com>;tag=1636248422222257
+ Allow-Events: dialog
+ Expires: 3700
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: 0
+
+
+ F5 Appearance Agent ----> Alice
+
+ NOTIFY sip:alice@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=1636248422222257
+ To: <sip:alice@example.com>;tag=925A3CAD-CEBB276E
+ Call-ID: ef4704d9-bb68aa0b-474c9d94
+ CSeq: 232 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1846
+ Max-Forwards: 70
+
+
+
+Johnston, et al. Standards Track [Page 30]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=3000
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ version="40"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ </dialog-info>
+
+
+ F6 Alice ----> Appearance Agent
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1846
+ From: <sip:HelpDesk@example.com>;tag=1636248422222257
+ To: <sip:alice@example.com>;tag=925A3CAD-CEBB276E
+ CSeq: 232 NOTIFY
+ Call-ID: ef4704d9-bb68aa0b-474c9d94
+ Contact: <sip:alice@ua1.example.com>
+ Content-Length: 0
+
+
+ F7 Bob ----> Registrar
+
+ REGISTER sip:registrar.example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4b53b54d87B
+ From: <sip:bob@example.com>;tag=34831131
+ To: <sip:HelpDesk@example.com>
+ CSeq: 72 REGISTER
+ Call-ID: 139490230230249348
+ Contact: <sip:bob@ua2.example.com>
+ Max-Forwards: 70
+ Expires: 3600
+ Content-Length: 0
+
+
+ F8 Registrar ----> Bob
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4b53b54d87B
+ From: <sip:bob@example.com>;tag=34831131
+ To: <sip:HelpDesk@example.com>;tag=fkwlwqi1
+ CSeq: 72 REGISTER
+ Call-ID: 139490230230249348
+
+
+
+Johnston, et al. Standards Track [Page 31]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Contact: <sip:alice@ua1.example.com>;expires=3200
+ Contact: <sip:bob@ua2.example.com>;expires=3600
+ Content-Length: 0
+
+
+
+
+11.2. Appearance Selection for Incoming Call
+
+ In the call flow below, Bob and Alice are in a shared appearance
+ group. Carol places a call to the shared appearance group AOR. The
+ Appearance Agent sends NOTIFYs to Alice and Bob telling them what
+ appearance the call is using. Both Alice and Bob's devices are
+ alerted of the incoming call. Bob answers the call.
+
+ Note that it is possible that both Alice and Bob answer the call and
+ send 200 (OK) responses to Carol. It is up to Carol to resolve this
+ situation. Typically, Carol will send ACKs to both 200 OKs but send
+ a BYE to terminate one of the dialogs. As a result, either Alice or
+ Bob will receive the BYE and publish that their dialog is over.
+ However, if Carol answers both Alice and Bob and keeps both dialogs
+ active, then the Appearance Agent will need to resolve the situation
+ by moving either Alice or Bob's dialog to a different appearance.
+
+ All NOTIFY messages in the call flow below carry dialog events and
+ only dialog states are mentioned for simplicity. For brevity, the
+ details of some messages are not shown below. Note that the order of
+ F2 - F5 and F7 - F8 could be reversed.
+
+ Forking Appearance
+ Carol Proxy Agent Alice Bob
+ | | | | |
+ |>F1 INVITE >| | | |
+ | |< - - - - - >| | |
+ | | |>F2 NOTIFY ----------->|
+ | | | | |
+ | | |<F3 200 OK -----------<|
+ | | | | |
+ | | |>F4 NOTIFY ->| |
+ | | | | |
+ | | |<-200 OK F5-<| |
+ |<- 100 F6 -<| | | |
+ | |>F7 INVITE (appearance=1) ---------->|
+ | | | | |
+ | |>F8 INVITE (appearance=1) >| |
+ | | | | |
+ | |<-------------------- Ringing 180 F9<|
+ |< 180 F10 -<| | | |
+
+
+
+Johnston, et al. Standards Track [Page 32]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | |<--------- 180 Ringing F11<| |
+ |< 180 F12 -<| | | |
+ | | | | |
+ | |<------------------------ 200 OK F13<|
+ |< 200 F14 -<| | | |
+ | | | | |
+ | |>F15 CANCEL -------------->| |
+ | | | | |
+ | |<-------------- 200 OK F16<| |
+ | | | | |
+ | |<Request Cancelled 487 F17<| |
+ | | | | |
+ | |>F18 ACK ----------------->| |
+ |>F19 ACK -->| | | |
+ | |>F20 ACK --------------------------->|
+ | | | | |
+ |<=============Both way RTP established===========>|
+ | | | | |
+ | |< - - - - - >| | |
+ | | | | |
+ | | |>F21 NOTIFY >| |
+ | | | | |
+ | | |<- 200 F22 -<| |
+ | | | | |
+ | | |>F23 NOTIFY ---------->|
+ | | | | |
+ | | |<F24 200 OK ----------<|
+ | | | |
+
+ Figure 2. Appearance Selection for Incoming Call Example
+
+
+ F4 Appearance Agent ----> Alice
+
+ NOTIFY sip:alice@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=151702541050937
+ To: <sip:alice@example.com>;tag=18433323-C3D237CE
+ Call-ID: 1e361d2f-a9f51109-bafe31d4
+ CSeq: 12 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK1403
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=2800
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+
+
+
+Johnston, et al. Standards Track [Page 33]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="13"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="2a7294823093f5274e3fd2ec54a2d76c"
+ call-id="14-1541707345"
+ remote-tag="44BAD75D-E3128D42"
+ direction="recipient">
+ <sa:appearance>1</sa:appearance>
+ <state>trying</state>
+ <remote>
+ <identity>sip:carol@ua.example.com</identity>
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+ F7 Proxy ----> Bob
+
+ INVITE sip:bob@ua2.example.com SIP/2.0
+ Via: SIP/2.0/UDP ua3.example.com;branch=z9hG4bK4324ea
+ Via: SIP/2.0/UDP proxy.example.com;branch=z9hG4bK38432ji
+ From: <sip:carol@example.com>;tag=44BAD75D-E3128D42
+ To: <sip:HelpDesk@example.com>
+ CSeq: 106 INVITE
+ Call-ID: 14-1541707345
+ Contact: <sip:carol@ua3.example.com>
+ Max-Forwards: 69
+ Alert-Info: <urn:alert:service:normal>;appearance=1
+ Content-Type: application/sdp
+ Content-Length: ...
+
+ v=0
+ o=- 1102980499 1102980499 IN IP4 ua3.example.com
+ s=
+ c=IN IP4 ua3.example.com
+ t=0 0
+ m=audio 2238 RTP/AVP 0 8 101
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:101 telephone-event/8000
+
+
+ F21 Appearance Agent ----> Alice
+
+ NOTIFY sip:alice@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=151702541050937
+
+
+
+Johnston, et al. Standards Track [Page 34]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ To: <sip:alice@example.com>;tag=18433323-C3D237CE
+ Call-ID: 1e361d2f-a9f51109-bafe31d4
+ CSeq: 13 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK4164F03j
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=2500
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="17"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="2a7294823093f5274e3fd2ec54a2d76c"
+ call-id="14-1541707345"
+ remote-tag="44BAD75D-E3128D42"
+ local-tag="7349dsfjkFD03s"
+ direction="recipient">
+ <sa:appearance>1</sa:appearance>
+ <state>confirmed</state>
+ <local>
+ <target>sip:bob@ua2.example.com</target>
+ </local>
+ <remote>
+ <identity>sip:carol@ua.example.com</identity>
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+11.3. Outgoing Call without Appearance Seizure
+
+ In this scenario, Bob's UA places a call without first selecting/
+ seizing an appearance number. After Bob sends the INVITE, the
+ appearance assigns an appearance number for it and notifies both
+ Alice and Bob.
+
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | | |
+ | |<------------------------------------- INVITE F1<|
+ | | | | |
+ | |>F2 100 Trying --------------------------------->|
+
+
+
+Johnston, et al. Standards Track [Page 35]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ |<-- INVITE F3<| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<-- NOTIFY F4<| |
+ | | | | |
+ | | |>F5 200 OK -->| |
+ | | | |------- NOTIFY F6>|
+ | | | | |
+ | | | |<F7 200 OK ------<|
+ |>F8 180 ---->| | | |
+ | |>F9 180 Ringing -------------------------------->|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F10<| |
+ | | | | |
+ | | |>F11 200 OK ->| |
+ | | | |------ NOTIFY F12>|
+ | | | | |
+ | | | |<F13 200 OK -----<|
+ |>F14 200 OK ->| | | |
+ | |>F15 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F16<|
+ |<---- ACK F17<| | | |
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F18<| |
+ | | | | |
+ | | |>F19 200 OK ->| |
+ | | | |------ NOTIFY F20>|
+ | | | | |
+ | | | |<F21 200 OK -----<|
+ | | | | |
+
+ Figure 3. Outgoing Call without Appearance Seizure Example
+
+
+ F1 Bob ----> Proxy
+
+ INVITE sip:carol@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK98c87c52123A08BF
+ From: <sip:HelpDesk@example.com>;tag=15A3DE7C-9283203B
+ To: <sip:carol@example.com>
+ CSeq: 1 INVITE
+
+
+
+Johnston, et al. Standards Track [Page 36]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Call-ID: f3b3cbd0-a2c5775e-5df9f8d5
+ Contact: <sip:bob@ua2.example.com>
+ Max-Forwards: 70
+ Content-Type: application/sdp
+ Content-Length: 223
+
+ v=0
+ o=- 1102980499 1102980499 IN IP4 ua2.example.com
+ s=IP SIP UA
+ c=IN IP4 ua2.example.com
+ t=0 0
+ a=sendrecv
+ m=audio 2236 RTP/AVP 0 8 101
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:101 telephone-event/8000
+
+
+ F4 Appearance Agent ----> Alice
+
+ NOTIFY sip:alice@ua1.example.com SIP/2.0
+ Via: SIP/2.0/UDP appearanceagent.example.com;branch=z9hG4bK81d84f62
+ From: <sip:HelpDesk@example.com>;tag=1636248422222257
+ To: <sip:alice@example.com>;tag=925A3CAD-CEBB276E
+ Call-ID: ef4704d9-bb68aa0b-474c9d94
+ CSeq: 233 NOTIFY
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=2200
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="27"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="fa02538339df3ce597f9e3e3699e28fc"
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ local-tag="15A3DE7C-9283203B" direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+
+
+
+Johnston, et al. Standards Track [Page 37]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ </local>
+ </dialog>
+ </dialog-info>
+
+
+ F6 Appearance Agent ----> Bob
+
+ NOTIFY sip:bob@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=497585728578386
+ To: <sip:bob@example.com>;tag=633618CF-B9C2EDA4
+ Call-ID: a7d559db-d6d7dcad-311c9e3a
+ CSeq: 7 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com
+ ;branch=z9hG4bK1711759878512309
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=2000
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="78"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="02538339hfgdf3ce597f9e3egkl3699e28fc"
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ local-tag="15A3DE7C-9283203B" direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ </dialog>
+ </dialog-info>
+
+11.4. Outgoing Call with Appearance Seizure
+
+ In this scenario, Bob's UA sends out a dialog event PUBLISH with
+ state (trying) selecting/seizing an appearance number before sending
+ the INVITE. After receiving the 200 (OK) from the Appearance Agent
+ confirming the appearance number, Bob's UA sends the INVITE to Carol
+ and establishes a session. For brevity, details of some of the
+ messages are not included in the message flows. Bob's UA puts as
+
+
+
+Johnston, et al. Standards Track [Page 38]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ much of the dialog information from F7 as can be determined in
+ advance. In this case, the minimum of the Contact URI is included,
+ which allows the Appearance Agent to correlate the INVITE with the
+ PUBLISH.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | |<----- PUBLISH F1<|
+ | | | | |
+ | | | |>F2 200 OK ------>|
+ | | | | |
+ | | |<-- NOTIFY F3<| |
+ | | | | |
+ | | |>F4 200 OK -->| |
+ | | | |------- NOTIFY F5>|
+ | | | | |
+ | | | |<F6 200 OK ------<|
+ | | | | |
+ | |<------------------------------------- INVITE F7<|
+ | | | | |
+ | |>F8 100 Trying --------------------------------->|
+ |<-- INVITE F9<| | | |
+ | | | |<---- PUBLISH F10<|
+ | | | | |
+ | | | |>F11 200 OK ----->|
+ | | | | |
+ |>F12 180 --->| | | |
+ | |>F13 180 Ringing ------------------------------->|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F14<| |
+ | | | | |
+ | | |>F15 200 OK ->| |
+ | | | |------ NOTIFY F16>|
+ | | | | |
+ | | | |<F17 200 OK -----<|
+ |>F18 200 OK ->| | | |
+ | |>F19 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F20<|
+ |<---- ACK F21<| | | |
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F22<| |
+
+
+
+Johnston, et al. Standards Track [Page 39]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | | |
+ | | |>F23 200 OK ->| |
+ | | | |------ NOTIFY F24>|
+ | | | | |
+ | | | |<F25 200 OK -----<|
+ | | | | |
+
+ Figure 4. Outgoing Call with Appearance Seizure Example
+
+ F1 to F4: Bob uses the shared appearance of the Help Desk on his UA
+ to place an outgoing call (e.g., he goes off-hook). Before sending
+ the outgoing INVITE request, Bob publishes to the Appearance Agent
+ reserving appearance number 1. The Appearance Agent notifies Alice
+ (and all other UAs, including Bob) of the event by sending NOTIFYs.
+
+
+ F1 Bob ----> Appearance Agent
+
+ PUBLISH sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
+ From: <sip:bob@example.com>;tag=44150CC6-A7B7919D
+ To: <sip:HelpDesk@example.com>
+ CSeq: 7 PUBLISH
+ Call-ID: 44fwF144-F12893K38424
+ Contact: <sip:bob@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="6"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="id3d4f9c83" direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ </dialog>
+ </dialog-info>
+
+
+
+
+
+Johnston, et al. Standards Track [Page 40]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ F2 Appearance Agent ----> Bob
+
+ SIP/2.0 200 OK
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
+ From: <sip:bob@example.com>;tag=44150CC6-A7B7919D
+ To: <sip:HelpDesk@example.com>
+ CSeq: 7 PUBLISH
+ Call-ID: 44fwF144-F12893K38424
+ Contact: <sip:bob@ua2.example.com>
+ Event: dialog;shared
+ SIP-Etag: 482943245
+ Allow-Events: dialog
+ Expires: 60
+ Content-Length: 0
+
+
+ F7 Bob ---> Proxy
+
+ INVITE sip:carol@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK342122
+ Max-Forwards: 70
+ From: <sip:HelpDesk@example.com>;tag=15A3DE7C-9283203B
+ To: <sip:carol@example.com>
+ Call-ID: f3b3cbd0-a2c5775e-5df9f8d5
+ CSeq: 31 INVITE
+ Contact: <sip:bob@ua2.example.com>
+ Content-Type: application/sdp
+ Content-Length: ...
+
+ (SDP Not Shown)
+
+
+ F10 Bob ----> Appearance Agent
+
+ PUBLISH sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK6d644638E7
+ From: <sip:bob@example.com>;tag=0CCf6-A7FdsB79D
+ To: <sip:HelpDesk@example.com>
+ CSeq: 437 PUBLISH
+ Call-ID: fwF14d4-F1FFF2F2893K38424
+ Contact: <sip:bob@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+
+
+
+Johnston, et al. Standards Track [Page 41]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="6"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="id3d4f9c83"
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ local-tag="15A3DE7C-9283203B"
+ direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ <remote>
+ <identity uri="sip:carol@example.com">
+ </identity>
+ </remote>
+ </dialog>
+ </dialog-info>
+
+11.5. Outgoing Call without Using an Appearance Number
+
+ In this scenario, Bob's UA sends out a dialog event PUBLISH with
+ state (trying) indicating that he does not want to utilize an
+ appearance number for this dialog. The PUBLISH does not have an
+ appearance element but does have the 'shared' Event header field
+ parameter. As a result, the Appearance Agent knows the UA does not
+ wish to use an appearance number for this call. If the Appearance
+ Agent does not wish to allow this, it would reject the PUBLISH with a
+ 400 (Bad Request) response and the UA would know to re-PUBLISH
+ selecting/seizing an appearance number.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | |<----- PUBLISH F1<|
+ | | | | |
+ | | | |>F2 200 OK ------>|
+ | | | | |
+ | | |<-- NOTIFY F3<| |
+ | | | | |
+ | | |>F4 200 OK -->| |
+ | | | |------- NOTIFY F5>|
+ | | | | |
+ | | | |<F6 200 OK ------<|
+ | | | | |
+ | |<------------------------------------- INVITE F7<|
+
+
+
+Johnston, et al. Standards Track [Page 42]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | | |
+ | |>F8 100 Trying --------------------------------->|
+ |<-- INVITE F9<| | | |
+ | | | |<---- PUBLISH F10<|
+ | | | | |
+ | | | |>F11 200 OK ----->|
+ | | | | |
+ |>F12 180 --->| | | |
+ | |>F13 180 Ringing ------------------------------->|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F14<| |
+ | | | | |
+ | | |>F15 200 OK ->| |
+ | | | |------ NOTIFY F16>|
+ | | | | |
+ | | | |<F17 200 OK -----<|
+ |>F18 200 OK ->| | | |
+ | |>F19 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F20<|
+ |<---- ACK F21<| | | |
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F22<| |
+ | | | | |
+ | | |>F23 200 OK ->| |
+ | | | |------ NOTIFY F24>|
+ | | | | |
+ | | | |<F25 200 OK -----<|
+ | | | | |
+
+ Figure 5. Outgoing Call without using an Appearance Number Example
+
+
+ F1 Bob ----> Appearance Agent
+
+ PUBLISH sip:appearanceagent.example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bK61314d6446383E79
+ From: <sip:bob@example.com>;tag=4415df82k39sf
+ To: <sip:HelpDesk@example.com>
+ CSeq: 7 PUBLISH
+ Call-ID: 44fwF144-F12893K38424
+ Contact: <sip:bob@ua2.example.com>
+
+
+
+Johnston, et al. Standards Track [Page 43]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="6"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="id3d4f9c83" direction="initiator">
+ <sa:exclusive>false</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ </dialog>
+ </dialog-info>
+
+ Note that F7 would be the same as the previous example.
+
+11.6. Appearance Release
+
+ Bob and Carol are in a dialog, created, for example as in
+ Section 11.3. Carol sends a BYE to Bob to terminate the dialog and
+ the Appearance Agent de-allocates the appearance number used, sending
+ notifications out to the UAs in the shared group.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ |>F22 BYE ---->| | | |
+ | |>F23 BYE --------------------------------------->|
+ | | | | |
+ | |<------------------------------------ 200 OK F24<|
+ |<--200 OK F25<| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F26<| |
+ | | | | |
+ | | |>F27 200 OK ->| |
+ | | | |------ NOTIFY F28>|
+ | | | | |
+ | | | |<F29 200 OK -----<|
+
+
+
+Johnston, et al. Standards Track [Page 44]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Figure 6. Appearance Release Example
+
+ F28 Appearance Agent ----> Bob
+
+ NOTIFY sip:bob@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=497585728578386
+ To: <sip:bob@example.com>
+ Call-ID: a7d559db-d6d7dcad-311c9e3a
+ CSeq: 7 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com
+ ;branch=z9hG4bK759878512309
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=1800
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="27"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="fa02538339df3ce597f9e3e3699e28fc"
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ local-tag="15A3DE7C-9283203B"
+ remote-tag="65a98f7c-1dd2-11b2-88c6-b0316298f7c"
+ direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>terminated</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ </dialog>
+ </dialog-info>
+
+
+11.7. Appearance Pickup
+
+ In this scenario, Bob has an established dialog with Carol created
+ using the call flows of Figures 1 or 2. Bob then places Carol on
+ hold. Alice receives a notification of this and renders this on
+ Alice's UI. Alice subsequently picks up the held call and has a
+ established session with Carol. Finally, Carol hangs up. Alice must
+ PUBLISH F32 to indicate that the INVITE F38 will be an attempt to
+
+
+
+Johnston, et al. Standards Track [Page 45]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ pickup the dialog between Carol and Bob and, hence, may use the same
+ appearance number. This example also shows Secure SIP (sips) being
+ used.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |<------------------------------(hold) INVITE F22<|
+ |<- INVITE F23<| | | |
+ | | | | |
+ |>F24 200 OK ->| | | |
+ | |>F25 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F26<|
+ |<---- ACK F27<| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F28<| |
+ | | | | |
+ | | |>F29 200 OK ->| |
+ | | | |>F30 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F31<|
+ | | | | |
+ | | Alice decides to pick up the call |
+ | | | | |
+ | | |>F32 PUBLISH->| |
+ | | | | |
+ | | |<- 200 OK F33<| |
+ | | | | |
+ | | |<- NOTIFY F34<| |
+ | | | | |
+ | | |>F35 200 OK ->| |
+ | | | |>F36 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F37<|
+ | |<-- INVITE F38<| | |
+ |<- INVITE F39<|(w/ Replaces) | | |
+ |( w/ Replaces)| | | |
+ |>F40 200 OK ->| | | |
+ | |>F41 200 OK -->| | |
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | | |>F42 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F43<|
+
+
+
+Johnston, et al. Standards Track [Page 46]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | |<- NOTIFY F44<| |
+ | | | | |
+ | | |>F45 200 OK ->| |
+ | | | | |
+ | |<----- ACK F46<| | |
+ |<---- ACK F47<| | | |
+ | | | | |
+ |<= Both way RTP established =>| | |
+ | | | | |
+ |>F48 BYE ---->| | | |
+ | |>F49 BYE --------------------------------------->|
+ | | | | |
+ | |<------------------------------------ OK 200 F50<|
+ |<- 200 OK F51<| | | |
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F52<| |
+ | | | | |
+ | | |>F53 200 OK ->| |
+ | | | | |
+ | | | |>F54 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F55<|
+
+ Figure 7. Appearance Pickup Example
+
+
+ F28 Appearance ----> Alice
+
+ NOTIFY sips:alice@ua1.example.com SIP/2.0
+ From: <sips:HelpDesk@example.com>;tag=151702541050937
+ To: <sips:alice@example.com>;tag=18433323-C3D237CE
+ Call-ID: 1e361d2f-a9f51109-bafe31d4
+ CSeq: 12 NOTIFY
+ Via: SIP/2.0/TLS appearanceagent.example.com
+ ;branch=z9hG4bK1403
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=1800
+ Contact: <sips:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+
+
+
+Johnston, et al. Standards Track [Page 47]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ state="partial"
+ entity="sips:HelpDesk@example.com">
+ <dialog id="id3d4f9c83"
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ local-tag="15A3DE7C-9283203B"
+ remote-tag="65a98f7c-1dd2-11b2-88c6-b0316298f7c"
+ direction="initiator">
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <state>active</state>
+ <local>
+ <target uri="sips:bob@ua2.example.com">
+ <param pname="+sip.rendering" pval="no"/>
+ </target>
+ </local>
+ <remote>
+ <identity>sips:carol@example.com</identity>
+ <target uri="sips:carol@ua3.example.com" />
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+ F32 Alice ----> Appearance Agent
+
+ PUBLISH sips:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/TLS ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
+ From: <sips:HelpDesk@example.com>;tag=44150CC6-A7B7919D
+ To: <sips:alice@example.com>;tag=428765950880801
+ CSeq: 11 PUBLISH
+ Call-ID: 87837Fkw87asfds
+ Contact: <sips:alice@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+ state="full"
+ entity="sips:HelpDesk@example.com">
+ <dialog id="id3d4f9c83"
+ call-id="3d57cd17-47deb849-dca8b6c6"
+ local-tag="8C4183CB-BCEAB710" >
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+
+
+
+Johnston, et al. Standards Track [Page 48]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ <sa:replaced-dialog
+ call-id="f3b3cbd0-a2c5775e-5df9f8d5"
+ from-tag="15A3DE7C-9283203B"
+ to-tag="65a98f7c-1dd2-11b2-88c6-b03162323164+65a98f7c" />
+ <state>trying</state>
+ <local>
+ <target uri="sips:alice@ua1.example.com">
+ <param pname="+sip.rendering" pval="yes"/>
+ </target>
+ </local>
+ <remote>
+ <target uri="sips:carol@ua3.example.com" />
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+ F38 Alice ----> Proxy
+
+ INVITE sips:carol@example.com SIP/2.0
+ Via: SIP/2.0/TLS ua1.example.com;branch=z9hG4bK4ea695b5B376A60C
+ From: <sips:HelpDesk@example.com>;tag=8C4183CB-BCEAB710
+ To: <sips:carol@example.com:5075>
+ CSeq: 1 INVITE
+ Call-ID: 3d57cd17-47deb849-dca8b6c6
+ Contact: <sips:alice@ua1.example.com>
+ <all-one-line>
+ Replaces: f3b3cbd0-a2c5775e-5df9f8d5;to-tag=65a98f7c
+ -1dd2-11b2-88c6-b03162323164+65a98f7c;from-tag=15A3DE7C-9283203B
+ </all-one-line>
+ Max-Forwards: 70
+ Content-Type: application/sdp
+ Content-Length: 223
+
+ v=0
+ o=- 1102980497 1102980497 IN IP4 ua1.example.com
+ s=IP SIP UA
+ c=IN IP4 ua1.example.com
+ t=0 0
+ a=sendrecv
+ m=audio 2238 RTP/AVP 0 8 101
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:101 telephone-event/8000
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 49]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+11.8. Call between UAs within the Group
+
+ In this scenario, Bob calls Alice who is also in the shared
+ appearance group. Only one appearance number is used for this
+ dialog. This example also shows the use of the 'exclusive' tag to
+ indicate that other UAs in the group can not join or take this
+ dialog.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | |<-------------------- INVITE (to Alice's UA) F1<|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | | | |
+ | | |<-- NOTIFY F2<| |
+ | | | | |
+ | | |>F3 200 OK -->| |
+ | | | |>F4 NOTIFY ------>|
+ | | | | |
+ | | | |<------ 200 OK F5<|
+ | |>F6 INVITE --->| | |
+ | | (appearance=1)| | |
+ | | | | |
+ | |<------ 180 F7<| | |
+ | | | | |
+ | |>F8 180 --------------------------------------->|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<-- NOTIFY F9<| |
+ | | | | |
+ | | |>F10 200 OK ->| |
+ | | | |>F11 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F12<|
+ | |<-- 200 OK F13<| | |
+ | | | | |
+ | |>F14 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F15<|
+ | | | | |
+ | |>F16 ACK ----->| | |
+ | | | | |
+ | | |<======= RTP established =======>|
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+
+
+
+Johnston, et al. Standards Track [Page 50]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | |<- NOTIFY F17<| |
+ | | | | |
+ | | |>F18 200 OK ->| |
+ | | | |>F19 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F24<|
+ | | | | |
+
+ Figure 8. Call between UAs within the Group Example
+
+
+ F19 Appearance Agent ----> Bob
+
+ NOTIFY sip:bob@ua1.example.com SIP/2.0
+ From: <sip:HelpDesk@example.com>;tag=497585728578386
+ To: <sip:bob@example.com>;tag=633618CF-B9C2EDA4
+ Call-ID: a7d559db-d6d7dcad-311c9e3a
+ CSeq: 7 NOTIFY
+ Via: SIP/2.0/UDP appearanceagent.example.com
+ ;branch=z9hG4bK1711759878512309
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Event: dialog;shared
+ Subscription-State: active;expires=1500
+ Contact: <sip:appearanceagent.example.com>
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+ state="partial"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="3xdsd4f9c83"
+ call-id="b3cbd0-ad2c5775e-5df9f8d5"
+ local-tag="34322kdfr234f"
+ remote-tag="3153DE7C-928203B"
+ direction="initiator">
+ <sa:exclusive>true</sa:exclusive>
+ <sa:appearance>1</sa:appearance>
+ <state>confirmed</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ <remote>
+ <identity>sip:HelpDesk@example.com</identity>
+ <target uri="sip:alice@ua1.example.com" />
+
+
+
+Johnston, et al. Standards Track [Page 51]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ </remote>
+ </dialog>
+
+ <dialog id="4839589"
+ call-id="b3cbd0-ad2c5775e-5df9f8d5"
+ local-tag="3153DE7C-928203B"
+ remote-tag="34322kdfr234f"
+ direction="responder">
+ <sa:exclusive>true</sa:exclusive>
+ <sa:appearance>1</sa:appearance>
+ <state>confirmed</state>
+ <local>
+ <target uri="sip:alice@ua1.example.com" />
+ </local>
+ <remote>
+ <identity>sip:HelpDesk@example.com</identity>
+ <target uri="sip:bob@ua2.example.com" />
+ </remote>
+ </dialog>
+
+ </dialog-info>
+
+11.9. Consultation Hold with Appearances
+
+ In this scenario, Bob has a call with Carol. Bob makes a
+ consultation call to Alice by putting Carol on hold and calling
+ Alice. Bob's UA chooses not to have an appearance number for the
+ call to Alice since it is treating it as part of the call to Carol.
+ He indicates this in the PUBLISH F32, which contains the 'shared'
+ Event header field parameter but no <appearance> element. The
+ PUBLISH is sent before the INVITE to Alice to ensure no appearance
+ number is assigned by the Appearance Agent. Finally, Bob hangs up
+ with Alice and resumes the call with Carol. Dialog notifications of
+ the consultation call are not shown, as they are not used.
+
+ Note that if Carol hangs up while Bob is consulting with Alice, Bob
+ can decide if he wants to reuse the appearance number used with Carol
+ for the call with Alice. If not, Bob publishes the termination of
+ the dialog with Carol and the Appearance Agent will re-allocate the
+ appearance. If he wants to keep the appearance, Bob will publish the
+ termination of the dialog with Carol and also publish the appearance
+ with the dialog with Alice. This will result in Bob keeping the
+ appearance number until he reports the dialog with Alice terminated.
+
+ Note that the call flow would be similar if Bob called a music on
+ hold server instead of Alice to implement a music on hold service as
+ described in [RFC7088].
+
+
+
+
+Johnston, et al. Standards Track [Page 52]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |<------------------------------(hold) INVITE F22<|
+ |<- INVITE F23<| | | |
+ | | | | |
+ |>F24 200 OK ->| | | |
+ | |>F25 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F26<|
+ |<---- ACK F27<| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F28<| |
+ | | | | |
+ | | |>F29 200 OK ->| |
+ | | | |>F30 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F31<|
+ | | | | |
+ | | Bob makes a consultation call to Alice |
+ | | | | |
+ | | | |<---- PUBLISH F32<|
+ | | | | |
+ | | | |>F33 200 OK ----->|
+ | | | | |
+ | |<------------------------------------ INVITE F34<|
+ | | | | |
+ | |>F35 INVITE -->| | |
+ | | | | |
+ | |<-- 200 OK F36<| | |
+ | | | | |
+ | |>F37 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F38<|
+ | | | | |
+ | |>F39 ACK ----->| | |
+ | | | | |
+ | | |<======= RTP established =======>|
+ | | | | |
+ | | Bob hangs up with Alice |
+ | | | | |
+ | |<--------------------------------------- BYE F40<|
+ | | | | |
+ | |>F41 BYE ----->| | |
+ | | | | |
+ | |<-- 200 OK F42<| | |
+
+
+
+Johnston, et al. Standards Track [Page 53]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | | |
+ | |>F43 200 OK ------------------------------------>|
+ | | | | |
+ | |<----------------------------(unhold) INVITE F44<|
+ |<- INVITE F45<| | | |
+ | | | | |
+ |>F46 200 OK ->| | | |
+ | |>F47 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F48<|
+ |<---- ACK F49<| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F50<| |
+ | | | | |
+ | | |>F51 200 OK ->| |
+ | | | |>F52 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F53<|
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+
+ Figure 9. Consultation Hold with Appearances Example
+
+ F32 Bob ----> Appearance Agent
+
+ PUBLISH sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
+ From: <sip:bob@example.com>;tag=44150CC6-A7B7919D
+ To: <sip:HelpDesk@example.com>;tag=428765950880801
+ CSeq: 11 PUBLISH
+ Call-ID: 44fwF144-F12893K38424
+ Contact: <sip:bob@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="id3d4f9c83"
+ call-id="b3cbd0-ad2c5775e-5df9f8d5"
+ local-tag="3153DE7C-928203B"
+
+
+
+Johnston, et al. Standards Track [Page 54]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ direction="initiator">
+ <sa:exclusive>true</sa:exclusive>
+ <state>trying</state>
+ <local>
+ <target uri="sip:bob@ua2.example.com">
+ </target>
+ </local>
+ <remote>
+ <identity>sip:HelpDesk@example.com</identity>
+ <target uri="sip:alice@ua1.example.com" />
+ </remote>
+ </dialog>
+ </dialog-info>
+
+11.10. Joining or Bridging an Appearance
+
+ In this call flow, a call answered by Bob is joined by Alice or
+ "bridged". The Join header field is used by Alice to request this
+ bridging. If Bob did not support media mixing, Bob could obtain
+ conferencing resources as described in [RFC4579].
+
+ Carol Forking Proxy Appearance Agent Alice Bob
+ | | | | |
+ |<=============Both way RTP established===========>|
+ | | | | |
+ | | |< PUBLISH F22| |
+ | | | | |
+ | | |>F23 200 OK >| |
+ | | | | |
+ | |<---- INVITE (w/ Join) F24<| |
+ | | | | |
+ | |>F25 INVITE (w/Join)---------------->|
+ | | | | |
+ | |<---- OK 200 Contact:Bob;isfocus F26<|
+ | | | | |
+ | |< - - - - - >| | |
+ | | | | |
+ | | |>F27 NOTIFY >| |
+ | | | | |
+ | | |< 200 OK F28<| |
+ | | | | |
+ | | |>F29 NOTIFY ---------->|
+ | | | | |
+ | | |<F30 200 OK ----------<|
+ | | | | |
+ | |>F31 200 OK Contact:B----->| |
+ | | | | |
+ | |<----------------- ACK F32<| |
+
+
+
+Johnston, et al. Standards Track [Page 55]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | | |
+ | |>ACK F33---------------------------->|
+ | | | | |
+ | |<-----INVITE Contact:Bob;isfocus F34<|
+ |<-INVITE F35| | | |
+ | | | | |
+ |>F26 200 -->| | | |
+ | |>F37 200 OK ------------------------>|
+ | | | | |
+ | |<--------------------------- ACK F38<|
+ |<--- ACK F39| | | |
+ | | | |<==RTP==>|
+ |<=============Both way RTP established===========>|
+ | | | | |
+ | |< - - - - - >| | |
+ | | | | |
+ | | |>F40 NOTIFY >| |
+ | | | | |
+ | | |< 200 OK F41<| |
+ | | | | |
+ | | |>F42 NOTIFY ---------->|
+ | | | | |
+ | | |<F43 200 OK ----------<|
+ | | | | |
+
+ Figure 10. Joining or Bridging an Appearance Example
+
+ F22 Alice ----> Appearance Agent
+
+ PUBLISH sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
+ From: <sip:alice@example.com>;tag=44150CC6-A7B7919D
+ To: <sip:HelpDesk@example.com>;tag=428765950880801
+ CSeq: 11 PUBLISH
+ Call-ID: 87837Fkw87asfds
+ Contact: <sip:alice@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+ state="full"
+ entity="sip:HelpDesk@example.com:5060">
+ <dialog id="id3d4f9c83"
+
+
+
+Johnston, et al. Standards Track [Page 56]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ call-id="dc95da63-60db1abd-d5a74b48"
+ local-tag="605AD957-1F6305C2" >
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <sa:joined-dialog
+ call-id="14-1541707345"
+ from-tag="44BAD75D-E3128D42"
+ to-tag="d3b06488-1dd1-11b2-88c5-b03162323164+d3e48f4c" />
+ <state>trying</state>
+ <local>
+ <target uri="sip:alice@ua1.example.com">
+ </target>
+ </local>
+ <remote>
+ <target uri="sip:bob@example.com" />
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+ F24 Alice ----> Proxy
+
+ INVITE sip:bob@ua.example.com SIP/2.0
+ Via: SIP/2.0/UDP ua1.example.com;branch=z9hG4bKcc9d727c2C29BE31
+ From: <sip:HelpDesk@example.com>;tag=605AD957-1F6305C2
+ To: <sip:bob@ua.example.com>
+ CSeq: 2 INVITE
+ Call-ID: dc95da63-60db1abd-d5a74b48
+ Contact: <sip:alice@ua1.example.com>
+ <all-one-line>
+ Join: 14-1541707345;to-tag=d3b06488-1dd1-11b2-88c5
+ -b03162323164+d3e48f4c;from-tag=44BAD75D-E3128D42
+ </all-one-line>
+ Max-Forwards: 70
+ Content-Type: application/sdp
+ Content-Length: 223
+
+ v=0
+ o=- 1103061265 1103061265 IN IP4 ua1.example.com
+ s=IP SIP UA
+ c=IN IP4 ua1.example.com
+ t=0 0
+ a=sendrecv
+ m=audio 2236 RTP/AVP 0 8 101
+ a=rtpmap:0 PCMU/8000
+ a=rtpmap:8 PCMA/8000
+ a=rtpmap:101 telephone-event/8000
+
+
+
+
+Johnston, et al. Standards Track [Page 57]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+11.11. Loss of Appearance during Allocation
+
+ Bob reserves an appearance with a PUBLISH, sends an INVITE to Carol,
+ then becomes unreachable. When he fails to refresh his publication
+ to the appearance agent, the Appearance Agent declares the dialog
+ terminated and frees up the appearance using NOTIFYs F14 and F16.
+ After retransmitting the NOTIFY to Bob (in not shown messages F17,
+ F18, etc.), the subscription is terminated.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | |<----- PUBLISH F1<|
+ | | | | |
+ | | | |>F2 200 OK ------>|
+ | | | | |
+ | | |<-- NOTIFY F3<| |
+ | | | | |
+ | | |>F4 200 OK -->| |
+ | | | |------- NOTIFY F5>|
+ | | | | |
+ | | | |<F6 200 OK ------<|
+ | | | | |
+ | |<------------------------------------- INVITE F7<|
+ | | | | |
+ | |>F8 100 Trying --------------------------------->|
+ |<-- INVITE F9<| | | |
+ | | | |<---- PUBLISH F10<|
+ | | | | |
+ | | | |>F11 200 OK ----->|
+ | | | | |
+ |>F12 180 --->| | | |
+ | |>F13 180 Ringing ------------------------------->|
+ | | | | |
+ | | | | Bob goes offline |
+ | | | | |
+ | | | Appearance selection times out |
+ | | | | |
+ | | |<- NOTIFY F14<| |
+ | | | | |
+ | | |>F15 200 OK ->| |
+ | | | |------ NOTIFY F16>|
+ | | | | |
+ | | | NOTIFY is retransmitted |
+
+ Figure 11. Loss of Appearance during Allocation Example
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 58]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+11.12. Appearance Seizure Contention Race Condition
+
+ Bob and Alice both try to reserve appearance 2 by publishing at the
+ same time. The Appearance Agent allocates the appearance to Bob by
+ sending a 200 OK and denies it to Alice by sending a 400 (Bad
+ Request) response. After the NOTIFY F5, Alice learns that Bob is
+ using appearance 2. Alice then attempts to reserve appearance 3 by
+ publishing, which is then accepted.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 59]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | | | |<----- PUBLISH F1<|
+ | | | | (appearance=2)
+ | | |>F2 PUBLISH ->| |
+ | | | (appearance=2) |
+ | | | | |
+ | | | |>F3 200 OK ------>|
+ | | |<---- F4 400 <| |
+ | | | | |
+ | | |<-- NOTIFY F5<| |
+ | | | | |
+ | | |>F6 200 OK -->| |
+ | | | |------- NOTIFY F7>|
+ | | | | |
+ | | | |<F8 200 OK ------<|
+ | | | | |
+ | |<------------------------------------- INVITE F9<|
+ | | | | |
+ | |>F10 100 Trying -------------------------------->|
+ |<- INVITE F11<| | | |
+ | | | |<---- PUBLISH F12<|
+ | | | | (appearance=2)
+ | | | |>F13 200 OK ----->|
+ | | |>F14 PUBLISH->| |
+ | | | (appearance=3) |
+ | | | | |
+ | | |<--- F15 200 <| |
+ | | | | |
+ | | |<- NOTIFY F16<| |
+ | | | | |
+ | | |>F17 200 OK ->| |
+ Dave | | |------ NOTIFY F18>|
+ | | | | |
+ | | | |<F19 200 OK -----<|
+ | |<-- INVITE F20<| | |
+ | | | | |
+ | |>F21 100 ----->| | |
+ |<- INVITE F22<| | | |
+
+ Figure 12. Appearance Seizure Contention Race Condition Example
+
+
+11.13. Appearance Agent Subscription to UAs
+
+ In this scenario, the Appearance Agent does not have any way of
+ knowing Bob's dialog state information, except through Bob. This
+ could be because the Appearance Agent is not part of a B2BUA, or
+
+
+
+Johnston, et al. Standards Track [Page 60]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ perhaps Bob is remotely registering. When Bob registers, the
+ Appearance Agent receives a registration event package notification
+ from the registrar. The Appearance Agent then SUBSCRIBEs to Bob's
+ dialog event state using Event:dialog in the SUBSCRIBE. Whenever
+ Bob's dialog state changes, Bob's UA sends a NOTIFY to the Appearance
+ Agent which then notifies the other UAs in the group.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ | |<----------------------------------- REGISTER F1<|
+ | | | | |
+ | |>F2 200 OK ------------------------------------->|
+ | | | | |
+ | |>F3 NOTIFY ------------------>| |
+ | | | | |
+ | |<------------------ 200 OK F4<| |
+ | | | |---- SUBSCRIBE F5>|
+ | | | | |
+ | | | |<F6 200 OK ------<|
+ | | | | |
+ | | | |<------ NOTIFY F7<|
+ | | | | |
+ | | | |>F8 200 OK ------>|
+ | | | | |
+ | | | |<--- SUBSCRIBE F9<|
+ | | | | |
+ | | | |>F10 200 OK ----->|
+ | | | | |
+ | | | |------ NOTIFY F11>|
+ | | | | |
+ | | | |<F12 200 OK -----<|
+ | | | | |
+ | |<------------------------------------ INVITE F13<|
+ | | | | |
+ | |>F14 100 Trying -------------------------------->|
+ |<- INVITE F15<| | | |
+ | | | |<----- NOTIFY F16<|
+ | | | | |
+ | | | |>F17 200 OK ----->|
+ | | |<- NOTIFY F18<| |
+ | | | | |
+ | | |>F19 200 OK ->| |
+ | | | |------ NOTIFY F20>|
+ | | | | |
+ | | | |<F21 200 OK -----<|
+ |>F22 180 --->| | | |
+ | |>F23 180 Ringing ------------------------------->|
+ | | | | |
+
+
+
+Johnston, et al. Standards Track [Page 61]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | |<----- NOTIFY F24<|
+ | | | | |
+ | | | |>F25 200 OK ----->|
+ | | |<- NOTIFY F26<| |
+ | | | | |
+ | | |>F27 200 OK ->| |
+ | | | |------ NOTIFY F28>|
+ | | | | |
+ | | | |<F29 200 OK -----<|
+ |>F30 200 OK ->| | | |
+ | |>F31 200 OK ------------------------------------>|
+ | | | | |
+ | | | |<----- NOTIFY F32<|
+ | | | | |
+ | | | |>F33 200 OK ----->|
+ | | | | |
+ | |<--------------------------------------- ACK F34<|
+ |<---- ACK F35<| | | |
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | | |<- NOTIFY F36<| |
+ | | | | |
+ | | |>F37 200 OK ->| |
+ | | | |------ NOTIFY F38>|
+ | | | | |
+ | | | |<F39 200 OK -----<|
+ | | | | |
+
+ Figure 13. Appearance Agent Subscription to UAs Example
+
+
+11.14. Appearance Pickup Race Condition Failure
+
+ In this scenario, Bob has an established dialog with Carol created
+ using the call flows of Figure 1 or Figure 2. Bob then places Carol
+ on hold. Alice receives a notification of this and renders this on
+ Alice's UI. Alice attempts to pick up the call but Carol hangs up
+ before the pickup can complete. Alice cancels the pickup attempt
+ with the PUBLISH F48. Note that the call flow for a failed Join
+ would be almost identical.
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ |<================= Both way RTP established ===================>|
+ | | | | |
+ | |<------------------------------(hold) INVITE F22<|
+ |<- INVITE F23<| | | |
+
+
+
+Johnston, et al. Standards Track [Page 62]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | | |
+ |>F24 200 OK ->| | | |
+ | |>F25 200 OK ------------------------------------>|
+ | | | | |
+ | |<--------------------------------------- ACK F26<|
+ |<---- ACK F27<| | | |
+ | | | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |<- NOTIFY F28<| |
+ | | | | |
+ | | |>F29 200 OK ->| |
+ | | | |>F30 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F31<|
+ | | | | |
+ | | Alice decides to pick up the call |
+ | | | | |
+ | | |>F32 PUBLISH->| |
+ | | | | |
+ | | |<- 200 OK F33<| |
+ | | | | |
+ | | |<- NOTIFY F34<| |
+ | | | | |
+ | | |>F35 200 OK ->| |
+ | | | |>F36 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F37<|
+ |>F38 BYE ---->| | | |
+ | |>F39 BYE --------------------------------------->|
+ | | | | |
+ | |<------------------------------------ OK 200 F40<|
+ |<- 200 OK F41<| | | |
+ | |<-- INVITE F42<| | |
+ |<- INVITE F43<|(w/ Replaces) | | |
+ |( w/ Replaces)| | | |
+ | | | | |
+ |>F44 481 ---->| | | |
+ | |>F45 481 ----->| | |
+ |<---- ACK F46<| | | |
+ | |<----- ACK F47<| | |
+ | | |>F48 PUBLISH->| |
+ | | | | |
+ | | |<- 200 OK F49<| |
+ | | | | |
+ | | |<- NOTIFY F50<| |
+ | | | | |
+ | | |>F51 200 OK ->| |
+
+
+
+Johnston, et al. Standards Track [Page 63]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ | | | |>F52 NOTIFY ----->|
+ | | | | |
+ | | | |<----- 200 OK F53<|
+
+ Figure 14. Appearance Pickup Race Condition Failure Example
+
+ F48 Alice ----> Appearance Agent
+
+ PUBLISH sip:HelpDesk@example.com SIP/2.0
+ Via: SIP/2.0/UDP ua2.example.com;branch=z9hG4bKa5d6cf61F5FBC05A
+ From: <sip:alice@example.com>;tag=44150CC6-A7B7919D
+ To: <sip:HelpDesk@example.com>;tag=428765950880801
+ CSeq: 11 PUBLISH
+ Call-ID: 87837Fkw87asfds
+ Contact: <sip:alice@ua2.example.com>
+ Event: dialog;shared
+ Max-Forwards: 70
+ Content-Type: application/dialog-info+xml
+ Content-Length: ...
+
+ <?xml version="1.0"?>
+ <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
+ xmlns:sa="urn:ietf:params:xml:ns:sa-dialog-info"
+ version="10"
+ state="full"
+ entity="sip:HelpDesk@example.com">
+ <dialog id="id3d4f9c83"
+ call-id="dc95da63-60db1abd-d5a74b48"
+ local-tag="605AD957-1F6305C2" >
+ <sa:appearance>1</sa:appearance>
+ <sa:exclusive>false</sa:exclusive>
+ <sa:replaced-dialog
+ call-id="14-1541707345"
+ from-tag="44BAD75D-E3128D42"
+ to-tag="d3b06488-1dd1-11b2-88c5-b03162323164+d3e48f4c" />
+ <state>terminated</state>
+ <local>
+ <target uri="sip:alice@ua1.example.com">
+ </target>
+ </local>
+ <remote>
+ <target uri="sip:carol@ua3.example.com" />
+ </remote>
+ </dialog>
+ </dialog-info>
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 64]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+11.15. Appearance Seizure Incoming/Outgoing Contention Race Condition
+
+ Alice tries to seize appearance 2 at the same time appearance 2 is
+ allocated to an incoming call. The Appearance Agent resolves the
+ conflict by sending a 400 (Bad Request) to Alice. After the NOTIFY
+ F6, Alice learns that the incoming call is using appearance 2. Alice
+ republishes for appearance 3, which is accepted. Note that this
+ example shows the INVITE being received before the NOTIFY from the
+ Appearance Agent.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 65]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Carol Proxy Alice Appearance Agent Bob
+ | | | | |
+ |>-- INVITE F1>| | | |
+ | |< - - - - - - - - - - - - - ->| |
+ | | | | |
+ | | |>F2 PUBLISH ->| |
+ | | | (appearance=2) |
+ | | | | |
+ | |>F3 INVITE (appearance=2) ---------------------->|
+ | | | | |
+ | |>F4 INVITE | | |
+ | |(appearance=2)>| | |
+ | | |<---- F5 400 <| |
+ | | | | |
+ | | |<-- NOTIFY F6<| |
+ | | | | |
+ | | |>F7 200 OK -->| |
+ | | | |------- NOTIFY F8>|
+ | | | | |
+ | | | |<F9 200 OK ------<|
+ | | | | |
+ | | |>F10 PUBLISH->| |
+ | | | (appearance=3) |
+ | | | | |
+ | | |< F11 200 OK <| |
+ | | | | |
+ | | |<- NOTIFY F12<| |
+ | | | | |
+ | |>F13 200 OK ->| |
+ Dave | | |------ NOTIFY F14>|
+ | | | | |
+ | | | |<F15 200 OK -----<|
+ | |<-- INVITE F16<| | |
+ | | | | |
+ | |>F17 100 ----->| | |
+ |<- INVITE F18<| | | |
+
+ Figure 15. Appearance Seizure Incoming/Outgoing Contention
+ Race Condition Example
+
+
+12. Security Considerations
+
+ Since multiple line appearance features are implemented using
+ semantics provided by SIP [RFC3261], the SIP Event Package for Dialog
+ State [RFC4235], and the SIP Event Framework [RFC6665] and [RFC3903],
+ security considerations in these documents apply to this document as
+ well.
+
+
+
+Johnston, et al. Standards Track [Page 66]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ To provide confidentiality, NOTIFY or PUBLISH message bodies that
+ provide the dialog state information and the dialog identifiers MAY
+ be encrypted end-to-end using the standard mechanisms such as S/MIME
+ described in [RFC3261]. Alternatively, sending the NOTIFY and
+ PUBLISH requests over TLS also provides confidentiality, although on
+ a hop-by-hop basis. All SUBSCRIBEs and PUBLISHes between the UAs and
+ the Appearance Agent MUST be authenticated. Without proper
+ authentication and confidentiality, a third party could learn
+ information about dialogs associated with a AOR and could try to use
+ this information to hijack or manipulate those dialogs using SIP call
+ control primitives.
+
+ This feature relies on standard SIP call control primitives such as
+ Replaces and Join. Proper access controls on their use MUST be used
+ so that only members of the shared appearance group can use these
+ mechanisms. All INVITEs with Replaces or Join header fields MUST
+ only be accepted if the peer requesting dialog replacement or joining
+ has been properly authenticated using a standard SIP mechanism (such
+ as Digest or S/MIME), and authorized to request a replacement.
+ Otherwise, a third party could disrupt or hijack existing dialogs in
+ the shared appearance group.
+
+ For an emergency call, a UA MUST NOT wait for a confirmed seizure of
+ an appearance before sending an INVITE. Waiting for confirmation
+ could inadvertently delay or block the emergency call, which by its
+ nature needs to be placed as expeditiously as possible. Instead, a
+ emergency call MUST proceed regardless of the status of the PUBLISH
+ transaction.
+
+13. IANA Considerations
+
+ This section registers the SIP Event header field parameter 'shared',
+ the SIP Alert-Info header field parameter 'appearance', and the XML
+ namespace extensions to the SIP Dialog Package.
+
+13.1. SIP Event Header Field Parameter: shared
+
+ This document defines the 'shared' header field parameter in the
+ Event header field in the "Header Field Parameters and Parameter
+ Values" registry defined by [RFC3968].
+
+ Predefined
+ Header Field Parameter Name Values Reference
+ ---------------------------- ------------------ ---------- ---------
+ Event shared No RFC 7463
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 67]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+13.2. SIP Alert-Info Header Field Parameter: appearance
+
+ This document defines the 'appearance' parameter in the Alert-Info
+ header in the "Header Field Parameters and Parameter Values" registry
+ defined by [RFC3968].
+
+ Predefined
+ Header Field Parameter Name Values Reference
+ ---------------------- --------------- --------- ---------
+ Alert-Info appearance No RFC 7463
+
+13.3. URN Sub-Namespace Registration: sa-dialog-info
+
+ This section registers a new XML namespace per the procedures in
+ [RFC3688].
+
+ URI: urn:ietf:params:xml:ns:sa-dialog-info.
+
+ Registrant Contact: IETF BLISS working group, <bliss@ietf.org>,
+ Alan Johnston <alan.b.johnston@gmail.com>
+
+ XML:
+
+ BEGIN
+ <?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="content-type"
+ content="text/html;charset=iso-8859-1"/>
+ <title>Shared Appearance Dialog Information Namespace</title>
+ </head>
+ <body>
+ <h1>Namespace for Shared Appearance Dialog Information</h1>
+ <h2>urn:ietf:params:xml:ns:sa-dialog-info</h2>
+ <p>See <a href="http://www.rfc-editor.org/rfc/rfc7463.txt">
+ RFC 7463</a>.</p>
+ </body>
+ </html>
+ END
+
+13.4. XML Schema Registration
+
+ This section registers an XML schema per the procedures in [RFC3688].
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 68]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ URI: urn:ietf:params:xml:schesa:sa-dialog-info.
+
+ Registrant Contact: IETF BLISS working group, <bliss@ietf.org>,
+ Alan Johnston <alan.b.johnston@gmail.com>
+
+ The XML for this schema can be found in Section 6.
+
+
+14. References
+
+14.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997,
+ <http://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+ A., Peterson, J., Sparks, R., Handley, M., and E.
+ Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+ June 2002, <http://www.rfc-editor.org/info/rfc3261>.
+
+ [RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer
+ Method", RFC 3515, April 2003,
+ <http://www.rfc-editor.org/info/rfc3515>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ January 2004, <http://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
+ "Indicating User Agent Capabilities in the Session
+ Initiation Protocol (SIP)", RFC 3840, August 2004,
+ <http://www.rfc-editor.org/info/rfc3840>.
+
+ [RFC3891] Mahy, R., Biggs, B., and R. Dean, "The Session Initiation
+ Protocol (SIP) "Replaces" Header", RFC 3891, September
+ 2004, <http://www.rfc-editor.org/info/rfc3891>.
+
+ [RFC3903] Niemi, A., "Session Initiation Protocol (SIP) Extension
+ for Event State Publication", RFC 3903, October 2004,
+ <http://www.rfc-editor.org/info/rfc3903>.
+
+ [RFC3911] Mahy, R. and D. Petrie, "The Session Initiation Protocol
+ (SIP) "Join" Header", RFC 3911, October 2004,
+ <http://www.rfc-editor.org/info/rfc3911>.
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 69]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ [RFC3968] Camarillo, G., "The Internet Assigned Number Authority
+ (IANA) Header Field Parameter Registry for the Session
+ Initiation Protocol (SIP)", BCP 98, RFC 3968, December
+ 2004, <http://www.rfc-editor.org/info/rfc3968>.
+
+ [RFC4235] Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE-
+ Initiated Dialog Event Package for the Session Initiation
+ Protocol (SIP)", RFC 4235, November 2005,
+ <http://www.rfc-editor.org/info/rfc4235>.
+
+ [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", STD 68, RFC 5234, January 2008,
+ <http://www.rfc-editor.org/info/rfc5234>.
+
+ [RFC6665] Roach, A., "SIP-Specific Event Notification", RFC 6665,
+ July 2012, <http://www.rfc-editor.org/info/rfc6665>.
+
+ [RFC7462] Liess, L., Ed., Jesske, R., Johnston, A., Worley, D., and
+ P. Kyzivat, "URNs for the Alert-Info Header Field of the
+ Session Initiation Protocol (SIP)", RFC 7462, March 2015,
+ <http://www.rfc-editor.org/info/rfc7462>.
+
+14.2. Informative References
+
+ [RFC3680] Rosenberg, J., "A Session Initiation Protocol (SIP) Event
+ Package for Registrations", RFC 3680, March 2004,
+ <http://www.rfc-editor.org/info/rfc3680>.
+
+ [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol
+ (SIP) Call Control - Conferencing for User Agents", BCP
+ 119, RFC 4579, August 2006,
+ <http://www.rfc-editor.org/info/rfc4579>.
+
+ [RFC5359] Johnston, A., Sparks, R., Cunningham, C., Donovan, S., and
+ K. Summers, "Session Initiation Protocol Service
+ Examples", BCP 144, RFC 5359, October 2008,
+ <http://www.rfc-editor.org/info/rfc5359>.
+
+ [RFC7088] Worley, D., "Session Initiation Protocol Service Example
+ -- Music on Hold", RFC 7088, February 2014,
+ <http://www.rfc-editor.org/info/rfc7088>.
+
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 70]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+Acknowledgements
+
+ The following individuals were part of the shared appearance design
+ team and have provided input and text to the document (in
+ alphabetical order):
+
+ Martin Dolly, Andrew Hutton, Raj Jain, Fernando Lombardo, Derek
+ MacDonald, Bill Mitchell, Michael Procter, and Theo Zourzouvillys.
+
+ Thanks to Chris Boulton for helping with the XML schema.
+
+ Much of the material has been drawn from previous work by Mohsen
+ Soroushnejad, Venkatesh Venkataramanan, Paul Pepper, and Anil Kumar,
+ who in turn received assistance from:
+
+ Kent Fritz, John Weald, and Sunil Veluvali of Sylantro Systems;
+ Steve Towlson and Michael Procter of Citel Technologies; Rob
+ Harder and Hong Chen of Polycom, Inc.; John Elwell and JD Smith of
+ Siemens Communications; Dale R. Worley of Pingtel; and Graeme
+ Dollar of Yahoo, Inc.
+
+ Also thanks to Geoff Devine, Paul Kyzivat, Jerry Yin, John Elwell,
+ Dan York, Spenser Dawkins, Martin Dolly, and Brett Tate for their
+ comments.
+
+ Thanks to Carolyn Beeton, Francois Audet, Andy Hutton, Tim Ross, Raji
+ Chinnappa, and Harsh Mendiratta for their detailed review of the
+ document.
+
+Authors' Addresses
+
+ Alan Johnston (editor)
+ Avaya
+ St. Louis, MO
+ United States
+
+ EMail: alan.b.johnston@gmail.com
+
+
+ Mohsen Soroushnejad (editor)
+ Sylantro Systems Corp.
+
+ EMail: msoroush@gmail.com
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 71]
+
+RFC 7463 SIP Shared Appearances March 2015
+
+
+ Venkatesh Venkataramanan
+ Sylantro Systems Corp.
+
+ EMail: vvenkatar@gmail.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Johnston, et al. Standards Track [Page 72]