Internet DRAFT - draft-ietf-xcon-examples
draft-ietf-xcon-examples
XCON Working Group M. Barnes
Internet-Draft Polycom
Intended status: Informational L. Miniero
Expires: February 3, 2012 Meetecho
R. Presta
S P. Romano
University of Napoli
August 2, 2011
Centralized Conferencing Manipulation Protocol (CCMP) Call Flow Examples
draft-ietf-xcon-examples-10
Abstract
This document provides detailed call flows for the scenarios
documented in the Centralized Conferencing (XCON) Framework and the
XCON Scenarios. The call flows document the use of the interface
between a conference control client and a conference control server
using the Centralized Conferencing Manipulation Protocol (CCMP). The
objective is to provide a base reference for both protocol
researchers and developers.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 3, 2012.
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
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
Barnes, et al. Expires February 3, 2012 [Page 1]
Internet-Draft CCMP Call Flow Examples August 2011
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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Working with CCMP . . . . . . . . . . . . . . . . . . . . . . 4
4.1. CCMP and the Data Model . . . . . . . . . . . . . . . . . 5
4.2. Using HTTP/TLS as a transport . . . . . . . . . . . . . . 6
4.3. Conference Notifications . . . . . . . . . . . . . . . . . 10
5. Conference Creation . . . . . . . . . . . . . . . . . . . . . 11
5.1. Basic Conference Creation . . . . . . . . . . . . . . . . 12
5.2. Conference Creation using Blueprints . . . . . . . . . . . 16
5.3. Conference Creation using User-Provided Conference
Information . . . . . . . . . . . . . . . . . . . . . . . 23
5.4. Cloning an Existing Conference . . . . . . . . . . . . . . 28
6. Conference Users Scenarios and Examples . . . . . . . . . . . 32
6.1. Adding a Party . . . . . . . . . . . . . . . . . . . . . . 32
6.2. Muting a Party . . . . . . . . . . . . . . . . . . . . . . 36
6.3. Conference Announcements and Recordings . . . . . . . . . 40
6.4. Monitoring for DTMF . . . . . . . . . . . . . . . . . . . 44
6.5. Entering a password-protected conference . . . . . . . . . 44
7. Sidebars Scenarios and Examples . . . . . . . . . . . . . . . 46
7.1. Internal Sidebar . . . . . . . . . . . . . . . . . . . . . 47
7.2. External Sidebar . . . . . . . . . . . . . . . . . . . . . 56
7.3. Private Messages . . . . . . . . . . . . . . . . . . . . . 63
7.4. Observing and Coaching . . . . . . . . . . . . . . . . . . 67
8. Removing Participants and Deleting Conferences . . . . . . . . 74
8.1. Removing a Party . . . . . . . . . . . . . . . . . . . . . 74
8.2. Deleting a Conference . . . . . . . . . . . . . . . . . . 77
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 78
10. Security Considerations . . . . . . . . . . . . . . . . . . . 78
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 79
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.1. Normative References . . . . . . . . . . . . . . . . . . . 79
12.2. Informative References . . . . . . . . . . . . . . . . . . 79
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 80
Barnes, et al. Expires February 3, 2012 [Page 2]
Internet-Draft CCMP Call Flow Examples August 2011
1. Introduction
This document provides detailed call flows for the scenarios
documented in the Framework for Centralized Conferencing (XCON
Framework) [RFC5239] and the XCON Scenarios [RFC4597]. The XCON
scenarios describe a broad range of use cases taking advantage of the
advanced conferencing capabilities provided by a system realization
of the XCON framework. The call flows document the use of the
interface between a conference control client and a conference
control server using the Centralized Conferencing Manipulation
Protocol (CCMP)[I-D.ietf-xcon-ccmp].
Due to the broad range of functionality provided by the XCON
Framework and the flexibility of the CCMP messaging, these call flows
should not be considered inclusive of all the functionality that can
provided by the XCON Framework and protocol implementations. These
flows represent a sample to provide an overview of the feature rich
capabilities of the XCON framework and CCMP messaging for protocol
developers, software developers and researchers.
2. Terminology
This document uses the same terminology as found in the Media Control
Architectural Framework [RFC5567] and Media Control Channel Framework
Call Flow Examples [I-D.ietf-mediactrl-call-flows], with the
following terms and abbreviations used in the call flows. Also, note
that the term "call flows" is used in a very generic sense in this
document since the media is not limited to voice. The calls
supported by the XCON framework and CCMP can consist of media such as
text, voice and video, including multiple media types in a single
active conference.
Conference and Media Control Client (CMCC): as defined in the XCON
Framework. In the flows in this document, the CMCC is logically
equivalent to the use of UAC as the client notation in the media
control call flows [I-D.ietf-mediactrl-call-flows]. A CMCC
differs from a generic Media Client in being an XCON-aware entity,
thus being able to also issue CCMP requests.
Conferencing Server (ConfS): In this document, the term
"Conferencing Server" is used interchangeably with the term
"Application Server" (AS) as used in the Media Control
Architectural Framework [RFC5567]. A Conferencing Server is
intended to be able to act as a Conference Control Server, as
defined in the XCON framework, i.e., it is able to handle CCMP
requests and issue CCMP responses.
Barnes, et al. Expires February 3, 2012 [Page 3]
Internet-Draft CCMP Call Flow Examples August 2011
Media Server (MS): as defined in the Media Control Architectural
Framework [RFC5567].
3. Overview
This document provides a sampling of detailed call flows that can be
implemented based on a system realization of the XCON framework
[RFC5239] and implementation of CCMP [I-D.ietf-xcon-ccmp]. This is
intended to be a simple guide for the use of the Conference Control
Protocol between the Conferencing Server and the Conference Control
Client. The objective is to provide an informational base reference
for protocol developers, software developers and researchers.
This document focuses on the interaction between the Conference (and
Media) Control Client and the Conferencing System, specifically the
Conferencing Server. The scenarios are based on those described in
the XCON framework, many of which are based on the advanced
conferencing capabilities described in the XCON scenarios.
Additional scenarios have been added to provide examples of other
real life scenarios that are anticipated to be supported by the
framework. With the exception of an initial example with media
control messaging, the examples do not include the details for the
media control [I-D.ietf-mediactrl-mixer-control-package], call
signaling or binary floor control [RFC4582] protocols. This document
references the scenarios in the Media Control call flows
[I-D.ietf-mediactrl-call-flows], SIP Call Control Conferencing
[RFC4579] and binary floor control protocol documents.
The rest of this document is organized as follows. Section 4
presents an overview on CCMP, together with some implementation-
related details and related matters like HTTPS transport and
notifications. Section 5 presents the reader with examples showing
the different approaches CCMP provides to create a new conference.
Section 6 more generally addresses the different user-related
manipulations that can be achieved by means of CCMP, by presenting a
number of interesting scenarios. Section 7 addresses the several
scenarios that may involve the use of sidebars. Section 8 shows how
CCMP can be used to remove conferences and users from the system.
Finally, Section 10 provides a few details for what concerns the
Security Considerations when it comes to implementing CCMP.
4. Working with CCMP
This section provides a brief introduction as to how the Centralized
Conferencing Manipulation Protocol (CCMP) [I-D.ietf-xcon-ccmp] works
and how it can be transported across a network. A typical CCMP
Barnes, et al. Expires February 3, 2012 [Page 4]
Internet-Draft CCMP Call Flow Examples August 2011
interaction focusing on relevant aspects of the client-server
communication is described. Please note that this section assumes
the reader has an understanding of and has read the CCMP document.
This section is intended to help the reader understand the actual
protocol interactions.
First a description of the protocol itself is provided Section 4.1,
including some implementation considerations. In Section 4.2, an
effective CCMP interaction is presented by exploiting HTTPS as a
transport. Finally, notifications are described in Section 4.3.
The document then presents and describes some actual flows in detail
in the sections to follow.
4.1. CCMP and the Data Model
CCMP is an XML-based protocol. It has been designed as a request/
response protocol. It is completely stateless, which means
implementations can safely handle transactions independently from
each other.
The protocol allows for the manipulation of conference objects and
related users. This manipulation allows a Conferencing Client
(briefly CMCC in all the following sections) to create, update and
remove basically everything that is related to the objects handled by
a conferencing system. This is reflected in the allowed operations
(retrieve, create, update, delete) and the specified request types
(ranging from the manipulation of blueprints and conferences to users
and sidebars). For instance, CCMP provides ways to:
o retrieve the list of registered and/or active conferences in the
system;
o create new conferences by exploiting to several different
approaches;
o add/remove users to/from a conference;
o update a conference with respect to all of its aspects;
and so on.
While CCMP acts as the means to manipulate conference objects, CCMP
does not define these conference objects. A separate document
specifies how a conference object and all its components have to be
constructed: the Conference Information Data Model for Centralized
Conferencing (XCON) [I-D.ietf-xcon-common-data-model]. CCMP,
depending upon the request type and the related operation, carries
Barnes, et al. Expires February 3, 2012 [Page 5]
Internet-Draft CCMP Call Flow Examples August 2011
pieces of conference objects (or any object as a whole) according to
the aforementioned specification. This means that any implementation
aiming at being compliant with CCMP has to make sure that the
transported objects are completely compliant with the Data Model
specification and coherent with the constraints defined therein. To
make this clearer, there are elements that are mandatory in a
conference object: issuing a syntactically correct CCMP request that
carries a wrong conference object is doomed to result in a failure.
For this reason, it is suggested that the interested implementors
take special care in carefully checking the Data Model handlers as
well in order to avoid potential mistakes.
However, there are cases when a mandatory element in the Data Model
cannot be assigned in a conference object by a CCMP user. For
example, a CMCC may be requesting the direct creation of a new
conference: in this case, a conference object assumes an 'entity'
element uniquely identifying the conference to be in place. Thus,
the CMCC has no way to know a priori what the entity will be, since
it is generated by the ConfS after the request. For scenarios like
this one, the CCMP specification describes the use of a dedicated
placeholder wildcard (i.e., AUTO_GENERATE_X, where X is an integer)
to make the conference object compliant with the Data Model: the
wildcard would then be replaced by the ConfS with the right value.
4.2. Using HTTP/TLS as a transport
The CCMP requires that implementations support HTTP/TLS as the
transport mechanism. Per the CCMP, a CMCC sends a request as part of
an HTTPS POST message, and the ConfS would reply with a 200 OK HTTPS
response. In both cases, the HTTPS messages carry the CCMP messages
as payload, which is reflected in the Content-Type message
(application/ccmp+xml). Figure 1 presents a ladder diagram of such
interaction, which is followed by a dump of the exchanged HTTPS
messages for further analysis. The examples in the remainder of this
document show only the CCMP interactions.
Barnes, et al. Expires February 3, 2012 [Page 6]
Internet-Draft CCMP Call Flow Examples August 2011
CMCC ConfS
| |
| 1. HTTPS POST (CCMP request) |
|--------------------------------------------->|
| |
| |--+ Parse request,
| | | update object
| |<-+ and reply
| |
| 2. 200 OK (CCMP response) |
|<---------------------------------------------|
| |
|--+ Parse response and |
| | update local copy |
|<-+ of conference object |
| |
. .
. .
Figure 1: CCMP on HTTPS
Per the protocol dump in the following lines, the CMCC has issued a
CCMP request (a blueprintRequest with a 'retrieve' operation) towards
the Conferencing Server (ConfS). The request has been carried as
payload of an HTTPS POST (message 1.) towards a previously known
location. The mandatory 'Host' header has been specified, and the
'Content-Type' header has been correctly set as well (application/
ccmp+xml).
The ConfS, in turn, has handled the request and replied accordingly.
The response (a blueprintResponse with a successful response code)
has been carried as payload of a 200 OK HTTPS response (message 2.).
As before, the 'Content-Type' header has been correctly set
(application/ccmp+xml).
1. CMCC -> ConfS (HTTPS POST, CCMP request)
------------------------------------------
POST /Xcon/Ccmp HTTP/1.1
Content-Length: 657
Content-Type: application/ccmp+xml
Host: example.com:443
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.0.1 (java 1.5)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Barnes, et al. Expires February 3, 2012 [Page 7]
Internet-Draft CCMP Call Flow Examples August 2011
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:AudioRoom@example.com</confObjID>
<operation>retrieve</operation>
<ccmp:blueprintRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. CMCC <- ConfS (200 to POST, CCMP response)
---------------------------------------------
HTTP/1.1 200 OK
X-Powered-By: Servlet/2.5
Server: Sun GlassFish Communications Server 1.5
Content-Type: application/ccmp+xml;charset=ISO-8859-1
Content-Length: 1652
Date: Thu, 04 Feb 2010 14:47:56 GMT
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:AudioRoom@example.com</confObjID>
<operation>retrieve</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<ccmp:blueprintResponse>
<blueprintInfo entity="xcon:AudioRoom@example.com">
<info:conference-description>
<info:display-text>AudioRoom</info:display-text>
<info:maximum-user-count>2</info:maximum-user-count>
<info:available-media>
<info:entry label="audioLabel">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
Barnes, et al. Expires February 3, 2012 [Page 8]
Internet-Draft CCMP Call Flow Examples August 2011
<xcon:join-handling>allow</xcon:join-handling>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>confirm
</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="audioLabel"></xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</blueprintInfo>
</ccmp:blueprintResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
For completeness, the following provides some details of the CCMP
interaction. Despite the simplicity of the request, this flow
provides some relevant information on how CCMP messages are built.
Specifically, both the request and the response share a subset of the
message:
o confUserID: this element, provided by the CMCC, refers to the
requester by means of his XCON-USERID; except in a few scenarios
(presented in the following sections) this element must always
contain a valid value;
o confObjID: this element refers to the target conference object,
according to the request in place;
o operation: this element specifies the operation the CMCC wants to
perform according to the specific request type.
Besides those elements, the CMCC (let's say Alice, whose 'confUserID'
is 'xcon-userid:Alice@example.com') has also provided an additional
element, 'blueprintRequest'. The name of that element varies
according to the request type the CMCC is interested in. In this
specific scenario, the CMCC was interested in acquiring details
concerning a specific blueprint (identified by its XCON-URI
'xcon:AudioRoom@example.com', as reflected in the provided
'confObjID' target element), and so the request consisted in an empty
'blueprintRequest' element. It will be clearer in the following
sections that different request types may require different elements
and, as a consequence, different content.
Considering the request was a 'blueprintRequest', the ConfS has
replied with a 'blueprintResponse' element. This element includes a
complete dump of the conference object (compliant with the Data
Model) describing the requested blueprint.
Barnes, et al. Expires February 3, 2012 [Page 9]
Internet-Draft CCMP Call Flow Examples August 2011
Without providing additional details of this interaction, it is worth
noting that this was the example of the simplest CCMP communication
that could take place between a CMCC and a ConfS, a blueprintRequest:
this scenario will be described in more detail in Section 5.2.
4.3. Conference Notifications
The XCON framework [RFC5239] identifies several different possible
protocol interactions between a conferencing server and a
conferencing client. One of those interactions is generically called
"Notification Protocol" providing a mechanism for all clients
interested in being informed by the server whenever something
relevant happens in a conference. When SIP is used as the call
signaling protocol in a CCMP implementation, the XCON Event Package
[I-D.ietf-xcon-event-package], which extends the SIP Event Package
for Conference State [RFC4575] must be supported. A SIP client uses
the SIP SUBSCRIBE message for the XCON Event Package to subscribe to
notifications related to a specific conference. A SIP client would
receive notifications describing all the changes to the document via
SIP NOTIFY message. An example ladder diagram is presented in
Figure 2: in this figure, we assume a CMCC has updated a conference
object, and a previously subscribed SIP client is notified of the
update.
Barnes, et al. Expires February 3, 2012 [Page 10]
Internet-Draft CCMP Call Flow Examples August 2011
CMCC ConfS UAC
| | |
| | 1. SIP SUBSCRIBE |
| |<--------------------------|
| Handle +--| |
| new | | |
| subscription +->| 2. SIP 200 OK |
| |-------------------------->|
| | |
. . .
. . .
| | |
| 3. CCMP (add user) | |
|---------------------->| |
| |--+ Add user |
| | | to conf. |
| |<-+ object |
| 4. CCMP (success) | |
|<----------------------| |
| | 5. SIP NOTIFY (changes) |
| |-------------------------->|
| | 6. SIP 200 OK |
| |<--------------------------|
| | |
. . .
. . .
Figure 2: XCON Event Package: SIP notifications
The detailed flows in this document generically present a
notification, when appropriate, but do not include the SIP messaging
details.
5. Conference Creation
This section provides details associated with the various ways in
which a conference can be created using CCMP and the XCON framework
constructs. As previously mentioned, the details of the media
control, call signaling and floor control protocols, where
applicable, are annotated in the flows without showing all the
details. This also applies to CCMP, whose flows are related to the
protocol alone, hiding any detail concerning the transport that may
have been used (e.g., HTTPS). However, for clarification purposes,
the first example Section 5.1 provides the details of the media
control messaging with the standard annotation used throughout the
remainder of this document. In subsequent flows, only this
Barnes, et al. Expires February 3, 2012 [Page 11]
Internet-Draft CCMP Call Flow Examples August 2011
annotation (identified by lower case letters) is included and the
reader is encouraged to refer to the call flows in the relevant
documents for details about the other protocols. The annotations for
the call signaling are on the left side of the conferencing server
vertical bar and those for the media control messaging are on the
right side.
5.1. Basic Conference Creation
The simplest manner in which a conference can be created is
accomplished by the client sending a "confRequest" message with the
"create" operation as the only parameter to the conference server,
together with the "confUserID" associated with the requesting client
itself. This results in the creation of a default conference, with
an XCON-URI in the form of the "confObjID" parameter, the XCON-USERID
in the form of the "confUserID" parameter (the same one already
present in the request) and the data for the conference object in the
"confInfo" parameter all returned in the "confResponse" message.
This example also adds the issuing user to the conference upon
creation with the "method" attribute in the <target> element of
<allowed-users-list> set to "dial out".
The specific data for the conference object is returned in the
"confResponse" message in the "confInfo" parameter. This allows the
client (with the appropriate authorization) to manipulate these data
and add additional participants to the conference, as well as change
the data during the conference. In addition, the client may
distribute the conferencing information to other participants
allowing them to join, the details of which are provided in
additional flows. Please notice that, according to the CCMP
specification, the return of the new conference data in the
"confInfo" parameter is not mandatory: if the "confInfo" parameter of
the successful confResponse/create is not included in the response, a
subsequent confRequest/retrieve of the returned "confObjID" can be
triggered to provide the requesting client with the detailed
conference description.
Clients that are not XCON-aware can join the conference using a
specific signaling interface such as SIP [RFC3261] (using the
signaling interface to the conference focus as described in
[RFC4579]), or other supported signaling protocols, being XCON
agnostic with respect to them. However, these details are not shown
in the message flows. The message flows in this document identify
the point in the message flows at which this signaling occurs via the
lower case letter items (i.e., (a)...(x)) along with the appropriate
text for the processing done by the conferencing server.
As previously described, this example also shows how the conferencing
Barnes, et al. Expires February 3, 2012 [Page 12]
Internet-Draft CCMP Call Flow Examples August 2011
system may make use of other standard protocol components for
complete functionality. An example of that is the MEDIACTRL
specification, which allows the conferencing system to configure
conference mixes, IVR dialogs and all sort of media-related
interactions an application like this may need. In order to provide
the reader with some insight on these interactions, the conferencing
system in this example also configures and starts a mixer via
MEDIACTRL as soon as the conference is created (transactions A1 and
A2), and attaches clients to it when necessary (e.g., when CMCC1
joins the conference by means of SIP signaling, its media channels
are attached to the Media Server using MEDIACTRL in B1/B2). Note,
that the MEDIACTRL interfaces are NOT shown in the remaining call
flows in this document, but rather follow the same annotation as with
the SIP signaling such that (b) correlates with the A1 and A2
transactions and (d) correlates with the B1 and B2 transactions.
Barnes, et al. Expires February 3, 2012 [Page 13]
Internet-Draft CCMP Call Flow Examples August 2011
CMCC1 CMCC2 CMCCx ConfS MS
| | | | |
|(1)confRequest(confUserID, create) | |
|-------------------------------------->| |
| | (a)Create +---| |
| | |Conf | | |
| | |Object | | |
| | |& IDs +-->| |
| | | | A1. CONTROL |
| | | |+++++++++++>>|
| | | |(create conf)|--+ (b)
| | | | | | create
| | | | | | conf and
| | | | A2. 200 OK |<-+ its ID
| | | |<<+++++++++++|
| | | |(confid=Y) |
|(2)confResponse(confUserID,confObjID, | |
| create, 200, success, | |
| version, confInfo) | |
|<--------------------------------------| |
| | | | |
| | (c) Focus +---| |
| | sets up | | |
| | signaling | | |
| | to CMCC1 +-->| |
| | | | |
| | | | B1. CONTROL |
| | | |+++++++++++>>|
| | | | (join CMCC1 |
| | | | <->confY) |
| | | | |
| | | | |--+(d) join
| | | | | | CMCC1 &
| | | | B2.200 OK |<-+ conf Y
| | | |<<+++++++++++|
| | | | |
|<<#################################################>>|
| Now the CMCC1 is mixed in the conference |
|<<#################################################>>|
| | | | |
|******CMCC1 may then manipulate conference data *****|
|****** and add addt'l users, etc. | *****|
' ' ' ' '
' ' ' ' '
' ' ' ' '
Barnes, et al. Expires February 3, 2012 [Page 14]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 3: Create Basic Conference - Complete flow
1. confRequest/create message (Alice creates a default conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<operation>create</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/create message ("success", created conference
object returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
Default conference initiated by Alice
</info:display-text>
<info:conf-uris>
<info:entry>
<info:uri>
xcon:8977794@example.com
Barnes, et al. Expires February 3, 2012 [Page 15]
Internet-Draft CCMP Call Flow Examples August 2011
</info:uri>
<info:display-text>
Conference XCON-URI
</info:display-text>
</info:entry>
</info:conf-uris>
<info:maximum-user-count>10
</info:maximum-user-count>
<info:available-media>
<info:entry label="11">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
<xcon:allowed-users-list>
<xcon:target uri="xcon-userid:Alice@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 4: Create Basic Conference Detailed Messaging
5.2. Conference Creation using Blueprints
The previous example showed the creation of a new conference using
default values. This means the client provided no information about
how she wanted the conference to be created. The XCON framework (and
CCMP as a consequence) allows for the implementation of templates.
These templates are called "conference blueprints", and are basically
conference objects with pre-defined settings. This means that a
client might get a list of blueprints, choose the one that more fits
his needs, and use the chosen blueprint to create a new conference.
This section Figure 5 provides an example of one client, "Alice",
discovering the conference blueprints available for a particular
conferencing system and creating a conference based on the desired
blueprint. In particular, Alice is interested in those blueprints
suitable to represent a "video-conference", i.e., a conference in
Barnes, et al. Expires February 3, 2012 [Page 16]
Internet-Draft CCMP Call Flow Examples August 2011
which both audio and video are available, so she makes use of the
filter mechanism provided by CCMP to make a selective blueprints
retrieve request. This results in three distinct CCMP transactions.
CMCC "Alice" ConfS
| |
| (1) blueprintsRequest |
| (confUserID,xpathFilter) |
|------------------------------>|
| |
| (2) blueprintsResponse |
| (confUserID, |
| 200, success, |
| blueprintsInfo) |
| |
|<------------------------------|
| |
|--+ |
| | choose preferred |
| | blueprint from the |
| | list (blueprintName) |
|<-+ |
| |
| (3) blueprintRequest |
| (confUserID,confObjID, |
| retrieve) |
|------------------------------>|
| |
| 4) blueprintResponse |
| (confUserID,confObjID,|
| retrieve, 200, |
| success, confInfo) |
|<------------------------------|
| |
| (5) confRequest(confUserID, |
| confObjID,create) |
|------------------------------>|
| |
| (a)Create +---|
| Conf | |
| Object | |
| & IDs +-->|
| |--+ (b) MS
| | | creates
| | | conf and
| |<-+ its ID
Barnes, et al. Expires February 3, 2012 [Page 17]
Internet-Draft CCMP Call Flow Examples August 2011
| | (confid=Y)
|(6) confResponse |
| (confUserID, confObjID*, |
| create, 200, success) |
|<------------------------------|
| |
| |
| |
. .
. .
Figure 5: Client Creation of Conference using Blueprints
1. Alice first sends a "blueprintsRequest" message to the
conferencing system identified by the conference server discovery
process. This request contains the "confUserID" of the user
issuing the request (Alice's XCON-USERID) and the "xpathFilter"
parameter by which Alice specifies she desires to obtain only
blueprints providing support for both audio and video: for this
purpose, the xpath query contained in this field is: "/
conference-info[conference-description/available-media/entry/
type='audio' and conference-description/available-media/entry/
type='video'"] . Upon receipt of the "blueprintsRequest", the
conferencing system would first ensure, on the basis of the
"confUserID" parameter, that Alice has the appropriate authority
based on system policies to receive the requested kind of
blueprints supported by that system.
2. All blueprints that Alice is authorized to use are returned in a
"blueprintsResponse" message in the "blueprintsInfo" element.
3. Upon receipt of the "blueprintsResponse" containing the
blueprints, Alice determines which blueprint to use for the
conference to be created. Alice sends a "blueprintRequest"
message to get the specific blueprint as identified by the
"confObjID".
4. The conferencing system returns the "confInfo" associated with
the specific blueprint as identified by the "confObjID" in the
"blueprintResponse" message.
5. Alice finally sends a "confRequest" with a "create" operation to
the conferencing system to create a conference reservation
cloning the chosen blueprint. This is achieved by writing the
blueprint's XCON-URI in the "confObjID" parameter.
Barnes, et al. Expires February 3, 2012 [Page 18]
Internet-Draft CCMP Call Flow Examples August 2011
6. Upon receipt of the "confRequest" message with a "create"
operation, the conferencing system uses the received blueprint to
clone a conference, allocating a new XCON-URI (again called
"confObjID*" in the example). The conferencing server then sends
a "confResponse" message including the new "confObjID*"
associated with the newly created conference instance. Upon
receipt of the "confResponse" message, Alice can now add other
users to the conference.
1. blueprintsRequest message (Alice requires the list of the
available blueprints with video support)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprints-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<ccmp:blueprintsRequest>
<xpathFilter>/conference-info[conference-description/
available-media/entry/type='audio'
and
conference-description/available-media/entry/type='video']
</xpathFilter>
</ccmp:blueprintsRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. blueprintsResponse message (the server provides a
descriptions of the available blueprints
fitting Alice's request)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprints-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<response-code>200</response-code>
Barnes, et al. Expires February 3, 2012 [Page 19]
Internet-Draft CCMP Call Flow Examples August 2011
<response-string>success</response-string>
<ccmp:blueprintsResponse>
<blueprintsInfo>
<info:entry>
<info:uri>xcon:VideoRoom@example.com</info:uri>
<info:display-text>VideoRoom</info:display-text>
<info:purpose>Video Room:
conference room with public access,
where both audio and video are available,
4 users can talk and be seen at the same time,
and the floor requests are automatically accepted.
</info:purpose>
</info:entry>
<info:entry>
<info:uri>xcon:VideoConference1@example.com</info:uri>
<info:display-text>VideoConference1</info:display-text>
<info:purpose>Public Video Conference: conference
where both audio and video are available,
only one user can talk
</info:purpose>
</info:entry>
</blueprintsInfo>
</ccmp:blueprintsResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. blueprintRequest/retrieve message (Alice wants the
"VideoRoom" blueprint)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>retrieve</operation>
<ccmp:blueprintRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
4. blueprintResponse/retrieve message ("VideoRoom"
conference object returned)
Barnes, et al. Expires February 3, 2012 [Page 20]
Internet-Draft CCMP Call Flow Examples August 2011
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>retrieve</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<ccmp:blueprintResponse>
<blueprintInfo entity="xcon:VideoRoom@example.com">
<info:conference-description>
<info:display-text>VideoRoom</info:display-text>
<info:maximum-user-count>4</info:maximum-user-count>
<info:available-media>
<info:entry label="audioLabel">
<info:type>audio</info:type>
</info:entry>
<info:entry label="videoLabel">
<info:type>video</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>confirm
</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="audioFloor">
<xcon:media-label>audioLabel</xcon:media-label>
</xcon:floor>
<xcon:floor id="videoFloor">
<xcon:media-label>videoLabel</xcon:media-label>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</blueprintInfo>
</ccmp:blueprintResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
5. confRequest/create message (Alice clones the "VideoRoom" blueprint)
Barnes, et al. Expires February 3, 2012 [Page 21]
Internet-Draft CCMP Call Flow Examples August 2011
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>create</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
6. confResponse/create message (cloned conference
object returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
New conference by Alice cloned from VideoRoom
</info:display-text>
<info:conf-uris>
<info:entry>
<info:uri>
xcon:8977794@example.com
</info:uri>
<info:display-text>
conference xcon-uri
</info:display-text>
<xcon:conference-password>
8601
Barnes, et al. Expires February 3, 2012 [Page 22]
Internet-Draft CCMP Call Flow Examples August 2011
</xcon:conference-password>
</info:entry>
</info:conf-uris>
<info:maximum-user-count>10</info:maximum-user-count>
<info:available-media>
<info:entry label="11">
<info:type>audio</info:type>
</info:entry>
<info:entry label="12">
<info:type>video</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>
confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="1">
<xcon:media-label>11</xcon:media-label>
</xcon:floor>
<xcon:floor id="2">
<xcon:media-label>12</xcon:media-label>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 6: Create Conference (Blueprint) Detailed Messaging
5.3. Conference Creation using User-Provided Conference Information
A conference can also be created by the client sending a
"confRequest" message with the "create" operation, along with the
desired data in the form of the "confInfo" parameter for the
conference to be created. The request also includes the "confUserID"
of the requesting entity.
This approach allows for a client (in this example Alice) to
completely describe what the conference object should look like,
without relying on defaults or blueprints: e.g., which media should
be available, the topic, the users allowed to join, any scheduling-
Barnes, et al. Expires February 3, 2012 [Page 23]
Internet-Draft CCMP Call Flow Examples August 2011
related information and so on. This can be done by providing in the
creation request a full conference object for the server to parse.
This "confInfo" parameter must comply with the Data Model
specification. This means that the "entity" attribute is mandatory,
and cannot be missing in the document. However, in this example the
client is actually requesting the creation of a new conference, which
doesn't exist yet, so the "entity" attribute is unknown. As
discussed in Section 4.1, the CCMP protocol allows for the use of a
wildcard placeholder. This placeholder
("xcon:AUTO_GENERATE_1@example.com" in the example) is only to ensure
the "confInfo" element is compliant with the Data Model, and would
subsequently be replaced by the conferencing system with the actual
value. Thus, when the conferencing system actually creates the
conference, a valid "entity" value is created for it as well, which
takes the place of the wildcard value when the actual conference
object provided by the client is populated.
To give a flavor of what could be added to the conference object, we
assume Alice is also interested in providing scheduling-related
information. So, in this example, Alice also specifies by the
<conference-time> element included in the "confInfo" that the
conference she wants to create has to occur on a certain date
spanning from a certain start time to a certain stop time and has to
be replicated weekly.
Moreover, Alice indicates by means of the <allowed-users-list> that
at the start time Bob, Carol and herself have to be called by the
conferencing system to join the conference (in fact, for each
<target> corresponding to one of the above-mentioned clients, the
"method" attribute is set to "dial-out").
Once Alice has prepared the "confInfo" element and sent it as part of
her request to the server, if the conferencing system can support
that specific type of conference (capabilities, etc.), then the
request results in the creation of a conference. We assume the
request has been successful, and as a consequence XCON-URI in the
form of the "confObjID" parameter and the XCON-USERID in the form of
the "confUserID" parameter (again, the same as the requesting entity)
are returned in the "confResponse" message.
In this example, the created conference object is not returned in the
successful "confResponse" in the "confInfo" parameter. Nevertheless,
Alice could still retrieve the actual conference object by issuing a
"confRequest" with a "retrieve" operation on the returned
"confObjID". Such a request would show how, as described at the
beginning of this section, the "entity" attribute of the conference
object in "confInfo" is replaced with the actual information (i.e.,
Barnes, et al. Expires February 3, 2012 [Page 24]
Internet-Draft CCMP Call Flow Examples August 2011
"xcon:6845432@example.com").
Alice Bob Carol ConfS
| | | |
| | | |
|(1)confRequest(confUserID, | |
| create, confInfo) | |
| | | |
|-------------------------------------->|
| | | |
| | (a)Create +---|
| | |Conf | |
| | |Object | |
| | |& IDs +-->|
| | | |--+ (b) MS
| | | | | creates
| | | | | conf and
| | | |<-+ its ID
| | | | (confid=Y)
|(2)confResponse(confUserID,| |
| confObjID, create, | |
| 200, success, version) |
|<--------------------------------------|
| | | |
===========================================
... ... ... ...
========== START TIME OCCURS ==============
| | (c) Focus +---|
| | sets up | |
| | signaling | |
| | to Alice +-->|
| | | |
| | | |--+(d) MS joins
| | | | | Alice &
| | | |<-+ conf Y
| | | |
| | | |
|<<###################################>>|
| Alice is mixed in the conference |
|<<###################################>>|
| | | |
| | (e)Focus +---|
| | sets up | |
| | signaling | |
| | to Bob | |
| | | +-->|
Barnes, et al. Expires February 3, 2012 [Page 25]
Internet-Draft CCMP Call Flow Examples August 2011
| | | |
| | | |--+(f)MS joins
| | | | | Bob &
| | | |<-+ conf Y
| | | |
| |<<###################>>|
| | Bob is mixed too |
| |<<###################>>|
| | | |
| | (g )Focus +---|
| | sets up | |
| | signaling | |
| | to Carol | |
| | CMCCx +-->|
| | | |
| | | |--+(h)MS joins
| | | | | CMCCx &
| | | |<-+ conf Y
| | | |
| | |<<#######>>|
| | |Carol mixed|
| | |<<#######>>|
| | | |
| | | |
| | | |
|<***All parties connected to conf Y***>|
| | | |
| | | |
" " " "
" " " "
" " " "
Figure 7: Create Basic Conference from user provided conference-info
1. confRequest/create message (Alice proposes a conference object
to be created)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Barnes, et al. Expires February 3, 2012 [Page 26]
Internet-Draft CCMP Call Flow Examples August 2011
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<operation>create</operation>
<ccmp:confRequest>
<confInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description>
<info:display-text>
Dial-out conference initiated by Alice
</info:display-text>
<info:maximum-user-count>10</info:maximum-user-count>
<info:available-media>
<info:entry label="AUTO_GENERATE_2">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
<xcon:conference-time>
<xcon:entry>
<xcon:base>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mozilla.org/NONSGML
Mozilla Calendar V1.0//EN
BEGIN:VEVENT
DTSTAMP: 20100127T140728Z
UID: 20100127T140728Z-345FDA-alice@example.com
ORGANIZER:MAILTO:alice@example.com
DTSTART:20100127T143000Z
RRULE:FREQ=WEEKLY
DTEND: 20100127T163000Z
END:VEVENT
END:VCALENDAR
</xcon:base>
<xcon:mixing-start-offset
required-participant="moderator">
2010-01-27T14:29:00Z
</xcon:mixing-start-offset>
<xcon:mixing-end-offset
required-participant="participant">
2010-01-27T16:31:00Z
</xcon:mixing-end-offset>
<xcon:must-join-before-offset>
2010-01-27T15:30:00Z
</xcon:must-join-before-offset>
</xcon:entry>
</xcon:conference-time>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
Barnes, et al. Expires February 3, 2012 [Page 27]
Internet-Draft CCMP Call Flow Examples August 2011
<xcon:allowed-users-list>
<xcon:target uri="xcon-userid:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:bob83@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
</confInfo>
</ccmp:confRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/create message (200, "success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 8: Create Basic Conference Detailed Messaging
5.4. Cloning an Existing Conference
A client can also create another conference by cloning an existing
conference, such as an active conference or conference reservation.
This approach can be seen as a logical extension of the creation of a
new conference using a blueprint: the difference is that, instead of
cloning the pre-defined settings listed in a blueprint, the settings
of an existing conference would be cloned.
Barnes, et al. Expires February 3, 2012 [Page 28]
Internet-Draft CCMP Call Flow Examples August 2011
In this example, the client sends a "confRequest" message with the
"create" operation, along with the "confUserID" and a specific
"confObjID", from which a new conference is to be created by cloning
an existing conference.
An example of how a client can create a conference based on a
blueprint is provided in Section 5.2. The manner by which a client
in this example might learn about a conference reservation or active
conferences is similar to the first step in the blueprint example,
with the exception of querying for different types of conference
objects supported by the specific conferencing system. For example,
in this example, the client clones a conference reservation (i.e., an
inactive conference).
If the conferencing system can support a new instance of the specific
type of conference (capabilities, etc.), then the request results in
the creation of a conference, with an XCON-URI in the form of a new
value in the "confObjID" parameter to reflect the newly cloned
conference object returned in the "confResponse" message.
Alice ConfS
| |
|(1)confRequest(confUserID, |
| confObjID, create) |
|------------------------------>|
| (a)Create +---|
| Conf | |
| Object | |
| & IDs +-->|
| |--+ (b) MS
| | | creates
| | | conf and
| |<-+ its ID
| | (confid=Y)
| |
|(2)confResponse(confUserID, |
| confObjID*,create, |
| 200, success, |
| version, confInfo) |
| |
|<------------------------------|
| |
Figure 9: Create Basic Conference - Clone
Barnes, et al. Expires February 3, 2012 [Page 29]
Internet-Draft CCMP Call Flow Examples August 2011
1. Alice, a conferencing system client, sends a confRequest message
to clone a conference based on an existing conference
reservation. Alice indicates this conference should be cloned
from the specified parent conference represented by the
"confObjID" in the request.
2. Upon receipt of the confRequest message containing a "create"
operation and "confObjID", the conferencing system ensures that
the "confObjID" received is valid. The conferencing system
determines the appropriate read/write access of any users to be
added to a conference based on this "confObjID" (using
membership, roles, etc.). The conferencing system uses the
received "confObjID" to clone a conference reservation. The
conferencing system also reserves or allocates a new "confObjID"
(called "confObjID*" in Figure 9) to be used for the cloned
conference object. This new identifier is of course different
from the one associated with the conference to be cloned, since
it represents a different conference object. Any subsequent
protocol requests from any of the members of the conference must
use this new identifier. The conferencing system maintains the
mapping between this conference ID and the parent conference
object ID associated with the reservation through the conference
instance, and this mapping is explicitly addressed through the
"cloning-parent" element of the "conference-description" in the
new conference object.
1. confRequest/create message (Alice clones an existing conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
Barnes, et al. Expires February 3, 2012 [Page 30]
Internet-Draft CCMP Call Flow Examples August 2011
2. confResponse/create message (created conference
object returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
New conference by Alice cloned from 6845432
</info:display-text>
<info:maximum-user-count>10</info:maximum-user-count>
<info:available-media>
<info:entry label="11">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
<xcon:cloning-parent>
xcon:6845432@example.com
</xcon:cloning-parent>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
<xcon:allowed-users-list>
<xcon:target uri="sip:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:bob83@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>
confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy>
Barnes, et al. Expires February 3, 2012 [Page 31]
Internet-Draft CCMP Call Flow Examples August 2011
<xcon:floor id="1">
<xcon:media-label>11</xcon:media-label>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 10: Create Basic Conference (Clone) Detailed Messaging
6. Conference Users Scenarios and Examples
Section 5 showed examples describing the several different ways a
conference might be created using CCMP. This section focuses on
user-related scenarios, i.e., typical scenarios that may occur during
the lifetime of a conference, like adding new users and handling
their media. The following scenarios are based on those documented
in the XCON framework. The examples assume that a conference has
already been correctly established, with media, if applicable, per
one of the examples in Section 5.
6.1. Adding a Party
In this example, Alice wants to add Bob to an established conference.
In the following example we assume Bob is a new user of the system,
which means Alice also needs to provide some details about him. In
fact, the case of Bob already present as a user in the conferencing
system is much easier to address, and will be discussed later on.
Barnes, et al. Expires February 3, 2012 [Page 32]
Internet-Draft CCMP Call Flow Examples August 2011
"Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS
| | | |
|(1) userRequest(confUserID,| |
| confObjID, create, | |
| userInfo) | | |
|-------------------------------------->|
| | | |
| | (a) Create +---|
| | | Bob | |
| | | as a | |
| | | user +-->|
| | | |
|(2) userResponse(confUserID, confObjID |
| create, 200, success, userInfo) |
|<--------------------------------------|
| | | |
| | | (b) Focus |
| | | sets up |
| | | signaling |
| | | to Bob |
| |<----------------------|
| | | |
| | | (c) Notify|
| | | ("Bob just|
| | | joined") |
| | |<----------|
| | | |
' ' ' '
' ' ' '
' ' ' '
Figure 11: Client Manipulation of Conference - Add a party
1. Alice sends a userRequest message with an operation of "create"
to add Bob to the specific conference as identified by the
"confObjID". The "create" operation also makes sure that Bob is
created as a user in the whole conferencing system. This is done
by adding in the request a "userInfo" element describing Bob as a
user. This is needed in order to let the conferencing system be
aware of Bob's characteristics. In case Bob was already a
registered user, Alice would just have referenced him through his
XCON-USERID in the "entity" attribute of the "userInfo" field,
without providing additional data. In fact, that data
(including, for instance, Bob's SIP-URI to be used subsequently
for dial-out) would be obtained by referencing the extant
registration. The conference server ensures that Alice has the
Barnes, et al. Expires February 3, 2012 [Page 33]
Internet-Draft CCMP Call Flow Examples August 2011
appropriate authority based on the policies associated with that
specific conference object to perform the operation. As
mentioned before, a new Conference User Identifier is created for
Bob, and the "userInfo" is used to update the conference object
accordingly. As already seen in Section 5.3, a placeholder
wildcard ("xcon-userid:AUTO_GENERATE_1@example.com" in the CCMP
messages below) is used for the "entity" attribute of the
"userInfo" element, to be replaced by the actual XCON-USERID
later on;
2. Bob is successfully added to the conference object, and an XCON-
USERID is allocated for him ("xcon-userid:Bob@example.com"); this
identifier is reported in the response as part of the "entity"
element of the returned "userInfo";
3. In the presented example, the call signaling to add Bob to the
conference is instigated through the Focus as well. As noted
previously, this is implementation specific. In fact, a
conferencing system may accomplish different actions after the
user creation, just as it may do nothing at all. Among the
possible actions, for instance, Bob may be added as a <target>
element to the <allowed-users-list> element, whose joining
"method" may be either "dial-in" or "dial-out". Besides, out-of-
band notification mechanisms may be involved as well, e.g., to
notify Bob via mail of the new conference, including details as
the date, password, expected participants and so on (see
Section 4.3).
Once Bob has been successfully added to the specified conference,
per updates to the state, and depending upon the policies, other
participants (including Bob himself) may be notified of the
addition of Bob to the conference via the Conference Notification
Service in use.
1. userRequest/create message (Alice adds Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<ccmp:userRequest>
Barnes, et al. Expires February 3, 2012 [Page 34]
Internet-Draft CCMP Call Flow Examples August 2011
<userInfo entity="xcon-userid:AUTO_GENERATE_1@example.com">
<info:display-text>Bob</info:display-text>
<info:associated-aors>
<info:entry>
<info:uri>mailto:bob.depippis@example.com</info:uri>
<info:display-text>Bob's email</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop</info:display-text>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create message (a new XCON-USERID is
created for Bob and he is added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>10</version>
<ccmp:userResponse>
<userInfo entity="xcon-userid:Bob@example.com">
<info:display-text>Bob</info:display-text>
<info:associated-aors>
<info:entry>
<info:uri>mailto:bob.depippis@example.com</info:uri>
<info:display-text>Bob's email</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop</info:display-text>
</info:endpoint>
</userInfo>
</ccmp:userResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Barnes, et al. Expires February 3, 2012 [Page 35]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 12: Add Party Message Details
6.2. Muting a Party
This section provides an example of the muting of a party in an
active conference. We assume that the user to mute has already been
added to the conference. The document only addresses muting and not
unmuting, since the latter would involve an almost identical CCMP
message flow anyway. However, if any external floor control is
involved, whether a particular conference client can actually mute/
unmute itself, must be considered by the conferencing system.
Please notice that interaction between CCMP and floor control
should be carefully considered. In fact, handling CCMP- and BFCP-
based media control has to be considered as multiple layers: i.e.,
a participant may have the BFCP floor granted, but be muted by
means of CCMP. If so, he would still be muted in the conference,
and would only be unmuted if both the protocols allowed for this.
Figure 13 provides an example of one client, "Alice", impacting the
media state of another client, "Bob". This example assumes an
established conference. In this example, Alice, whose role is
"moderator" of the conference, wants to mute Bob on a medium-size
multi-party conference, as his device is not muted (and he's
obviously not listening to the call) and background noise in his
office environment is disruptive to the conference. BFCP floor
control is assumed not to be involved.
Muting can be accomplished using the "mute" control in the conference
object, in which case the conference server must update the settings
associated with the user's media streams. Muting/unmuting can also
be accomplished by directly updating the conference object with
modified settings related to the target user's media streams, which
is the approach shown in this example. Specifically, Bob's
"userInfo" is updated by modifying its audio <endpoint> information
(e.g., setting it to "recvonly" in case of muting), identified by the
right media id.
Barnes, et al. Expires February 3, 2012 [Page 36]
Internet-Draft CCMP Call Flow Examples August 2011
"Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS MS
| | | | |
|(1) userRequest(subject, | | |
| confUserID,confObjID, | | |
| update,userInfo) | | |
| | | | |
|--------------------------------------->| |
| | | | Mute Bob |
| | | |----------------->|
| | | | 200 OK |
| | | |<-----------------|
| | | | |
| |<====== XXX Bob excluded from mix XXX ====>|
| | | | |
| | (a) Update +---| |
| | Bob in | | |
| | Data Model | | |
| | (muted) +-->| |
| | | | |
| (2)userResponse(confUserID,confObjID, | |
| update,200,success,version) | |
|<---------------------------------------| |
| | | | |
| | | (b) Notify | |
| | | ("Bob is | |
| | | muted") | |
| | |<-----------| |
| | | | |
' ' ' ' '
' ' ' ' '
' ' ' ' '
Figure 13: Client Manipulation of Conference - Mute a party
1. Alice sends a userRequest message with an "update" operation and
the userInfo with the "status" field in the "media" element for
Bob's <endpoint> set to "revconly". In order to authenticate
herself, Alice provides in the "subject" request parameter her
registration credentials (i.e., username and password). The
"subject" parameter is an optional one: its use can be systematic
whenever the conferencing server envisages to authenticate each
requestor. In such cases, if the client does not provide the
required authentication information, the conferencing server
answers with a CCMP "authenticationRequired" response message,
indicating that the request cannot be processed without including
the proper "subject" parameter. The Conference Server ensures
Barnes, et al. Expires February 3, 2012 [Page 37]
Internet-Draft CCMP Call Flow Examples August 2011
that Alice has the appropriate authority based on the policies
associated with that specific conference object to perform the
operation. It recognizes that Alice is allowed to request the
specified modification, since she is moderator of the target
conference, and updates the "userInfo" in the conference object
reflecting that Bob's media is not to be mixed with the
conference media. If the Conference Server relies on a remote
Media Server for its multimedia functionality, it subsequently
changes Bob's media profile accordingly by means of the related
protocol interaction with the MS. An example describing a
possible way of dealing with such a situation using the Media
Server Control architecture is described in
[I-D.ietf-mediactrl-call-flows], at "Simple Bridging: Framework
Transactions (2)".
2. A userResponse message with a "200" response-code ("success") is
then sent to Alice. Depending upon the policies, the conference
server may notify other participants (including Bob) of this
update via any Conference Notification Service that may be in
use.
Barnes, et al. Expires February 3, 2012 [Page 38]
Internet-Draft CCMP Call Flow Examples August 2011
1. userRequest/update message (Alice mutes Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<subject>
<username>Alice83</username>
<conference-password>13011983</conference-password>
</subject>
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com">
<info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>recvonly</info:status>
</info:media>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/update message (Bob has been muted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>7</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Barnes, et al. Expires February 3, 2012 [Page 39]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 14: Mute Message Details
6.3. Conference Announcements and Recordings
This section deals with features that are typically required in a
conferencing system, such as public announcements (e.g., to notify
vocally that a new user joined a conference) and name recording.
While this is not strictly CCMP-related (the CCMP signaling is
actually the same as the one seen in Section 6.1) it is an
interesting scenario to address to see how several components of an
XCON-compliant architecture interact with each other to make it
happen.
In this example, as shown in Figure 15 Alice is joining Bob's
conference that requires that she first enters a pass code. After
successfully entering the pass code, an announcement prompts Alice to
speak her name so it can be recorded. When Alice is added to the
active conference, the recording is played back to all the existing
participants. A very similar example is presented in Figure 33 of
[I-D.ietf-mediactrl-call-flows].
Barnes, et al. Expires February 3, 2012 [Page 40]
Internet-Draft CCMP Call Flow Examples August 2011
CMCC "Alice" ConfS MS
| | |
|(1)userRequest(confObjID, | |
| create,userInfo) | |
|--------------------------->| |
| |--+ Alice is |
| | | new in the |
| |<-+ system (create |
| | confUserID) |
| ConfS handles +--| |
| SIP signaling | | |
| (Alice<->ConfS<->MS) +->| |
| | |
| |--+ A password is |
| | | required for |
| |<-+ that conference |
| | |
| | Request IVR menu (PIN) |
| |--------------------------->|
| | |
|<========= MS gets PIN from Alice through DTMF =========>|
| | |
| | Provided PIN is... |
| |<---------------------------|
| Check +--| |
| PIN | | |
| +->| |
| |--+ Alice must |
| | | record her |
| |<-+ name |
| | |
| | Request name recording |
| |--------------------------->|
| | |
|<========= MS records Alice's audio RTP (name) =========>|
| | |
| | Audio recording |
| |<---------------------------|
| Complete +--| |
| creation | | |
| of Alice +->| |
| | |
| | |
| (2)userResponse(confUserID,| |
| confObjID,create,200,| |
| success,version) | |
|<---------------------------| |
| | |
Barnes, et al. Expires February 3, 2012 [Page 41]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 15: Recording and Announcements
1. Upon receipt of the userRequest from Alice to be added to Bob's
conference, the conferencing system determines that a password is
required for this specific conference. Thus an announcement
asking Alice to enter the password is sent back. This may be
achieved by means of typical IVR functionality. Once Alice
enters the password, it is validated against the policies
associated with Bob's active conference. The conferencing system
then connects to a server which prompts and records Alice's name.
The conferencing system must also determine whether Alice is
already a user of this conferencing system or whether she is a
new user. In this case, Alice is a new user for this
conferencing system, so a Conference User Identifier (i.e., an
XCON-USERID) is created for Alice. Based upon the contact
information provided by Alice, the call signaling to add Alice to
the conference is instigated through the Focus.
2. The conference server sends Alice a userResponse message which
includes the "confUserID" assigned by the conferencing system to
her. This would allow Alice to later perform operations on the
conference (if she were to have the appropriate policies),
including registering for event notifications associated with the
conference. Once the call signaling indicates that Alice has
been successfully added to the specific conference, per updates
to the state, and depending upon the policies, other participants
(e.g., Bob) are notified of the addition of Alice to the
conference via the conference notification service and an
announcement is provided to all the participants indicating that
Alice has joined the conference.
Barnes, et al. Expires February 3, 2012 [Page 42]
Internet-Draft CCMP Call Flow Examples August 2011
1. userRequest/create message (A new conferencing system client,
Alice, enters Bob's conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confObjID>xcon:bobConf@example.com</confObjID>
<operation>create</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:AUTO_GENERATE_1@example.com">
<info:associated-aors>
<info:entry>
<info:uri>
mailto:Alice83@example.com
</info:uri>
<info:display-text>email</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:alice_789@example.com"/>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create (Alice provided with a new xcon-userid
and added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:bobConf@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>5</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Barnes, et al. Expires February 3, 2012 [Page 43]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 16: Announcement Messaging Details
6.4. Monitoring for DTMF
Conferencing systems often also need the capability to monitor for
DTMF from each individual participant. This would typically be used
to enter the identifier and/or access code for joining a specific
conference. This feature is often also exploited to achieve
interaction between participants and the conference system for non-
XCON-aware user agents (e.g., using DTMF tones to get muted/unmuted).
An example of DTMF monitoring, within the context of the framework
elements, is shown in Figure 15. The mediactrl architecture/
protocols can be used by the conferencing system for all the DTMF
interactions. Examples for DTMF interception in conference instances
are presented in [I-D.ietf-mediactrl-call-flows].
6.5. Entering a password-protected conference
Some conferences may require a password to be provided by a user who
wants to manipulate the conference objects (e.g., join, update,
delete) via CCMP. In this case, a password would be included in the
<conference-password> element related to the conference XCON-URI in
the appropriate <conference-uris> entry and must be then included in
the "conference-password" field in the CCMP request addressed to a
specific conference.
In the following example, Alice, a conferencing system client,
attempts to join a password-protected conference.
1. Alice sends a userRequest message with a "create" operation to
add herself in the conference with XCON-URI
"xcon:8977777@example.com" (written in the "confObjID"
parameter). Alice provides her XCON-USERID via the "confUserID"
field of the userRequest and leaves out the "userInfo" one
(first-party join). In this first attempt, she doesn't insert
any password parameter.
2. Upon receipt the userRequest/create message, the conferencing
server detects that the indicated conference is not joinable
without providing the appropriate pass code. A userResponse
message with "423" response-code ("conference password required")
is returned to Alice to indicate that her join has been refused
and that she has to resend her request including the appropriate
conference password in order to participate.
3. After getting the pass code through out-of-band mechanisms, Alice
provides it in the proper "password" request field of a new
Barnes, et al. Expires February 3, 2012 [Page 44]
Internet-Draft CCMP Call Flow Examples August 2011
userRequest/create message and sends the updated request back to
the server.
4. The conferencing server checks the provided password and then
adds Alice to the protected conference. After that, a
userResponse with a "200" response-code ("success") is sent to
Alice.
1. userRequest/create message (Alice tries to enter the conference
without providing the password)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<ccmp:userRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create message (423, "conference password required")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>423</response-code>
<response-string>conference password required</response-string>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
3. userRequest/create message (Alice provides the password)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Barnes, et al. Expires February 3, 2012 [Page 45]
Internet-Draft CCMP Call Flow Examples August 2011
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<conference-password>8601</conference-password>
<ccmp:userRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
4. userResponse/create message
(Alice has been added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>10</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 17: Password-protected conference join messages details
7. Sidebars Scenarios and Examples
While creating conferences and manipulating users and their media are
sufficient for many scenarios, there may be cases when a more complex
management is needed.
In fact, a feature typically required in conferencing systems is the
ability to create sidebars. A sidebar is basically a child
conference that usually includes a subset of the participants of the
Barnes, et al. Expires February 3, 2012 [Page 46]
Internet-Draft CCMP Call Flow Examples August 2011
parent conference, and a subset of its media as well. Sidebars are
typically required whenever some of the participants in a conference
want a private discussion, without interfering with the main
conference.
This section deals with some typical scenarios using a sidebar, like
whispering, private messages and coaching scenarios. The first
subsections present some examples of how a generic sidebar can be
created, configured and managed.
7.1. Internal Sidebar
Figure 18 provides an example of one client, "Alice", involved in an
active conference with "Bob" and "Carol". Alice wants to create a
sidebar to have a side discussion with Bob while still viewing the
video associated with the main conference. Alternatively, the audio
from the main conference could be maintained at a reduced volume.
Alice initiates the sidebar by sending a request to the conferencing
system to create a conference reservation based upon the active
conference object. Alice and Bob would remain on the roster of the
main conference, such that other participants could be aware of their
participation in the main conference, while an internal-sidebar
conference is occurring. Besides, Bob decides that he is not
interested in still receiving the conference audio in background (not
even at a lower volume as Alice configured) and so modifies the
sidebar in order to make that stream inactive for him.
Alice Bob ConfS
| | |
|(1) sidebarByValRequest(confUserID, |
| confObjID,create) |
|--------------------------------------------->|
| | |
| | (a) Create +---|
| | sidebar-by-val | |
| | (new conf obj | |
| | cloned from +-->|
| | confObjID) | Sidebar now has
| | | id confObjID*
|(2) sidebarByValResponse(confUserID, | (parent mapping
| (confObjID*,create,200,success, | conf<->sidebar)
| version,sidebarByValInfo) |
|<---------------------------------------------|
| | |
|(3) sidebarByValRequest |
| (confUserID, confObjID*, |
Barnes, et al. Expires February 3, 2012 [Page 47]
Internet-Draft CCMP Call Flow Examples August 2011
| update,sidebarByValInfo) |
|--------------------------------------------->|
| | |
| | (b) Update +---|
| | sidebar-by-val | |
| | (media, users | |
| | etc.) +-->|
| | | Sidebar is
| | | modified
|(4) sidebarByValResponse(confUserID, |
| confObjID*, update, |
| 200, success, version) |
|<---------------------------------------------|
| | |
| |(5) userRequest |
| | (confUserID', |
| | confObjID*, |
| | update,userInfo)|
| |---------------------->|
| | |
| | (c) Update +---|
| | user settings | |
| | (Bob's media) | |
| | +-->|
| | | Sidebar is modified
| | | (original audio
| | | inactive for Bob)
| |(6) userResponse |
| | (confUserID', |
| | confObjID*, |
| | update, 200, |
| | success,version) |
| |<----------------------|
| | |
" " "
" " "
" " "
Figure 18: Client Creation of a Sidebar Conference
1. Upon receipt of CCMP sidebarByValRequest message to create a new
sidebar-conference based upon the confObjID received in the
request, the conferencing system uses the confObjID to clone a
conference reservation for the sidebar. The sidebar reservation
is NOT independent of the active conference (i.e., parent). The
conferencing system also allocates a new XCON-URI for that
sidebar to be used for any subsequent protocol requests from any
Barnes, et al. Expires February 3, 2012 [Page 48]
Internet-Draft CCMP Call Flow Examples August 2011
of the members of the conference. The new sidebar identifier
("confObjID*" in Figure 18) is returned in the response message
confObjID parameter.
2. The relationship information is provided in the
sidebarByValResponse message, specifically in the <sidebar-
parent> element. A dump of the complete representation of the
main/parent conference is provided below as well to show how the
cloning process for the creation of the sidebar could take place.
3. Upon receipt of the sidebarByValResponse message to reserve the
conference, Alice can now create an active conference using that
reservation, or create additional reservations based upon the
existing reservations. In this example, Alice wants only Bob to
be involved in the sidebar, thus she manipulates the membership
so that only the two of them appear in the <allowed-users-list>
section. Alice also wants both audio and video from the original
conference to be available in the sidebar. For what concerns the
media belonging to the sidebar itself, Alice wants the audio to
be restricted to the participants in the sidebar (that is, Bob
and herself). Additionally, Alice manipulates the media values
to receive the audio from the main conference at a reduced
volume, so that the communication between her and Bob isn't
affected. Alice sends a sidebarByValRequest message with an
operation of "update" along with the "sidebarByValInfo"
containing the aforementioned sidebar modifications.
4. Upon receipt of the sidebarByValRequest to update the sidebar
reservation, the conference server ensures that Alice has the
appropriate authority based on the policies associated with that
specific conference object to perform the operation. The
conference server must also validate the updated information in
the reservation, ensuring that a member like Bob is already a
user of this conference server. Once the data for the confObjID
is updated, the conference server sends a sidebarByValResponse to
Alice. Depending upon the policies, the initiator of the request
(i.e., Alice) and the participants in the sidebar (i.e., Bob) may
be notified of his addition to the sidebar via the conference
notification service.
5. At this point, Bob sends a userRequest message to the conference
server with an operation of "update" to completely disable the
background audio from the parent conference, since it prevents
him from understanding what Alice says in the sidebar.
6. Notice that Bob's request only changes the media perspective for
Bob. Alice keeps on receiving both the audio from Bob and the
background from the parent conference. This request may be
Barnes, et al. Expires February 3, 2012 [Page 49]
Internet-Draft CCMP Call Flow Examples August 2011
relayed by the conference server to the Media Server handling the
mixing, if present. Upon completion of the change, the
conference server sends a "userResponse" message to Bob.
Depending upon the policies, the initiator of the request (i.e.,
Bob) and the participants in the sidebar (i.e., Alice) may be
notified of this change via the conference notification service.
The following conference object represents the conference in which
the sidebar is to be created. It will be used by the conferencing
system to create the new conference object associated with the
sidebar.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<info:conference-info
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
entity="xcon:8977878@example.com">
<info:conference-description>
<info:display-text>MAIN CONFERENCE</info:display-text>
<info:conf-uris>
<info:entry>
<info:uri>sip:8977878@example.com</info:uri>
<info:display-text>conference sip uri</info:display-text>
</info:entry>
</info:conf-uris>
<info:available-media>
<info:entry label="123">
<info:display-text>main conference audio</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>main conference video</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
<xcon:controls>
<xcon:video-layout>single-view</xcon:video-layout>
</xcon:controls>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>true</info:active>
</info:conference-state>
<info:users>
Barnes, et al. Expires February 3, 2012 [Page 50]
Internet-Draft CCMP Call Flow Examples August 2011
<info:user entity="xcon-userid:Alice@example.com">
<info:display-text>Alice</info:display-text>
<info:endpoint entity="sip:Alice@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>sendrecv</info:status>
</info:media>
<info:media id="2">
<info:label>456</info:label>
<info:status>sendrecv</info:status>
</info:media>
</info:endpoint>
</info:user>
<info:user entity="xcon-userid:Bob@example.com">
<info:display-text>Bob</info:display-text>
<info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>sendrecv</info:status>
</info:media>
<info:media id="2">
<info:label>456</info:label>
<info:status>sendrecv</info:status>
</info:media>
</info:endpoint>
</info:user>
<info:user entity="xcon-userid:Carol@example.com">
<info:display-text>Carol</info:display-text>
<info:endpoint entity="sip:carol@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>sendrecv</info:status>
</info:media>
<info:media id="2">
<info:label>456</info:label>
<info:status>sendrecv</info:status>
</info:media>
</info:endpoint>
</info:user>
</info:users>
</info:conference-info>
Figure 19: Conference with Alice, Bob and Carol
The sidebar creation happens through a cloning of the parent
conference. Once the sidebar is created, an "update" makes sure that
the sidebar is customized as needed. The following protocol dump
makes the process clearer.
Barnes, et al. Expires February 3, 2012 [Page 51]
Internet-Draft CCMP Call Flow Examples August 2011
1. sidebarByValRequest/create message (Alice creates an
internal sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<ccmp:sidebarByValRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByValResponse/create message (sidebar returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:sidebarByValResponse>
<sidebarByValInfo entity="xcon:8974545@example.com">
<info:conference-description>
<info:display-text>
SIDEBAR CONFERENCE registered by Alice
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="456">
Barnes, et al. Expires February 3, 2012 [Page 52]
Internet-Draft CCMP Call Flow Examples August 2011
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/>
</xcon:allowed-users-list>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. sidebarByValRequest/update message (Alice updates the
created sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<ccmp:sidebarByValRequest>
<sidebarByValInfo entity="xcon:8974545@example.com">
<info:conference-description>
<info:display-text>
private sidebar Alice - Bob
Barnes, et al. Expires February 3, 2012 [Page 53]
Internet-Draft CCMP Call Flow Examples August 2011
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>recvonly</info:status>
<xcon:controls>
<xcon:gain>-60</xcon:gain>
</xcon:controls>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
Barnes, et al. Expires February 3, 2012 [Page 54]
Internet-Draft CCMP Call Flow Examples August 2011
4. sidebarByValResponse/update message (sidebar's
updates accepted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByValResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
5. userRequest/update message (Bob updates his media)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Bob@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com">
<info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:display-text>
main conference audio
</info:display-text>
<info:label>123</info:label>
<info:status>inactive</info:status>
</info:media>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
Barnes, et al. Expires February 3, 2012 [Page 55]
Internet-Draft CCMP Call Flow Examples August 2011
6. userResponse/update message (Bob's preferences are set)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Bob@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>3</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 20: Internal Sidebar Messaging Details
7.2. External Sidebar
Figure 21 provides an example of a different approach towards
sidebar. In this scenario, one client, "Alice", is involved in an
active conference with "Bob", "Carol", "David" and "Ethel". Alice
gets an important text message via a whisper from Bob that a critical
customer needs to talk to Alice, Bob and Ethel. Alice creates a
sidebar to have a side discussion with the customer "Fred" including
the participants in the current conference with the exception of
Carol and David, who remain in the active conference. The difference
from the previous scenario is that Fred is not part of the parent
conference: this means that different policies might be involved,
considering that Fred may access information coming from the parent
conference, in case the sidebar was configured accordingly. For this
reason, in this scenario we assume that Alice disables all the media
from the original (parent) conference within the sidebar. This means
that, while in the previous example Alice and Bob still heard the
audio from the main conference in background, this time no background
is made available. Alice initiates the sidebar by sending a request
to the conferencing system to create a conference reservation based
upon the active conference object. Alice, Bob and Ethel would remain
on the roster of the main conference in a hold state. Whether or not
the hold state of these participants is visible to other participants
depends upon the individual and local policy. However, providing the
hold state allows the participants in the main conference to see that
others in the conference are busy. Note, that a separate conference
could have been created by Alice to allow Bob and Ethel to talk to
Barnes, et al. Expires February 3, 2012 [Page 56]
Internet-Draft CCMP Call Flow Examples August 2011
Fred. However, creating a sidebar has somewhat of an advantage by
allowing the conference to be created using some of the same settings
(e.g., role, floor control, etc.) that Bob and Ethel had in the main
conference and it would allow for updates such that the media could
be updated, for example, to provide audio from the main conference.
Barnes, et al. Expires February 3, 2012 [Page 57]
Internet-Draft CCMP Call Flow Examples August 2011
Alice Bob ConfS
| | |
|(1) sidebarByRefRequest(confUserID, |
| confObjID, create) |
|--------------------------------------------->|
| | |
| | (a) Create +---|
| | sidebar-by-ref | |
| | (new conf obj | |
| | cloned from +-->|
| | confObjID) | Sidebar now has
| | | id confObjID*
|(2) sidebarByRefResponse(confUserID, | (parent mapping
| confObjID*,create,200,success, | conf<->sidebar)
| version,sidebarByRefInfo) |
|<---------------------------------------------|
| | |
|(3) sidebarByRefRequest(confUserID, |
| confObjID*,update,sidebarByRefInfo) |
|--------------------------------------------->|
| | |
| | (b) Create +---|
| | new user for | |
| | Fred | |
| | +-->|
| | |
| | (c) Update +---|
| | sidebar-by-ref | |
| | (media, users | |
| | policy, etc.) +-->|
| | | Sidebar is modified:
| | | no media from the
| | | parent conference is
| | | available to anyone
|(4) sidebarByRefResponse(confUserID, |
| confObjID*, update, |
| 200, success, version) |
|<---------------------------------------------|
| | |
| | Notify (Fred |
| | added to |
| | sidebar users) |
| |<----------------------|
| | |
" " "
" " "
" " "
Barnes, et al. Expires February 3, 2012 [Page 58]
Internet-Draft CCMP Call Flow Examples August 2011
Figure 21: Client Creation of an External Sidebar
1. Upon receipt of the "sidebarByRefRequest" message to create a new
sidebar conference, based upon the active conference specified by
"confObjID" in the request, the conferencing system uses that
active conference to clone a conference reservation for the
sidebar. The sidebar reservation is NOT independent of the
active conference (i.e., parent). The conferencing system, as
before, allocates a conference ID (confObjID*) to be used for any
subsequent protocol requests toward the sidebar reservation. The
mapping between the sidebar conference ID and the one associated
with the main conference is maintained by the conferencing system
and it is gathered from the c<sidebar-parent> element in the
sidebar conference object.
2. Upon receipt of the "sidebarByRefResponse" message, which
acknowledges the successful creation of the sidebar object, Alice
decides that only Bob and Ethel, along with the new participant
Fred are to be involved in the sidebar. Thus she manipulates the
membership accordingly. Alice also sets the media in the
"conference-info" such that the participants in the sidebar don't
receive any media from the main conference. All these settings
are provided to the conferencing system by means of a new
"sidebarByRefRequest" message, with an "update" operation.
3. Alice sends the aforementioned "sidebarByRefRequest" to update
the information in the reservation and to create an active
conference. Upon receipt of the "sidebarByRefRequest" with an
operation of "update", the conferencing system ensures that Alice
has the appropriate authority based on the policies associated
with that specific conference object to perform the operation.
The conferencing system also validates the updated information in
the reservation. Since Fred is a new user for this conferencing
system, a conference user identifier is created for Fred.
Specifically, Fred is added to the conference by only providing
his SIP URI. Based upon the contact information provided for
Fred by Alice, the call signaling to add Fred to the conference
may be instigated through the Focus (e.g., if Fred had a "dial-
out" method set as the target for him) at the actual activation
of the sidebar.
4. The conference server sends a "sidebarByRefResponse" message and,
depending upon the policies, the initiator of the request (i.e.,
Alice) and the participants in the sidebar (i.e., Bob and Ethel)
may be notified of his addition to the sidebar via the conference
notification service.
Barnes, et al. Expires February 3, 2012 [Page 59]
Internet-Draft CCMP Call Flow Examples August 2011
1. sidebarByRefRequest/create message (Alice creates an
external sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<ccmp:sidebarByRefRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByRefResponse/create message (created
sidebar returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:sidebarByRefResponse>
<sidebarByRefInfo entity="xcon:8971212@example.com">
<info:conference-description>
<info:display-text>
SIDEBAR CONFERENCE registered by Alice
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
Barnes, et al. Expires February 3, 2012 [Page 60]
Internet-Draft CCMP Call Flow Examples August 2011
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:David@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Ethel@example.com"/>
</xcon:allowed-users-list>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. sidebarByRefRequest/update message (Alice updates the sidebar)
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971212@example.com">
Barnes, et al. Expires February 3, 2012 [Page 61]
Internet-Draft CCMP Call Flow Examples August 2011
<info:conference-description>
<info:display-text>
sidebar with Alice, Bob, Ethel and Fred
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
<xcon:controls>
<xcon:video-layout>
single-view
</xcon:video-layout>
</xcon:controls>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
Barnes, et al. Expires February 3, 2012 [Page 62]
Internet-Draft CCMP Call Flow Examples August 2011
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out"
uri="sip:fred@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
4. sidebarByRefResponse/update message (sidebar updated)
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByRefResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 22: External Sidebar Messaging Details
7.3. Private Messages
The case of private messages can be handled as a sidebar with just
two participants, similarly to the example in Section 7.1. Unlike
the previous example, rather than using audio within the sidebar,
Alice could just add an additional text based media stream to the
sidebar in order to convey her textual messages to Bob, while still
viewing and listening to the main conference.
In this scenario, Alice requests to the conferencing system the
creation of a private chat room within the main conference context
(presented in Figure 19) in which the involved participants are just
Bob and herself. This can be achieved through the following CCMP
transaction (Figure 23).
Barnes, et al. Expires February 3, 2012 [Page 63]
Internet-Draft CCMP Call Flow Examples August 2011
1. Alice forwards a sidebarByValRequest/create to the Conferencing
Control Server with the main conference XCON-URI in the
"confObjID" parameter and the desired sidebar conference object
in the "sidebarByValInfo" field. In this way, a sidebar creation
using user-provided conference information is requested to the
conferencing system. Please note that, unlike the previous
sidebar examples, in this case a completely new conference object
to describe the sidebar is provided: there is no cloning
involved, while the "confObjID" still enforces the parent-child
relationship between the main conference and the to-be-created
sidebar.
2. The Conference Control Server, after checking Alice's rights and
validating the conference-object carried in the request, creates
the required sidebar-by-val conference and a new XCON-URI for it.
Instead of cloning the main conference object, as shown in
Section 7.1 and Section 7.2, the sidebar is created on the basis
of the user provided conference information. However, the parent
relationship between the main conference and the newly created
sidebar is still maintained by the conferencing system (as a
consequence of the chosen CCMP request message type - the
sidebarByVal one) and it is reflected by the <sidebar-parent>
element in the "sidebarByValInfo" element returned in the
sidebarByValResponse message. Please notice that, according to
the CCMP specification, the return of the created sidebar data in
this kind of "success" response is not mandatory.
1. sidebarByValRequest/create message (Alice creates a private
chat room between Bob and herself)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<ccmp:sidebarByValRequest>
<sidebarByValInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description>
<info:display-text>
private textual sidebar alice - bob
</info:display-text>
Barnes, et al. Expires February 3, 2012 [Page 64]
Internet-Draft CCMP Call Flow Examples August 2011
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar text
</info:display-text>
<info:type>text</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByValResponse/create message (sidebar returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
Barnes, et al. Expires February 3, 2012 [Page 65]
Internet-Draft CCMP Call Flow Examples August 2011
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:sidebarByValResponse>
<sidebarByValInfo entity="xcon:8974545@example.com">
<info:conference-description>
<info:display-text>
private textual sidebar alice - bob
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="789">
<info:display-text>
sidebar text
</info:display-text>
<info:type>text</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
</info:conference-description>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValResponse>
</ccmpResponse>
Barnes, et al. Expires February 3, 2012 [Page 66]
Internet-Draft CCMP Call Flow Examples August 2011
</ccmp:ccmpResponse>
Figure 23: Sidebar for Private Messages scenario
7.4. Observing and Coaching
Observing and Coaching is one of the most interesting sidebars-
related scenarios. In fact, it highlights two different interactions
that have to be properly coordinated.
An example of observing and coaching is shown in figure Figure 25.
In this example, call center agent Bob is involved in a conference
with customer Carol. Since Bob is a new agent and Alice sees that he
has been on the call with Carol for longer than normal, she decides
to observe the call and coach Bob as necessary. Of course the
conferencing system must make sure that the customer Carol is not
aware of the presence of the coach Alice. This makes the use of a
sidebar necessary for the success of the scenario.
Consider the following as the conference document associated with the
video conference involving Bob (the call agent) and Carol (the
customer) (Figure 24):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<info:conference-info
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
entity="xcon:8978383@example.com">
<info:conference-description>
<info:display-text>
CUSTOMER SERVICE conference
</info:display-text>
<info:conf-uris>
<info:entry>
<info:uri>sip:8978383@example.com</info:uri>
<info:display-text>conference sip uri</info:display-text>
</info:entry>
</info:conf-uris>
<info:available-media>
<info:entry label="123">
<info:display-text>service audio</info:display-text>
<info:type>audio</info:type>
Barnes, et al. Expires February 3, 2012 [Page 67]
Internet-Draft CCMP Call Flow Examples August 2011
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>service video</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
<xcon:controls>
<xcon:video-layout>single-view</xcon:video-layout>
</xcon:controls>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>true</info:active>
</info:conference-state>
<info:users>
<info:user entity="xcon-userid:bob@example.com">
<info:display-text>Bob - call agent</info:display-text>
<info:endpoint entity="sip:bob@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>sendrecv</info:status>
</info:media>
<info:media id="2">
<info:label>456</info:label>
<info:status>sendrecv</info:status>
</info:media>
</info:endpoint>
</info:user>
<info:user entity="xcon-userid:carol@example.com">
<info:display-text>Carol - customer</info:display-text>
<info:endpoint entity="sip:carol@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>sendrecv</info:status>
</info:media>
<info:media id="2">
<info:label>456</info:label>
<info:status>sendrecv</info:status>
</info:media>
</info:endpoint>
</info:user>
</info:users>
</info:conference-info>
Figure 24: A call-center conference object example
Barnes, et al. Expires February 3, 2012 [Page 68]
Internet-Draft CCMP Call Flow Examples August 2011
Alice Bob ConfS
| | |
|(1) sidebarByRefRequest(confUserID, |
| confObjID, create) |
|--------------------------------------------->|
| | |
| | (a) Create +---|
| | sidebar-by-ref | |
| | (new conf obj | |
| | cloned from +-->|
| | confObjID) | Sidebar now has
| | | id confObjID*
|(2) sidebarByRefResponse(confUserID, | (parent mapping
| confObjID*,create,200,success, | conf<->sidebar)
| version,sidebarByRefInfo) |
|<---------------------------------------------|
| | |
|(3) sidebarByRefRequest(confUserID, |
| confObjID*,update,sidebarByRefInfo) |
|--------------------------------------------->|
| | |
| | (b) Update +---|
| | sidebar-by-val | |
| | (media, users | |
| | policy, etc.) +-->|
| | | Sidebar is modified:
| | | unilateral sidebar
| | | audio, Carol excluded
| | | from the sidebar
|(4) sidebarByRefResponse(confUserID, |
| confObjID*, update, |
| 200, success, version) |
|<---------------------------------------------|
| | |
| | Notify (Bob |
| | he's been added to |
| | sidebar users) |
| |<----------------------|
| | |
" " "
" " "
" " "
Figure 25: Supervisor Creating a Sidebar for Observing/Coaching
Barnes, et al. Expires February 3, 2012 [Page 69]
Internet-Draft CCMP Call Flow Examples August 2011
1. Upon receipt of the sidbarByRefRequest/create from Alice to
"create" a new sidebar conference from the confObjID received in
the request, the conferencing system uses the received active
conference to clone a conference reservation for the sidebar.
The conferencing system also allocates a conference ID to be used
for any subsequent protocol requests from any of the members of
the conference. The conferencing system maintains the mapping
between this conference ID and the confObjID associated with the
sidebar reservation through the conference instance. The
conference server sends a sidebarByRefResponse message with the
new confObjID and relevant sidebarByRefInfo.
2. Upon receipt of the sidebarByRefResponse message, Alice
manipulates the data received in the sidebarByRefInfo in the
response. Alice wants only Bob to be involved in the sidebar,
thus she updates the <allowed-users-list> to include only Bob and
herself. Alice also wants the audio to be received by herself
and Bob from the original conference, but wants any outgoing
audio from herself to be restricted to the participants in the
sidebar, whereas Bob's outgoing audio should go to the main
conference, so that both Alice and the customer Carol hear the
same audio from Bob. Alice sends a sidebarByRefRequest message
with an "update" operation including the updated sidebar
information.
3. Upon receipt of the sidebarByRefRequest message with an "update"
operation, the conferencing system ensures that Alice has the
appropriate authority based on the policies associated with that
specific conference object to perform the operation. In order to
request the insertion of a further media stream in the sidebar
(i.e., in this example an audio stream from Alice to Bob), the
requestor has to provide a new <entry> element in the <available-
media> field of the "sidebarByRefInfo". The mandatory "label"
attribute of that new entry is filled with a dummy value
"AUTO_GENERATE_1", but it will contain the real server-generated
media stream identifier when the media stream is effectively
allocated on the server side. Similarly, the mandatory "id"
attribute in <media> element referring to the new sidebar audio
stream under both Alice's and Bob's <endpoint> contains a
wildcard value, respectively "AUTO_GENERATE_2" and
"AUTO_GENERATE_3": those values will be replaced with the
appropriated server-generated identifiers upon the creation of
the referred media stream. We are assuming the conferencing
control server is able to recognize those dummy values as place-
holders.
4. After validating the data, the conference server sends a
sidebarByRefResponse message. Based upon the contact information
Barnes, et al. Expires February 3, 2012 [Page 70]
Internet-Draft CCMP Call Flow Examples August 2011
provided for Bob by Alice, the call signaling to add Bob to the
sidebar with the appropriate media characteristics is instigated
through the Focus. Bob is notified of his addition to the
sidebar via the conference notification service, thus he is aware
that Alice, the supervisor, is available for coaching him through
this call.
1. sidebarByRefRequest/create message (Alice as coach creates a sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8978383@example.com</confObjID>
<operation>create</operation>
<ccmp:sidebarByRefRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByRefResponse/create message (sidebar created)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>Success</response-string>
<version>1</version>
<ccmp:sidebarByRefResponse>
<sidebarByRefInfo entity="xcon:8971313@example.com">
<info:conference-description>
<info:display-text>
SIDEBAR CONFERENCE registered by alice
</info:display-text>
<info:available-media>
<info:entry label="123">
Barnes, et al. Expires February 3, 2012 [Page 71]
Internet-Draft CCMP Call Flow Examples August 2011
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
<xcon:sidebar-parent>
xcon:8971313@example.com
</xcon:sidebar-parent>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:bob@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:carol@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. sidebarByRefRequest/update message (Alice introduces unilateral
sidebar audio and excludes Carol from the sidebar)
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID>
<operation>update</operation>
Barnes, et al. Expires February 3, 2012 [Page 72]
Internet-Draft CCMP Call Flow Examples August 2011
<ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971313@example.com">
<info:conference-description>
<info:display-text>
Coaching sidebar Alice and Bob
</info:display-text>
<info:available-media>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
Alice-to-Bob audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<info:user entity="xcon-userid:alice@example.com">
<info:endpoint entity="sip:alice@example.com">
<info:media id="AUTO_GENERATE_2">
<info:label>AUTO_GENERATE_1</info:label>
<info:status>sendonly</info:status>
</info:media>
</info:endpoint>
</info:user>
<info:user entity="xcon-userid:bob@example.com">
<info:endpoint entity="sip:bob@example.com">
<info:media id="AUTO_GENERATE_3">
<info:label>AUTO_GENERATE_1</info:label>
<info:status>recvonly</info:status>
</info:media>
</info:endpoint>
</info:user>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
Barnes, et al. Expires February 3, 2012 [Page 73]
Internet-Draft CCMP Call Flow Examples August 2011
4. sidebarByRefRequest/update message (updates accepted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByRefResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 26: Coaching and Observing Messaging details
8. Removing Participants and Deleting Conferences
The following scenarios detail the basic operations associated with
removing participants from conferences and entirely deleting
conferences. The examples assume that a conference has already been
correctly established, with media, if applicable, per one of the
examples in Section 5.
8.1. Removing a Party
Figure 27 provides an example of a client, "Alice", removing another
participant, "Bob", from a conference. This example assumes an
established conference with Alice, Bob, "Claire" and "Duck". In this
example, Alice wants to remove Bob from the conference so that the
group can continue in the same conference without Bob's
participation.
Barnes, et al. Expires February 3, 2012 [Page 74]
Internet-Draft CCMP Call Flow Examples August 2011
Alice Bob Claire ConfS
| | | |
|(1) userRequest(confUserID,| |
| confObjID, delete,| |
| userInfo) | |
|-------------------------------------->|
| | | |
| | | (a) Focus |
| | | tears down|
| | | signaling |
| | | to Bob |
| |<----------------------|
| | |
| | (b)Deletes+---|
| | | Bob | |
| | | as a | |
| | | user +-->|
| | | in |
| | | confObj |
| | | |
|(2) userResponse(confUserID,confObjID, |
| delete,200,success,version) |
|<--------------------------------------|
| | | |
| | | |
| | | (c) Notify|
| | | ("Bob just|
| | | left") |
| | |<----------|
| | | |
' ' ' '
' ' ' '
' ' ' '
Figure 27: Client Manipulation of Conference - Remove a party
1. Alice sends a userRequest message, with a "delete" operation.
The conference server ensures that Alice has the appropriate
authority based on the policies associated with that specific
conference object to perform the operation.
2. Based upon the contact and media information in the conference
object for Bob in the "userInfo" element, the conferencing system
starts the process to remove Bob (e.g., the call signaling to
remove Bob from the conference is instigated through the Focus).
The conference server updates the data in the conference object,
thus removing Bob from the <users> list. After updating the
Barnes, et al. Expires February 3, 2012 [Page 75]
Internet-Draft CCMP Call Flow Examples August 2011
data, the conference server sends a userResponse message to
Alice. Depending upon the policies, other participants (e.g.,
"Claire") may be notified of the removal of Bob from the
conference via the Conference Notification Service.
1. userRequest/delete message (Alice deletes Bob):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com"/>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/delete message (Bob has been deleted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>17</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 28: Removing a Participant Messaging Details
Barnes, et al. Expires February 3, 2012 [Page 76]
Internet-Draft CCMP Call Flow Examples August 2011
8.2. Deleting a Conference
In this section, an example of a successful conference deletion is
provided (Figure 29).
Alice ConfS
| |
|(1)confRequest(confUserID, |
| confObjID, delete) |
|------------------------------>|
| (a)Delete +---|
| Conf | |
| Object | |
| +-->|
| |--+ (b) MS
| | | removes related
| | | mixer instances and
| |<-+ their participants
| | (SIP signaling as well)
| |
|(2)confResponse(confUserID, |
| confObjID,delete,200, |
| success) |
| |
|<------------------------------|
| |
Figure 29: Deleting a conference
1. The conferencing system client "Alice" sends a confRequest
message with a "delete" operation to be performed on the
conference identified by the XCON-URI carried in the "confObjID"
parameter. The conference server, on the basis of the
"confUserID" included in the receipt request, ensures that Alice
has the appropriate authority to fulfill the operation.
2. After validating Alice's rights, the conferencing server
instigates the process to delete the conference object,
disconnecting participants and removing associated resources such
as mixer instances. Then, the conference server returns a
confResponse message to Alice with "200" as "response-code" and
the deleted conference XCON-URI in the "confObjID" field.
Barnes, et al. Expires February 3, 2012 [Page 77]
Internet-Draft CCMP Call Flow Examples August 2011
1. confRequest/delete message (Alice deletes a conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/delete message (200, "success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<ccmp:confResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 30: Deleting a Conference Messaging Details
9. IANA Considerations
This document has no IANA considerations.
10. Security Considerations
The security considerations applicable to the implementation of these
call flows are documented in the XCON Framework, with additional
Barnes, et al. Expires February 3, 2012 [Page 78]
Internet-Draft CCMP Call Flow Examples August 2011
security considerations documented in the CCMP document. Statements
with regards to the necessary security are discussed in particular
flows, however, this is for informational purposes only. The
implementor is encouraged to carefully consider the security
requirements in the normative documents.
11. Acknowledgements
The detailed content for this document is derived from the prototype
work of Lorenzo Miniero, Simon Pietro-Romano, Tobia Castaldi and
their colleagues at the University of Napoli.
12. References
12.1. Normative References
[RFC5239] Barnes, M., Boulton, C., and O. Levin, "A Framework for
Centralized Conferencing", RFC 5239, June 2008.
[I-D.ietf-xcon-ccmp]
Barnes, M., Boulton, C., Romano, S., and H. Schulzrinne,
"Centralized Conferencing Manipulation Protocol",
draft-ietf-xcon-ccmp-14 (work in progress), July 2011.
[I-D.ietf-xcon-event-package]
Camarillo, G., Srinivasan, S., Even, R., and J.
Urpalainen, "Conference Event Package Data Format
Extension for Centralized Conferencing (XCON)",
draft-ietf-xcon-event-package-01 (work in progress),
September 2008.
[I-D.ietf-xcon-common-data-model]
Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen,
"Conference Information Data Model for Centralized
Conferencing (XCON)", draft-ietf-xcon-common-data-model-31
(work in progress), June 2011.
12.2. Informative References
[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.
[RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol
(SIP) Call Control - Conferencing for User Agents",
Barnes, et al. Expires February 3, 2012 [Page 79]
Internet-Draft CCMP Call Flow Examples August 2011
BCP 119, RFC 4579, August 2006.
[RFC4597] Even, R. and N. Ismail, "Conferencing Scenarios",
RFC 4597, August 2006.
[RFC4582] Camarillo, G., Ott, J., and K. Drage, "The Binary Floor
Control Protocol (BFCP)", RFC 4582, November 2006.
[RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, "A Session
Initiation Protocol (SIP) Event Package for Conference
State", RFC 4575, August 2006.
[I-D.ietf-mediactrl-call-flows]
Amirante, A., Castaldi, T., Miniero, L., and S. Romano,
"Media Control Channel Framework (CFW) Call Flow
Examples", draft-ietf-mediactrl-call-flows-07 (work in
progress), July 2011.
[RFC5567] Melanchuk, T., "An Architectural Framework for Media
Server Control", RFC 5567, June 2009.
[I-D.ietf-mediactrl-mixer-control-package]
McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer
Control Package for the Media Control Channel Framework",
draft-ietf-mediactrl-mixer-control-package-14 (work in
progress), January 2011.
Authors' Addresses
Mary Barnes
Polycom
TX
USA
Email: mary.ietf.barnes@gmail.com
Lorenzo Miniero
Meetecho
Via Carlo Poerio 89/a
Napoli 80121
Italy
Email: lorenzo@meetecho.com
Barnes, et al. Expires February 3, 2012 [Page 80]
Internet-Draft CCMP Call Flow Examples August 2011
Roberta Presta
University of Napoli
Via Claudio 21
Napoli 80125
Italy
Email: roberta.presta@unina.it
Simon Pietro Romano
University of Napoli
Via Claudio 21
Napoli 80125
Italy
Email: spromano@unina.it
Barnes, et al. Expires February 3, 2012 [Page 81]