draft-ietf-xcon-examples-02.txt   draft-ietf-xcon-examples-03.txt 
XCON Working Group M. Barnes XCON Working Group M. Barnes
Internet-Draft Nortel Internet-Draft Nortel
Intended status: Informational C. Boulton Intended status: Informational L. Miniero
Expires: July 2, 2010 NS-Technologies Expires: August 21, 2010 Meetecho
L. Miniero
Meetecho
R. Presta R. Presta
S P. Romano S P. Romano
University of Napoli University of Napoli
December 29, 2009 February 17, 2010
Centralized Conferencing Manipulation Protocol (CCMP) Call Flow Examples Centralized Conferencing Manipulation Protocol (CCMP) Call Flow Examples
draft-ietf-xcon-examples-02 draft-ietf-xcon-examples-03
Abstract Abstract
This document provides detailed call flows for the scenarios This document provides detailed call flows for the scenarios
documented in the Centralized Conferencing (XCON) Framework and the documented in the Centralized Conferencing (XCON) Framework and the
XCON Scenarios. The call flows document the use of the interface XCON Scenarios. The call flows document the use of the interface
between a conference control client and a conference control server between a conference control client and a conference control server
using the Centralized Conferencing Manipulation Protocol (CCMP). The using the Centralized Conferencing Manipulation Protocol (CCMP). The
objective is to provide a base reference for both protocol objective is to provide a base reference for both protocol
researchers and developers. researchers and developers.
skipping to change at page 1, line 48 skipping to change at page 1, line 46
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 2, 2010. This Internet-Draft will expire on August 21, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Conference Creation . . . . . . . . . . . . . . . . . . . . . 5 5. Working with CCMP . . . . . . . . . . . . . . . . . . . . . . 6
5.1. Basic Conference Creation . . . . . . . . . . . . . . . . 6 5.1. CCMP and the Data Model . . . . . . . . . . . . . . . . . 6
5.2. Basic Conference Creation for a specific instance of 5.2. Using HTTP as a transport . . . . . . . . . . . . . . . . 8
Conference Information . . . . . . . . . . . . . . . . . . 11 5.3. Conference Notifications . . . . . . . . . . . . . . . . . 11
5.3. Basic Conference Creation - Cloning an existing 6. Conference Creation . . . . . . . . . . . . . . . . . . . . . 15
Conference . . . . . . . . . . . . . . . . . . . . . . . . 15 6.1. Basic Conference Creation . . . . . . . . . . . . . . . . 15
5.4. Conference Creation using Blueprints . . . . . . . . . . . 18 6.2. Conference Creation using Blueprints . . . . . . . . . . . 20
6. General Conference scenarios and examples . . . . . . . . . . 25 6.3. Conference Creation using User-Provided Conference
6.1. Conference Announcements and Recordings . . . . . . . . . 25 Information . . . . . . . . . . . . . . . . . . . . . . . 27
6.2. Monitoring for DTMF . . . . . . . . . . . . . . . . . . . 29 6.4. Cloning an Existing Conference . . . . . . . . . . . . . . 32
6.3. Adding a Party . . . . . . . . . . . . . . . . . . . . . . 30 7. Conference Users Scenarios and Examples . . . . . . . . . . . 35
6.4. Muting a Party . . . . . . . . . . . . . . . . . . . . . . 33 7.1. Adding a Party . . . . . . . . . . . . . . . . . . . . . . 36
6.5. Internal Sidebar . . . . . . . . . . . . . . . . . . . . . 37 7.2. Muting a Party . . . . . . . . . . . . . . . . . . . . . . 39
6.6. External Sidebar . . . . . . . . . . . . . . . . . . . . . 46 7.3. Conference Announcements and Recordings . . . . . . . . . 43
6.7. Floor control using sidebars . . . . . . . . . . . . . . . 52 7.4. Monitoring for DTMF . . . . . . . . . . . . . . . . . . . 47
6.8. Whispering or Private Messages . . . . . . . . . . . . . . 53 7.5. Entering a password-protected conference . . . . . . . . . 47
6.9. Observing and Coaching . . . . . . . . . . . . . . . . . . 56 8. Sidebars Scenarios and Examples . . . . . . . . . . . . . . . 49
7. Removing participants and deleting conferences . . . . . . . . 62 8.1. Internal Sidebar . . . . . . . . . . . . . . . . . . . . . 50
7.1. Removing a Party . . . . . . . . . . . . . . . . . . . . . 62 8.2. External Sidebar . . . . . . . . . . . . . . . . . . . . . 59
7.2. Deleting a Conference . . . . . . . . . . . . . . . . . . 65 8.3. Private Messages . . . . . . . . . . . . . . . . . . . . . 65
8. Additional Conference Scenarios and Examples . . . . . . . . . 67 8.4. Observing and Coaching . . . . . . . . . . . . . . . . . . 69
8.1. Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9. Removing Participants and Deleting Conferences . . . . . . . . 76
8.1.1. Basic Chat Operations . . . . . . . . . . . . . . . . 68 9.1. Removing a Party . . . . . . . . . . . . . . . . . . . . . 76
8.1.2. Advanced Operations . . . . . . . . . . . . . . . . . 72 9.2. Deleting a Conference . . . . . . . . . . . . . . . . . . 79
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 76 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80
10. Security Considerations . . . . . . . . . . . . . . . . . . . 76 11. Security Considerations . . . . . . . . . . . . . . . . . . . 80
11. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 76 12. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 81
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 77 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 83
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 78 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 83
13.1. Normative References . . . . . . . . . . . . . . . . . . . 78 14.1. Normative References . . . . . . . . . . . . . . . . . . . 83
13.2. Informative References . . . . . . . . . . . . . . . . . . 78 14.2. Informative References . . . . . . . . . . . . . . . . . . 83
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 79 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 84
1. Introduction 1. Introduction
This document provides detailed call flows for the scenarios This document provides detailed call flows for the scenarios
documented in the Framework for Centralized Conferencing (XCON documented in the Framework for Centralized Conferencing (XCON
Framework) [RFC5239] and the XCON Scenarios [RFC4597]. The XCON Framework) [RFC5239] and the XCON Scenarios [RFC4597]. The XCON
scenarios describe a broad range of use cases taking advantage of the scenarios describe a broad range of use cases taking advantage of the
advanced conferencing capabilities provided by a system realization advanced conferencing capabilities provided by a system realization
of the XCON framework. The call flows document the use of the of the XCON framework. The call flows document the use of the
interface between a conference control client and a conference interface between a conference control client and a conference
skipping to change at page 5, line 5 skipping to change at page 5, line 5
3. Terminology 3. Terminology
This document uses the same terminology as found in the referenced This document uses the same terminology as found in the referenced
documents, with the following terms and abbreviations used in the documents, with the following terms and abbreviations used in the
call flows. Also, note that the term "call flows" is used in a very 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 generic sense in this document since the media is not limited to
voice. The calls supported by the XCON framework and CCMP can voice. The calls supported by the XCON framework and CCMP can
consist of media such as text, voice and video, including multiple consist of media such as text, voice and video, including multiple
media types in a single active conference. media types in a single active conference.
Conferencing and Media Client Client (CMCC): As defined in the XCON Conference and Media Control Client (CMCC): as defined in the XCON
Framework. In the flows in this document, the CMCC is logically Framework. In the flows in this document, the CMCC is logically
equivalent to the use of UAC as the client notation in the media equivalent to the use of UAC as the client notation in the media
control call flows [I-D.ietf-mediactrl-call-flows]. 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): As defined in the XCON Framework. In Conferencing Server (ConfS): In this document, the "Conferencing
this document, the conferencing server is used interchangeably Server" term is used interchangeably with the term Application
with the term Application Server (AS) as used in the Media Control Server (AS) as used in the Media Control Architectural Framework
Architectural Framework [RFC5567]. However, these need not be the [RFC5567]. A Conferencing Server is intended to be able to act as
same entities in an implementation. a Conference Control Server, as defined in the XCON framework,
i.e. it is able to handle CCMP requests and issue CCMP responses.
Media Server (MS): As defined in the Media Control Architectural Media Server (MS): as defined in the Media Control Architectural
Framework [RFC5567]. Framework [RFC5567].
4. Overview 4. Overview
This document provides a sampling of detailed call flows that can be This document provides a sampling of detailed call flows that can be
implemented based on a system realization of [RFC5239] and implemented based on a system realization of the XCON framework
implementation of [I-D.ietf-xcon-ccmp]. This is intended to be a [RFC5239] and implementation of CCMP [I-D.ietf-xcon-ccmp]. This is
simple guide on the use of the conference control protocol between intended to be a simple guide for the use of the Conference Control
the Conference Server and the Conference Control Client. The Protocol between the Conferencing Server and the Conference Control
objective is to provide an informational base reference for protocol Client. The objective is to provide an informational base reference
developers, software developers and researchers. for protocol developers, software developers and researchers.
This document focuses on the interaction between the Conference (and This document focuses on the interaction between the Conference (and
Media) Control Client and the Conferencing system, specifically the Media) Control Client and the Conferencing System, specifically the
Conference Server. The scenarios are based on those described in the Conferencing Server. The scenarios are based on those described in
XCON framework, many of which are based on the advanced conferencing the XCON framework, many of which are based on the advanced
capabilities described in the XCON scenarios. Additional scenarios conferencing capabilities described in the XCON scenarios.
have been added to provide examples of other real life scenarios that Additional scenarios have been added to provide examples of other
are anticipated to be supported by the framework. With the exception real life scenarios that are anticipated to be supported by the
of an initial example with media control messaging, the examples do framework. With the exception of an initial example with media
not include the details for the media control control messaging, the examples do not include the details for the
[I-D.ietf-mediactrl-mixer-control-package], call signaling or binary media control [I-D.ietf-mediactrl-mixer-control-package], call
floor control [RFC4582] protocols. This document references the signaling or binary floor control [RFC4582] protocols. This document
scenarios in the Media Control call flows references the scenarios in the Media Control call flows
[I-D.ietf-mediactrl-call-flows], SIP Call Control Conferencing [I-D.ietf-mediactrl-call-flows], SIP Call Control Conferencing
[RFC4579] and binary floor control protocol documents. [RFC4579] and binary floor control protocol documents.
5. Conference Creation The rest of this document is organized as follows. Section 5
presents an overview on CCMP, together with some implementation-
related details and related matters like HTTP transport and
notifications. Section 6 presents the reader with examples showing
the different approaches CCMP provides to create a new conference.
Section 7 more generally addresses the different user-related
manipulations that can be achieved by means of CCMP, by presenting a
number of interesting scenarios. Section 8 addresses the several
scenarios that may involve the use of sidebars. Section 9 shows how
CCMP can be used to remove conferences and users from the system.
Finally, Section 11 provides a few details for what concerns the
Security Considerations when it comes to implementing CCMP.
This section provides the details associated with the various ways in 5. Working with CCMP
which a conference can be created using CCMP and the XCON framework
This section aims at being a brief introduction to how the
Centralized Conferencing Manipulation Protocol (CCMP)
[I-D.ietf-xcon-ccmp] works and how it can be transported across a
network. Some words will be spent to describe a typical CCMP
interaction, by focusing on relevant aspects of the client-server
communication. Please notice that this section is by no means to be
considered as a replacement for the CCMP document, which remains a
mandatory read before approaching the following sections. It is just
conceived to help the reader take the first steps toward the actual
protocol interactions.
First of all, some lines will be devoted to the protocol by itself in
Section 5.1, together with some recommendations from an
implementation point of view. In Section 5.2, instead, an effective
CCMP interaction will be presented by exploiting HTTP as a transport.
Finally, a few words will be spent on notifications in Section 5.3.
Once done with these preliminary steps, some actual flows will be
presented and described in detail in the sections to follow.
5.1. CCMP and the Data Model
CCMP is an XML-based protocol. It has been designed as a request/
response protocol. Besides, it is completely stateless, which means
implementations can safely handle transactions indipendently from
each other.
The protocol allows for the manipulation of conference objects and
related users. By manipulation it is implied, as the document
specifies, that a Conferencing Client (briefly CMCC in all the
following sections) can 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.
It is worthwile to note that, while CCMP acts as the means to
manipulate conference objects, its specification does not define
these objects as well. In fact, a separate document has been written
to specify 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,
according to the request type and the related operation, carries
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.
Of course, there are cases where a mandatory element in the Data
Model cannot be assigned in a conference object by a CCMP user. For
instance, 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. Anyway,
the CMCC has no way to a priori know what the entity will be like,
considering it will only be generated by the ConfS after the request.
For scenarios like this one, the CCMP specification envisages the use
of a dedicated placeholder wildcard to make the conference object
compliant with the Data Model: the wildcard would then be replaced by
the ConfS with the right value.
5.2. Using HTTP as a transport
[I-D.ietf-xcon-ccmp] presents several ways by which CCMP requests and
responses can be transported from a client to a server and viceversa.
Nevertheless, more focus is given on HTTP as a solution for this
transport matter, and a whole chapter is devoted in the document to
how HTTP can be used for it. This document is agnostic with respect
to the transport in use: this means that all the call flows herein
presented will just show the CCMP interactions, without talking about
how the messages could have gone across the network. Nevertheless,
the following lines will provide a brief explanation, from a more
practical point of view, of how HTTP might be exploited to carry CCMP
messages.
In case HTTP is used as a transport, the specification is very clear
with respect to how the interaction has to occur. Specifically, a
CMCC is assumed to send his request as part of an HTTP POST message,
and the Server would reply by means of an HTTP 200 message. In both
cases, the HTTP messages would have the CCMP messages as payload,
which would be reflected in the Content-Type message. Figure 1
presents a ladder diagram of such interaction, which is followed by a
dump of the exchanged HTTP messages for further analysis:
CMCC ConfS
| |
| 1. HTTP 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 HTTP
As it can be seen in 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 HTTP 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 'success' response code) has
been carried as payload of an HTTP 200 OK (message 2.). As before,
the 'Content-Type' header has been correctly set (application/
ccmp+xml).
1. CMCC -> ConfS (HTTP POST, CCMP request)
------------------------------------------
POST /Xcon/Ccmp HTTP/1.1
Content-Length: 657
Content-Type: application/ccmp+xml
Host: example.com:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.0.1 (java 1.5)
<?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: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>success</response-code>
<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>
<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>
Just for the sake of completeness, a few words will be spent about
the occurred CCMP interaction as well. In fact, despite the
simplicity of the request, this flow already 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 (in this case Alice, since the
'confUserID' has been set to '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 into. 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. As it will be clearer in the
following sections, 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, together with an element
addressing the result of the client's request (response-
code=success).
This section won't delve in additional details for what concerns this
interaction. It is just worth noticing 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 6.2.
5.3. Conference Notifications
[RFC5239] presents several different possible protocol interactions
between a conferencing server and a conferencing client. One of
those interactions is generically called "Notification Protocol",
implementing a notification service for all clients interested in
being informed by the server whenever something relevant happens in a
conference. While at first glance it may appear that such a
functionality should belong to a conference control protocol, such
feature has been specifically marked as out of scope in CCMP. As a
consequence, CCMP has been conceived as a request/answer protocol,
and in fact no ways to provide notifications to clients have been
introduced in the specification.
Nevertheless, the CCMP document by itself has a brief section
presenting some typical ways notifications might be managed. This
example document does not foster one rather than another, and all the
flows will always generically present a notification being involved,
when it seems appropriate, but not providing any info on how the
notification itself has been sent to the interested clients. Anyway,
this section will briefly introduce some of the most typical ways a
notification service could be implemented and integrated with the
functionality provided by CCMP. It is by no means to be intended as
a complete list of solutions: the aim of this section is to provide
an overview of some of the possible solutions, together with
indications on how they may be integrated into a CCMP-based platform.
The first approach that comes to mind is of course the XCON Event
Package [I-D.ietf-xcon-event-package]. This specification extends
the SIP Event Package for Conference State [RFC4575] and allows for
the notification of conference notifications by means of the NOTIFY/
SUBSCRIBE mechanisms of SIP. Specifically, any SIP client who
subscribed for notifications related to a specific conference would
receive notifications via SIP describing all the changes to the
document. An example ladder diagram is presented in Figure 2: in
this figure, we assume a CMCC has updated a conference object, and
the update is notified to a previously subscribed SIP client.
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
While simple and effective, this solution has a drawback: it assumes
that all clients to be notified have a SIP stack. In fact, the
approach relies on the SIP SUBSCRIBE/NOTIFY mechanism. This means
that a client without a SIP stack would be unable to receive
notifications, in case no other means were available. Of course this
is not a desired situation in a framework as XCON which has been
conceived as being protocol-agnostic.
Considering CCMP is going to be probably most often deployed on HTTP,
another way to achieve notifications might be by exploiting some sort
of HTTP callbacks, as suggested in the CCMP specification itself.
This would allow to overcome the previous limitation, since both the
CMCC and the ConfS would already have an HTTP stack to make use of.
Using this approach, an interested web client might provide the
Conferencing System with an URL to contact whenever updates are
available: the update could be part of the notification message
itself, or it could be only implicitly referenced by the
notification. At the same time, alternative notification means could
be exploited, e.g. by taking advantage of functionality provided by
other protocols as XMPP. Figure 3 shows an example of different
subscriptions which accordingly trigger notifications after the same
relevant event happens.
CMCC ConfS Sub1 Sub2
| | | |
| | 1. Register callback | |
| |<--------------------------| |
| Handle +--| | |
| new HTTP | | | |
| subscription +->| 2. Acknlowledge | |
| |-------------------------->| |
| | | |
| | 3. XMPP subscription |
| |<---------------------------------------|
| Handle +--| | |
| new XMPP | | | |
| subscription +->| 4. XMPP confirm subscription |
| |--------------------------------------->|
| | | |
. . . .
. . . .
| | | |
| 5. CCMP (add user) | | |
|-------------------->| | |
| |--+ Add user | |
| | | to conf. | |
| |<-+ object | |
| 6. CCMP (success) | | |
|<--------------------| | |
| | 7. HTTP POST (changes) | |
| |-------------------------->| |
| | 8. HTTP 200 OK | |
| |<--------------------------| |
| | | |
| | 9. XMPP notification | |
| |--------------------------------------->|
| | | |
. . . .
. . . .
Figure 3: Alternative means for notifications
That said, there are actually many other ways to achieve
notifications in a conferencing system. A conferencing system may
rely on several other solutions than the ones presented as periodic
checks of a well known URL by interested clients, long polls, BOSH-
based communications, Atom/RSS feeds and the like.
6. Conference Creation
This section starts the sequence of call flows of typical XCON-
related scenarios provided in this document. Specifically, it
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 constructs. As previously mentioned the details of the media
control, call signaling and floor control protocols, where control, call signaling and floor control protocols, where
applicable, are annotated in the flows without showing all the applicable, are annotated in the flows without showing all the
details. However, for clarification purposes, the first example details. This also applies to CCMP, whose flows are related to the
Section 5.1 provides the details of the media control messaging along protocol alone, hiding any detail concerning the transport that may
with an example of the standard annotation used throughout the have been used (e.g. HTTP). However, for clarification purposes,
remainder of this document. In subsequent flows, only this the first example Section 6.1 provides the details of the media
annotation (identified by lower case letters) is included and the control messaging along with an example of the standard annotation
reader is encouraged to refer to the call flows in the relevant used throughout the remainder of this document. In subsequent flows,
documents for details for the other protocols. The annotations for only this annotation (identified by lower case letters) is included
the call signaling are on the left side of the conferencing server and the reader is encouraged to refer to the call flows in the
vertical bar and those for the media control messaging are on the relevant documents for details about the other protocols. The
right side. 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 6.1. Basic Conference Creation
The simplest manner in which a conference can be created is The simplest manner in which a conference can be created is
accomplished by the client sending a "confRequest" message with the accomplished by the client sending a "confRequest" message with the
"create" operation as the only parameter to the conference server, "create" operation as the only parameter to the conference server,
together with the "confUserID" associated with the requesting client together with the "confUserID" associated with the requesting client
itself. This results in the creation of a default conference, with itself. This results in the creation of a default conference, with
an XCON-URI in the form of the "confObjID" parameter, the XCON-UserID an XCON-URI in the form of the "confObjID" parameter, the XCON-USERID
in the form of the "confUserID" parameter (the same already present in the form of the "confUserID" parameter (the same already present
in the request) and the data for the conference object in the in the request) and the data for the conference object in the
"confInfo" parameter all returned in the "confResponse" message. "confInfo" parameter all returned in the "confResponse" message.
According to the implementation of the framework, this example may According to the implementation of the framework, this example may
also add the user that invoked the conference upon creation to the also add the user that invoked the conference upon creation to the
conference object (e.g., "method" attribute in the "target" element conference object (e.g., "method" attribute in the "target" element
of "allowed-users-list" may be set to "dial out" for this client of "allowed-users-list" may be set to "dial out" for this client
based on the particular conferencing systems default). This is based on the particular conferencing systems default). This is
exactly the case depicted in the figure, which is presented to enrich exactly the case depicted in the figure, which is presented to enrich
the scenario. Note that, depending upon the conferencing system, the scenario.
this default conference could be specific to the client requesting
the conference and thus may be different for the initiator than other
participants (e.g., IVR interactions in this case which are not
shown).
The specific data for the conference object is returned in the The specific data for the conference object are returned in the
"confResponse" message in the "confInfo" parameter. This allows the "confResponse" message in the "confInfo" parameter. This allows the
client (with the appropriate authorization) to manipulate this data client (with the appropriate authorization) to manipulate these data
and add additional participants to the conference, as well as change and add additional participants to the conference, as well as change
the data during the conference. In addition, the client may the data during the conference. In addition, the client may
distribute the conferencing information to other participants distribute the conferencing information to other participants
allowing them to join, the details of which are provided in allowing them to join, the details of which are provided in
additional flows. Please notice that, according to CCMP additional flows. Please notice that, according to the CCMP
specification, the restitution of the new conference data in the specification, the return of the new conference data in the
"confInfo" parameter is not mandatory: if the "confInfo" parameter of "confInfo" parameter is not mandatory: if the "confInfo" parameter of
the successful confResponse/create is void, a following confRequest/ the successful confResponse/create is void, a following confRequest/
retrieve of the returned "confObjID" can be triggered to provide the retrieve of the returned "confObjID" can be triggered to provide the
requesting client with the detailed conference description. requesting client with the detailed conference description.
Clients that are not XCON-aware may join the conference using a Clients that are not XCON-aware can join the conference using a
specific signaling interface such as SIP [RFC3261], using the specific signaling interface such as SIP [RFC3261] or other supported
signaling interface to the conference focus as described in signaling protocols (being XCON agnostic with respect to them), using
the signaling interface to the conference focus as described in
[RFC4579]. However, these details are not shown in the message [RFC4579]. However, these details are not shown in the message
flows. The message flows in this document identity the point in the flows. The message flows in this document identify the point in the
message flows at which this signaling occurs via the lower case message flows at which this signaling occurs via the lower case
letter items (i.e., (a)...(x)) along with the appropriate text for letter items (i.e., (a)...(x)) along with the appropriate text for
the processing done by the conferencing server. the processing done by the conferencing server.
CMCC1 CMCC2 CMCCx CONFS MS As anticipated at the beginning of this section, this example also
shows how the conferencing system may make use of other standard
components to make available its 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. So, just to
provide the reader with some insight on these interactions, the
conferencing system 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).
CMCC1 CMCC2 CMCCx ConfS MS
| | | | | | | | | |
|(1)confRequest(confUserID, create) | | |(1)confRequest(confUserID, create) | |
|-------------------------------------->| | |-------------------------------------->| |
| | (a)Create +---| | | | (a)Create +---| |
| | |Conf | | | | | |Conf | | |
| | |Object | | | | | |Object | | |
| | |& IDs +-->| | | | |& IDs +-->| |
| | | | A1. CONTROL | | | | | A1. CONTROL |
| | | |+++++++++++>>| | | | |+++++++++++>>|
| | | |(create conf)|--+ (b) | | | |(create conf)|--+ (b)
skipping to change at page 9, line 4 skipping to change at page 18, line 4
| | | | | | | | | |
|<<#################################################>>| |<<#################################################>>|
| Now the CMCC1 is mixed in the conference | | Now the CMCC1 is mixed in the conference |
|<<#################################################>>| |<<#################################################>>|
| | | | | | | | | |
|******CMCC1 may then manipulate conference data *****| |******CMCC1 may then manipulate conference data *****|
|****** and add addt'l users, etc. | *****| |****** and add addt'l users, etc. | *****|
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
Figure 1: Create Basic Conference - Complete flow Figure 4: Create Basic Conference - Complete flow
"Alice" "Bob" "Alice" "Bob"
CMCC1 CMCC2 CMCCx CONFS CMCC1 CMCC2 CMCCx ConfS
| | | | | | | |
|(1)confRequest(confUserID, create) | |(1)confRequest(confUserID, create) |
|-------------------------------------->| |-------------------------------------->|
| | | | | | | |
| | (a)Create +---| | | (a)Create +---|
| | |Conf | | | | |Conf | |
| | |Object | | | | |Object | |
| | |& IDs +-->| | | |& IDs +-->|
| | | |--+ (b) MS | | | |--+ (b) MS
| | | | | creates | | | | | creates
skipping to change at page 9, line 47 skipping to change at page 18, line 47
| CMCC1 is mixed in the conference | | CMCC1 is mixed in the conference |
|<<###################################>>| |<<###################################>>|
| | | | | | | |
|**CMCC1 then manipulates conference****| |**CMCC1 then manipulates conference****|
|** data and add addt'l users, etc. ***| |** data and add addt'l users, etc. ***|
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
- -
Figure 2: Create Basic Conference - Annotated Flow Figure 5: Create Basic Conference - Annotated Flow
1. confRequest/create message 1. confRequest/create message (Alice creates a default conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest <ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type"> xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<operation>create</operation> <operation>create</operation>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. confResponse/create message 2. confResponse/create message ("success", created conference
object returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse <ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type"> xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
skipping to change at page 11, line 16 skipping to change at page 20, line 17
<info:type>audio</info:type> <info:type>audio</info:type>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
<info:conference-state> <info:conference-state>
<active>false</active> <active>false</active>
</info:conference-state> </info:conference-state>
</info:conference-description> </info:conference-description>
<info:users> <info:users>
<xcon:join-handling>allow</xcon:join-handling> <xcon:join-handling>allow</xcon:join-handling>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target uri="xcon-userid:Alice@example.com" <xcon:target uri="xcon-userid:Alice@example.com" \
method="dial-out"/> method="dial-out"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</confInfo> </confInfo>
</ccmp:confResponse> </ccmp:confResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 3: Create Basic Conference (Annotated) Detailed Messaging Figure 6: Create Basic Conference (Annotated) Detailed Messaging
5.2. Basic Conference Creation for a specific instance of Conference 6.2. Conference Creation using Blueprints
Information
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 like. Anyway, the XCON framework
(and CCMP as a consequence) allows for the exploitation of templates.
These templates are called "conference blueprints", and are basically
conference objects with pre-defined settings except for the actual
identifiers. This means that a client might get one of these
blueprints, choose the one that more fits his needs, and use the
chosen blueprint to create a new conference.
This section addresses exactly this scenario, and Figure 7 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 which both audio and video
are available, so she exploits the filter mechanism envisioned 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, success, |
| blueprintsInfo) |
|<------------------------------|
| |
|--+ |
| | choose preferred |
| | blueprint from the |
| | list (blueprintName) |
|<-+ |
| |
| (3) blueprintRequest |
| (confUserID,confObjID, |
| retrieve) |
|------------------------------>|
| |
| 4) blueprintResponse |
| (confUserID,confObjID,|
| retrieve,confInfo) |
|<------------------------------|
| |
| (5) confRequest(confUserID, |
| confObjID,create) |
|------------------------------>|
| |
| (a)Create +---|
| Conf | |
| Object | |
| & IDs +-->|
| |--+ (b) MS
| | | creates
| | | conf and
| |<-+ its ID
| | (confid=Y)
|(6) confResponse |
| (confUserID, confObjID*, |
| create, success) |
|<------------------------------|
| |
| |
| |
. .
. .
Figure 7: 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 authenticate Alice and then
ensure 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.
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)
<?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="xcon: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)
<?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>success</response-code>
<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 ("success", "VideoRoom"
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-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>retrieve</operation>
<response-code>success</response-code>
<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="audioLabel"></xcon:floor>
<xcon:floor id="videoLabel"></xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</blueprintInfo>
</ccmp:blueprintResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
5. confRequest/create message (Alice clones the "AudioRoom" 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-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 ("success", 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>success</response-code>
<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
</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="11"/>
<xcon:floor id="12"/>
</xcon:conference-floor-policy>
</xcon:floor-information>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 8: Create Conference (Blueprint) Detailed Messaging
6.3. Conference Creation using User-Provided Conference Information
A conference can also be created by the client sending a A conference can also be created by the client sending a
"confRequest" message with the "create" operation, along with the "confRequest" message with the "create" operation, along with the
desired data in the form of the "confInfo" parameter for the desired data in the form of the "confInfo" parameter for the
conference to be created. The request also includes the "confUserID" conference to be created. The request also includes the "confUserID"
of the requesting entity. If the conferencing system can support of the requesting entity.
This approach allows for a client (in this example Alice) to
completely describe how the conference object should look like,
without just relying on defaults or blueprints: i.e. which media
should be available, whish should be the topic, the users allowed to
join, any scheduling-related information and so on. This can be
done, as anticipated, by providing in the creation request a full
conference object for the server to parse.
This "confInfo" parameter must comply of course with the Data Model
specification. This means that its "entity" attribute is mandatory,
and cannot be missing in the document. Nevertheless, considering in
this example the client is actually requesting the creation of a new
conference, which doesn't exist yet, this "entity" attribute cannot
be set to a valid value. This is related to an issue already
anticipated in Section 5.1. To cope with this, the CCMP protocol
fosters the use of a wildcard placeholder: this placeholder
("xcon:AUTO_GENERATE_1@example.com" in the example) has the only aim
of making the "confInfo" element compliant with the Data Model, and
would subsequently be replaced by the conferencing system with the
actual value. This means that, as soon as the conferencing system
actually creates the conference, a valid "entity" value is created
for it as well, which would take the place of the wildcard when
completing the actual conference object provided by the client.
To give a flavour 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 from a
certain start time to a certain stop time and has to be replicated
weekly.
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 that specific type of conference (capabilities, etc.), then the
request results in the creation of a conference. In this success request results in the creation of a conference. We assume the
case, an XCON-URI in the form of the "confObjID" parameter and the request has been successful, and as a consequence XCON-URI in the
XCON-UserID in the form of the "confUserID" parameter (again, the form of the "confObjID" parameter and the XCON-USERID in the form of
same as the requesting entity) are returned in the "confResponse" the "confUserID" parameter (again, the same as the requesting entity)
message. In this example, we choose not to return the created are returned in the "confResponse" message.
conference object in the successful "confResponse" in the "confInfo"
parameter.
This example also activates the conference upon creation (i.e., In this example, we choose not to return the created conference
"method" attribute is set to "dial out" for this client based on the object in the successful "confResponse" in the "confInfo" parameter.
particular conferencing systems default). Just as before, this is Nevertheless, Alice could still retrieve the actual conference object
not to be considered mandatory, since it depends on the by issuing a "confRequest" with a "retrieve" operation on the
implementation choices of the framework. Note that, depending upon returned "confObjID". Such a request would show how, as we
the conferencing system, this default conference could be specific to anticipated at the beginning of this section, the "entity" attribute
the client requesting the conference and thus may be different for of the conference object in "confInfo" is replaced with the actual
the initiator than other participants (e.g., IVR interactions in this information (i.e. "xcon:6845432@example.com").
case which are not shown).
"Alice" "Bob" "Carol" CONFS Just for the sake of completeness and to provide the reader with some
insight about how the CCMP conferencing server might interact with
other related components, this example also assumes that the
conference is activated upon creation: i.e., the "method" attribute
is set to "dial out" for this client based on the particular
conferencing systems default. This results (as shown in the ladder
diagram) in Alice, Bob and Carol being called by the conferencing
system. Just as before, this is not to be considered mandatory,
since it depends on the implementation choices of the framework.
Alice Bob Carol ConfS
| | | | | | | |
| | | | | | | |
|(1)confRequest(confUserID, | | |(1)confRequest(confUserID, | |
| create, confInfo) | | | create, confInfo) | |
| | | | | | | |
|-------------------------------------->| |-------------------------------------->|
| | | | | | | |
| | (a)Create +---| | | (a)Create +---|
| | |Conf | | | | |Conf | |
| | |Object | | | | |Object | |
skipping to change at page 13, line 35 skipping to change at page 30, line 11
| | | | | | | |
| | | | | | | |
| | | | | | | |
|<***All parties connected to conf Y***>| |<***All parties connected to conf Y***>|
| | | | | | | |
| | | | | | | |
" " " " " " " "
" " " " " " " "
" " " " " " " "
Figure 4: Create Basic Conference from user provided conference-info Figure 9: Create Basic Conference from user provided conference-info
1. confRequest/create message 1. confRequest/create message (Alice proposes a conference object
to be created - direct creation)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest <ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type"> xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<operation>create</operation> <operation>create</operation>
<ccmp:confRequest> <ccmp:confRequest>
<confInfo> <confInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
Dial-out conference initiated by Alice Dial-out conference initiated by Alice
</info:display-text> </info:display-text>
<info:maximum-user-count>10</info:maximum-user-count> <info:maximum-user-count>10</info:maximum-user-count>
<info:available-media> <info:available-media>
<info:entry> <info:entry label="AUTO_GENERATE_2">
<info:type>audio</info:type> <info:type>audio</info:type>
</info:entry> </info:entry>
</info:available-media> </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:conference-description>
<info:users> <info:users>
<xcon:join-handling>allow</xcon:join-handling> <xcon:join-handling>allow</xcon:join-handling>
<xcon: allowed-users-list> <xcon: allowed-users-list>
<xcon:target uri="sip:alice@example.com" <xcon:target uri="xcon-userid:alice@example.com"
method="dial-out"/> method="dial-out"/>
<xcon:target uri="sip:bob83@example.com" <xcon:target uri="sip:bob83@example.com"
method="dial-out"/> method="dial-out"/>
<xcon:target uri="sip:carol@example.com" <xcon:target uri="sip:carol@example.com"
method="dial-out"/> method="dial-out"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</confInfo> </confInfo>
</ccmp:confRequest> </ccmp:confRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. confResponse message 2. confResponse/create message ("success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse <ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type"> xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID> <confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<response-code>success<response-code> <response-code>success<response-code>
<version>1</version> <version>1</version>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 5: Create Basic Conference Detailed Messaging
5.3. Basic Conference Creation - Cloning an existing Conference Figure 10: Create Basic Conference Detailed Messaging
6.4. Cloning an Existing Conference
A client can also create another conference by cloning an existing A client can also create another conference by cloning an existing
conference, such as an active conference or conference reservation. 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.
In this example, the client sends a "confRequest" message with the In this example, the client sends a "confRequest" message with the
"create" operation, along with the "confUserID" and a specific "create" operation, along with the "confUserID" and a specific
"confObjID", from which a new conference is to be created by cloning "confObjID", from which a new conference is to be created by cloning
an existing conference. an existing conference.
An example of how a client can create a conference based on a An example of how a client can create a conference based on a
blueprint is provided in Section 5.4. The manner by which a client blueprint is provided in Section 6.2. The manner by which a client
in this example might learn about a conference reservation or active in this example might learn about a conference reservation or active
conferences is similar to the first step in the blueprint example, conferences is similar to the first step in the blueprint example,
with the exception of specifying querying for different types of with the exception of specifying querying for different types of
conference objects supported by the specific conferencing system. conference objects supported by the specific conferencing system.
For example, in this example, the client clones a conference For example, in this example, the client clones a conference
reservation (i.e., an inactive conference). reservation (i.e., an inactive conference).
If the conferencing system can support a new instance of the specific If the conferencing system can support a new instance of the specific
type of conference(capabilities, etc.), then the request results in 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 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 value in the "confObjID" parameter to reflect the newly cloned
conference object returned in the "confResponse" message. conference object returned in the "confResponse" message.
"Alice" ConfS Alice ConfS
| | | |
|(1)confRequest(confUserID, | |(1)confRequest(confUserID, |
| confObjID, create) | | confObjID, create) |
|------------------------------>| |------------------------------>|
| (a)Create +---| | (a)Create +---|
| Conf | | | Conf | |
| Object | | | Object | |
| & IDs +-->| | & IDs +-->|
| |--+ (b) MS | |--+ (b) MS
| | | creates | | | creates
skipping to change at page 16, line 28 skipping to change at page 33, line 28
| | (confid=Y) | | (confid=Y)
| | | |
|(2)confResponse(confUserID, | |(2)confResponse(confUserID, |
| confObjID*,create, | | confObjID*,create, |
| success, version, | | success, version, |
| confInfo) | | confInfo) |
| | | |
|<------------------------------| |<------------------------------|
| | | |
Figure 6: Create Basic Conference - Clone Figure 11: Create Basic Conference - Clone
1. "Alice" sends a confRequest message to clone a conference based 1. Alice, a conferencing system client, sends a confRequest message
on an existing conference reservation. "Alice" indicates this to clone a conference based on an existing conference
conference should be cloned from the specified parent conference reservation. Alice indicates this conference should be cloned
represented by the "confObjID" in the request. from the specified parent conference represented by the
"confObjID" in the request.
2. Upon receipt of the confRequest message containing a "create" 2. Upon receipt of the confRequest message containing a "create"
operation and "confObjID", the conferencing system ensures that operation and "confObjID", the conferencing system ensures that
the "confObjID" received is valid. The conferencing system the "confObjID" received is valid. The conferencing system
determines the appropriate read/write access of any users to be determines the appropriate read/write access of any users to be
added to a conference based on this "confObjID" (using added to a conference based on this "confObjID" (using
membership, roles, etc.). The conferencing system uses the membership, roles, etc.). The conferencing system uses the
received "confObjID" to clone a conference reservation. The received "confObjID" to clone a conference reservation. The
conferencing system also reserves or allocates a new "confObjID" conferencing system also reserves or allocates a new "confObjID"
(called "confObjID*" in Figure 6) to be used for the cloned (called "confObjID*" in Figure 11) to be used for the cloned
conference object. This new identifier is of course different conference object. This new identifier is of course different
from the one associated with the conference to be cloned, since from the one associated with the conference to be cloned, since
it represents a different conference object. Any subsequent it represents a different conference object. Any subsequent
protocol requests from any of the members of the conference must protocol requests from any of the members of the conference must
address this new identifier. The conferencing system maintains use this new identifier. The conferencing system maintains the
the mapping between this conference ID and the parent conference mapping between this conference ID and the parent conference
object ID associated with the reservation through the conference object ID associated with the reservation through the conference
instance, and this mapping is explicitly addressed through the instance, and this mapping is explicitly addressed through the
"cloning-parent" element of the "conference-description" in the "cloning-parent" element of the "conference-description" in the
new conference object. new conference object.
1. confRequest/create message 1. confRequest/create message
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
skipping to change at page 17, line 25 skipping to change at page 34, line 26
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest <ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type"> xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID> <confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. confResponse/create message 2. confResponse/create message ("success", created conference
object returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse <ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type"> xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
skipping to change at page 18, line 36 skipping to change at page 35, line 39
confirm</xcon:floor-request-handling> confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy> <xcon:conference-floor-policy>
<xcon:floor id="11"/> <xcon:floor id="11"/>
</xcon:conference-floor-policy> </xcon:conference-floor-policy>
</xcon:floor-information> </xcon:floor-information>
</confInfo> </confInfo>
</ccmp:confResponse> </ccmp:confResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 7: Create Basic Conference (Clone) Detailed Messaging Figure 12: Create Basic Conference (Clone) Detailed Messaging
5.4. Conference Creation using Blueprints
Figure 8 provides an example of one client "Alice" determining the
conference blueprints available for a particular conferencing system
and creating a conference based on the desired blueprint.
CMCC "Alice" ConfS
| |
| (1) blueprintsRequest |
| (confUserID) |
|------------------------------>|
| |
| (2) blueprintsResponse |
| (confUserID, success, |
| blueprintsInfo) |
|<------------------------------|
| |
|--+ |
| | choose preferred |
| | blueprint from the |
| | list (blueprintName) |
|<-+ |
| |
| (3) blueprintRequest |
| (confUserID,confObjID, |
| retrieve) |
|------------------------------>|
| |
| 4) blueprintResponse |
| (confUserID,confObjID,|
| retrieve,confInfo) |
|<------------------------------|
| |
| (5) confRequest(confUserID, |
| confObjID,create) |
|------------------------------>|
| |
| (a)Create +---|
| Conf | |
| Object | |
| & IDs +-->|
| |--+ (b) MS
| | | creates
| | | conf and
| |<-+ its ID
| | (confid=Y)
|(6) confResponse |
| (create, success, |
| confObjID*, confUserID) |
|<------------------------------|
| |
| |
| |
. .
. .
Figure 8: Client Creation of Conference using Blueprints
1. "Alice" first sends a "blueprintsRequest" message to the
conferencing system identified by the conference server discovery
process. Upon receipt of the "blueprintsRequest", the
conferencing system would first authenticate "Alice" and then
ensure that "Alice" has the appropriate authority based on system
policies to receive any blueprints supported by that system.
2. Any blueprint that "Alice" is authorized to use are returned in a
"blueprintsResponse" message in the "blueprintsInfo" attribute.
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" then sends a "confRequest" with a "create" operation to
the conferencing system to create a conference reservation,
including the appropriate "blueprintName" and associated
"confObjID".
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 "confObjID" (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
<?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="xcon:ccmp-blueprints-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
</ccmpRequest>
</ccmp:ccmpRequest>
2. blueprintsResponse message
<?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>success</response-code>
<ccmp:blueprintsResponse>
<blueprintsInfo>
<info:entry>
<info:uri>xcon:AudioRoom@example.com</info:uri>
<info:display-text>AudioRoom</info:display-text>
<info:purpose>Simple Room:
conference room with public access,
where only audio is available, more users
can talk at the same time
and the requests for the AudioFloor
are automatically accepted.
</info:purpose>
</info:entry>
<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,
8 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:AudioConference1@example.com</info:uri>
<info:display-text>AudioConference1</info:display-text>
<info:purpose>Public Audio Conference:
conference with public access,
where only audio is available,
only one user can talk at the same time,
and the requests for the AudioFloor MUST
be accepted by a Chair.
</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>
<info:entry>
<info:uri>xcon:AudioConference2@example.com</info:uri>
<info:display-text>AudioConference2</info:display-text>
<info:purpose>Basic Audio Conference:
conference with private access,
where only audio is available,
only one user can talk at the same time,
and the requests for the AudioFloor MUST
be accepted by a Chair.
</info:purpose>
</info:entry>
</blueprintsInfo>
</ccmp:blueprintsResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. blueprintRequest/retrieve message
<?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:AudioRoom@example.com</confObjID>
<operation>retrieve</operation>
<ccmp:blueprintRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
4. blueprintResponse/retrieve message
<?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>success</response-code>
<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>
<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>
5. confRequest/create message
<?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:AudioRoom@example.com</confObjID>
<operation>create</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
6. confResponse/create message
<?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>success</response-code>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
New conference by Alice cloned from AudioRoom
</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
</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: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="11"/>
</xcon:conference-floor-policy>
</xcon:floor-information>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 9: Create Conference (Blueprint) Detailed Messaging
6. General Conference scenarios and examples
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. Conference Announcements and Recordings
In this example, as shown in Figure 10 "Alice" is joining "Bob"'s
conference that requires that she first enter a pass code. After
successfully entering the passcode, 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].
CCMC "Alice" ConfS MS
| | |
|(1)userRequest(confUserID, | |
| 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, | |
| success, version) | |
|<---------------------------| |
| | |
Figure 10: Recording and Announcements
1. Upon receipt of the userRequest from "Alice" to be added to
"Bob's" conference (i.e., an "update" operation on "Bob's"
conference object), the conferencing system determines that a
password is required for this specific conference. Thus an
announcement asking "Alice" to enter the password is provided to
"Alice". This may be achieved by means of typical IVR
fucntionality. 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 is created for "Alice". Based upon the addressing
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 for
"Alice". 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.
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>
<userInfo entity="xcon-userid:Alice@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 message ("passwordRequired")
<?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>
<ccmp:response-code>passwordRequired</ccmp:response-code>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
3. userRequest/create message (Alice provides 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>
<password>8601</password>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Alice@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>
4. userResponse/create message ("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-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>success</response-code>
<version>10</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 11: Announcement Messaging Details
6.2. Monitoring for DTMF
The conferencing system also needs the capability to monitor for DTMF 7. Conference Users Scenarios and Examples
from each individual participant. This would typically be used to
enter the identifier and/or access code for joining a specific
conference.
An example of DTMF monitoring, within the context of the framework Section 6 showed examples describing the several different ways a
elements, is shown in Figure 10. A typical way for the conferencing conference might be created using CCMP. This section instead focuses
system to be aware of all the DTMF interactions within the context of on user-related scenarios, i.e. typical scenarios that may occur
conferences it is responsible for, is making use of the MEDIACTRL during the lifetime of a conference, like adding new users and
architecture for what regards media manipulation. Examples in that handling their media. The following scenarios are based on those
sense (specifically for what concerns DTMF interception in conference documented in the XCON framework. The examples assume that a
instances) are presented in [I-D.ietf-mediactrl-call-flows]. conference has already been correctly established, with media, if
applicable, per one of the examples in Section 6.
6.3. Adding a Party 7.1. Adding a Party
In this example, "Alice" wants to add "Bob" to an established In this example, Alice wants to add Bob to an established conference.
conference. In the following example we assume "Bob" is a new user In the following example we assume Bob is a new user of the system,
to the system, which means "Alice" also needs to provide details which means Alice also needs to provide some details about him. In
about him. In fact, the case of "Bob" already present as a user in fact, the case of Bob already present as a user in the conferencing
the conferencing system is much easier to address, and will be system is much easier to address, and will be discussed later on.
discussed later on.
"Alice" "Bob" "Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS CMCC1 CMCC2 CMCCx ConfS
| | | | | | | |
|(1) userRequest(confUserID,| | |(1) userRequest(confUserID,| |
| confObjID, create, | | | confObjID, create, | |
| userInfo) | | | | userInfo) | | |
|-------------------------------------->| |-------------------------------------->|
| | | | | | | |
| | (a) Create +---| | | (a) Create +---|
| | | "Bob" | | | | | Bob | |
| | | as a | | | | | as a | |
| | | user +-->| | | | user +-->|
| | | | | | | |
|(2) userResponse(confUserID,confObjID | |(2) userResponse(confUserID,confObjID |
| create,success,userInfo) | | create,success,userInfo) |
|<--------------------------------------| |<--------------------------------------|
| | | | | | | |
| | | (b) Focus | | | | (b) Focus |
| | | sets up | | | | sets up |
| | | signaling | | | | signaling |
| | | to "Bob" | | | | to Bob |
| |<----------------------| | |<----------------------|
| | | | | | | |
| | | (c) Notify| | | | (c) Notify|
| | | ("Bob just| | | | ("Bob just|
| | | joined") | | | | joined") |
| | |<----------| | | |<----------|
| | | | | | | |
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
Figure 12: Client Manipulation of Conference - Add a party Figure 13: Client Manipulation of Conference - Add a party
1. "Alice" sends a userRequest message with an operation of "create" 1. Alice sends a userRequest message with an operation of "create"
to add "Bob" to the specific conference as identified by the to add Bob to the specific conference as identified by the
confObjID. The "create" operation also makes sure that "Bob" is "confObjID". The "create" operation also makes sure that Bob is
created as a user in the whole conferencing system. This is done created as a user in the whole conferencing system. This is done
by adding a "userInfo" element describing "Bob" as a user. This by adding a "userInfo" element describing Bob as a user. This is
is needed in order to let the conferencing system be aware of needed in order to let the conferencing system be aware of Bob's
"Bob"'s characteristics. In case Bob was already a registered characteristics. In case Bob was already a registered user,
user, "Alice" would just have referenced him through his XCON Alice would just have referenced him through his XCON-USERID in
UserID, without providing the additional "userInfo". In fact, the "entity" attribute of the "userInfo" field, without providing
that information (including, for instance, "Bob"'s SIP URI to be additional data. In fact, that data (including, for instance,
used subsequently for dial-out) would be obtained by referencing Bob's SIP-URI to be used subsequently for dial-out) would be
the extant registration. The conference server ensures that obtained by referencing the extant registration. The conference
"Alice" has the appropriate authority based on the policies server ensures that Alice has the appropriate authority based on
associated with that specific conference object to perform the the policies associated with that specific conference object to
operation. As mentioned before, a new Conference User Identifier perform the operation. As mentioned before, a new Conference
is created for Bob, and the "userInfo" is used to update the User Identifier is created for Bob, and the "userInfo" is used to
conference object accordingly. update the conference object accordingly. As already seen in
Section 6.3, a placeholder wildcard
("xcon-userid:AUTO_GENERATE@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. In the presented example, the call signaling to add "Bob" to the 2. Bob is successfully added to the conference object, and an XCON-
conference is instigated through the Focus as well. Please USERID is allocated for him ("xcon-userid:Bob@example.com"); this
notice that this is implementation specific. In fact, a 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. We again
remind that this is implementation specific. In fact, a
conferencing system may accomplish different actions after the conferencing system may accomplish different actions after the
user creation, just as it may do nothing at all. Among the user creation, just as it may do nothing at all. Among the
possible actions, for instance "Bob" may be added as a "target" possible actions, for instance Bob may be added as a <target>
element to the "allowed-users-list" element, whose joining element to the <allowed-users-list> element, whose joining
"method" may be either "dial-in" or "dial-out". Besides, out-of- "method" may be either "dial-in" or "dial-out". Besides, out-of-
band notification mechanisms may be involved as well, e.g. to band notification mechanisms may be involved as well, e.g. to
notify "Bob" via mail of the new conference, including details as notify Bob via mail of the new conference, including details as
the date, password, expected participants and so on. the date, password, expected participants and so on (see
Section 5.3).
To conclude the overview on this scenario, once "Bob" has been To conclude the overview on this scenario, once Bob has been
successfully added to the specified conference, per updates to the successfully added to the specified conference, per updates to the
state, and depending upon the policies, other participants state, and depending upon the policies, other participants
(including "Bob" himself) may be notified of the addition of "Bob" (including Bob himself) may be notified of the addition of Bob to
to the conference via the Conference Notification Service. the conference via the Conference Notification Service in use.
1. userRequest/create message (Alice adds Bob) 1. userRequest/create message (Alice adds Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type"> xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<ccmp:userRequest> <ccmp:userRequest>
<userInfo> <userInfo entity="xcon-userid:AUTO_GENERATE@example.com">
<info:display-text>Bob</info:display-text> <info:display-text>Bob</info:display-text>
<info:associated-aors> <info:associated-aors>
<info:entry> <info:entry>
<info:uri>mailto:bob.depippis@example.com</info:uri> <info:uri>mailto:bob.depippis@example.com</info:uri>
<info:display-text>Bob's email</info:display-text> <info:display-text>Bob's email</info:display-text>
</info:entry> </info:entry>
</info:associated-aors> </info:associated-aors>
<info:endpoint entity="sip:bob83@example.com"> <info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop</info:display-text> <info:display-text>Bob's laptop</info:display-text>
</info:endpoint> </info:endpoint>
</userInfo> </userInfo>
</ccmp:userRequest> </ccmp:userRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. userResponse/create message 2. userResponse/create message ("success": a new XCON-USERID is
created for Bob and he is added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type"> xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
skipping to change at page 33, line 4 skipping to change at page 39, line 15
<info:display-text>Bob's email</info:display-text> <info:display-text>Bob's email</info:display-text>
</info:entry> </info:entry>
</info:associated-aors> </info:associated-aors>
<info:endpoint entity="sip:bob83@example.com"> <info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop</info:display-text> <info:display-text>Bob's laptop</info:display-text>
</info:endpoint> </info:endpoint>
</userInfo> </userInfo>
</ccmp:userResponse> </ccmp:userResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 13: Add Party Message Details
6.4. Muting a Party Figure 14: Add Party Message Details
7.2. Muting a Party
This section provides an example of the muting of a party in an This section provides an example of the muting of a party in an
active conference. The unmuting would involve the identical CCMP active conference. We assume that the user to mute has already been
message flow. Although, in the case that floor control is involved, added to the conference. The document only addresses muting and not
whether or not a particular conference client can unmute itself must unmuting as well, since it would involve an almost identical CCMP
be considered by the conferencing system. message flow anyway. Although, in case that any external floor
control is involved, whether or not 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 Please notice that interaction between CCMP and floor control
should be carefully considered. In fact, handling CCMP- and BFCP- should be carefully considered. In fact, handling CCMP- and BFCP-
based media control has to be considered as multiple layers: i.e., based media control has to be considered as multiple layers: i.e.,
a participant may have the BFCP floor granted, but be muted by 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, 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. and would only be unmuted if both the protocols allowed for this.
Figure 14 provides an example of one client "Alice" impacting the Figure 15 provides an example of one client, "Alice", impacting the
media state of another client "Bob". This example assumes an media state of another client, "Bob". This example assumes an
established conference. In this example, the client, "Alice" whose established conference. In this example, Alice, whose role is
Role is "moderator" of the conference, wants to mute "Bob" on a "moderator" of the conference, wants to mute Bob on a medium-size
medium-size multi-party conference, as his device is not muted (and multi-party conference, as his device is not muted (and he's
he's obviously not listening to the call) and background noise in his obviously not listening to the call) and background noise in his
office environment is disruptive to the conference. BFCP floor office environment is disruptive to the conference. BFCP floor
control is assumed not to be involved. control is assumed not to be involved.
From a protocol point of view, muting/unmuting an user basically
consists in updating the conference object by modifying the settings
related to the target user's media streams. Specifically, Bob's
"userInfo" must be updated by modifying its audio <endpoint>
information (e.g. setting it to "recvonly" in case of muting),
identified by the right media id.
"Alice" "Bob" "Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS MS CMCC1 CMCC2 CMCCx ConfS MS
| | | | | | | | | |
|(1) userRequest(confUserID,| | | |(1) userRequest(confUserID,| | |
| confObjID, update, | | | | confObjID, update, | | |
| userInfo) | | | | | userInfo) | | | |
|--------------------------------------->| | |--------------------------------------->| |
| | | | Mute Bob | | | | | Mute Bob |
| | | |----------------->| | | | |----------------->|
| | | | 200 OK | | | | | 200 OK |
skipping to change at page 34, line 37 skipping to change at page 40, line 37
| | | | | | | | | |
| | | (b) Notify | | | | | (b) Notify | |
| | | ("Bob is | | | | | ("Bob is | |
| | | muted") | | | | | muted") | |
| | |<-----------| | | | |<-----------| |
| | | | | | | | | |
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
Figure 14: Client Manipulation of Conference - Mute a party Figure 15: Client Manipulation of Conference - Mute a party
1. Upon receipt of userRequest message with an update operation and 1. Alice sends a userRequest message with an "update" operation and
the userInfo with the "status" field in the "media" element for the userInfo with the "status" field in the "media" element for
"Bob" set to "revconly". The Conference Server ensures that Bob set to "revconly". The Conference Server ensures that Alice
"Alice" has the appropriate authority based on the policies has the appropriate authority based on the policies associated
associated with that specific conference object to perform the with that specific conference object to perform the operation and
operation and updates the userInfo in the conference object updates the "userInfo" in the conference object reflecting that
reflect that "Bob"s media is not to be mixed with the conference Bob's media is not to be mixed with the conference media. In
media. In case the Conference Server relies on a remote Media case the Conference Server relies on a remote Media Server for
Server for its multimedia functionality, it subsequently changes its multimedia functionality, it subsequently changes Bob's media
"Bob"'s media profile accordingly by means of the related profile accordingly by means of the related protocol interaction
protocol interaction with the MS. An example describing a with the MS to enforce the decision. An example describing a
possible way of dealing with such a situation using the Media possible way of dealing with such a situation using the Media
Server Control architecture is described in Server Control architecture is described in
[I-D.ietf-mediactrl-call-flows], at "Simple Bridging: Framework [I-D.ietf-mediactrl-call-flows], at "Simple Bridging: Framework
Transactions (2)". Transactions (2)".
2. A userResponse message with a responseCode of "success" is then 2. A userResponse message with a response-code of "success" is then
sent to "Alice". Depending upon the policies, tne conference sent to Alice. Depending upon the policies, the conference
server may notify other participants (including "Bob") of this server may notify other participants (including Bob) of this
update via the Conference Notification Service. update via any Conference Notification Service that may be in
use.
1. userRequest/update message (Alice mutes Bob) 1. userRequest/update message (Alice mutes Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type"> xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
skipping to change at page 36, line 29 skipping to change at page 42, line 29
<info:media id="1"> <info:media id="1">
<info:label>123</info:label> <info:label>123</info:label>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</userInfo> </userInfo>
</ccmp:userRequest> </ccmp:userRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. userResponse/update message 2. userResponse/update message ("success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type"> xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>7</version> <version>7</version>
<ccmp:userResponse/> <ccmp:userResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 15: Mute Message Details Figure 16: Mute Message Details
6.5. Internal Sidebar 7.3. Conference Announcements and Recordings
Figure 16 provides an example of one client "Alice" involved in This section deals with features that are typically required in a
active conference with "Bob" and "Carol". "Alice" wants to create a conferencing system, that are public announcements (e.g. to notify
sidebar to have a side discussion with "Bob" while still viewing the 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 7.1) it is an
interesting scenario to address to see how the several components of
an XCON-compliant architecture interact with each other to make it
happen.
In this example, as shown in Figure 17 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].
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, | |
| success, version) | |
|<---------------------------| |
| | |
Figure 17: 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.
1. userRequest/create message (Alice - a new conferencing system
client - 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@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 ("success": Alice is provided with a new
xcon-userid and 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:bobConf@example.com</confObjID>
<operation>create</operation>
<response-code>success</response-code>
<version>5</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 18: Announcement Messaging Details
7.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 17. A typical way for the conferencing
system to be aware of all the DTMF interactions within the context of
conferences it is responsible for, is making use of the MEDIACTRL
architecture for what regards media manipulation. Examples in that
sense (specifically for what concerns DTMF interception in conference
instances) are presented in [I-D.ietf-mediactrl-call-flows].
7.5. Entering a password-protected conference
Some conferences may envision a password to be provided by a user who
wants to manipulate the relative conference objects (e.g. join,
update, delete) via CCMP. Such 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 apposite "conference-password" field in the CCMP request
addressed to that conference.
In the following CCMP transactions, it is depicted a scenario in
which 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 relative pass code. Then a userResponse
message with "confPasswordRequired" response-code is returned to
Alice to indicate that her join has been refused and that she has
to recast 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
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 "success" response-code 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 ("passwordRequired")
<?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>
<ccmp:response-code>confPasswordRequired</ccmp:response-code>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
3. userRequest/create message (Alice provides 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>
<conference-password>8601</conference-password>
<ccmp:userRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
4. userResponse/create message ("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-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>success</response-code>
<version>10</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 19: Password-protected conference join messages details
8. Sidebars Scenarios and Examples
While creating conferences and manipulating users and their media may
be considered enough 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
parent conference, and a subset of its media as well. Sidebars are
typically required whenever some of the participants in a conference
want to discuss privately about something, without interfering with
the main conference.
This section deals with some scenarios that typically envisage the
use of a sidebar, like whispering, private messages and coaching
scenarios. The first subsections, anyway, present some examples of
how a generic sidebar can be created, configured and managed.
8.1. Internal Sidebar
Figure 20 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 video associated with the main conference. Alternatively, the audio
from the main conference could be maintained at a reduced volume. from the main conference could be maintained at a reduced volume.
"Alice" initiates the sidebar by sending a request to the Alice initiates the sidebar by sending a request to the conferencing
conferencing system to create a conference reservation based upon the system to create a conference reservation based upon the active
active conference object. "Alice" and "Bob" would remain on the conference object. Alice and Bob would remain on the roster of the
roster of the main conference, such that other participants could be main conference, such that other participants could be aware of their
aware of their participation in the main conference, while an participation in the main conference, while an internal-sidebar
internal-sidebar conference is occurring. Besides, "Bob" decides conference is occurring. Besides, Bob decides that he is not
that he is not interested in still receiving the conference audio in interested in still receiving the conference audio in background (not
background (not even at a lower volume as "Alice" configured) and so even at a lower volume as Alice configured) and so modifies the
modifies the sidebar in order to make that stream inactive for him. sidebar in order to make that stream inactive for him.
"Alice" "Bob" ConfS Alice Bob ConfS
| | | | | |
|(1) sidebarByValRequest(confUserID, | |(1) sidebarByValRequest(confUserID, |
| confObjID,create) | | confObjID,create) |
|--------------------------------------------->| |--------------------------------------------->|
| | | | | |
| | (a) Create +---| | | (a) Create +---|
| | sidebar-by-val | | | | sidebar-by-val | |
| | (new conf obj | | | | (new conf obj | |
| | cloned from +-->| | | cloned from +-->|
| | confObjID) | Sidebar now has | | confObjID) | Sidebar now has
skipping to change at page 38, line 4 skipping to change at page 51, line 13
| update,sidebarByValInfo) | | update,sidebarByValInfo) |
|--------------------------------------------->| |--------------------------------------------->|
| | | | | |
| | (b) Update +---| | | (b) Update +---|
| | sidebar-by-val | | | | sidebar-by-val | |
| | (media, users | | | | (media, users | |
| | etc.) +-->| | | etc.) +-->|
| | | Sidebar is | | | Sidebar is
| | | modified | | | modified
|(4) sidebarByValResponse(confUserID, | |(4) sidebarByValResponse(confUserID, |
| (confObjID*, update, | | confObjID*, update, |
| success, version) | | success, version) |
|<---------------------------------------------| |<---------------------------------------------|
| | | | | |
| |(5) userRequest | | |(5) userRequest |
| | (confUserID', | | | (confUserID', |
| | confObjID*, | | | confObjID*, |
| | update,userInfo)| | | update,userInfo)|
| |---------------------->| | |---------------------->|
| | | | | |
| | (c) Update +---| | | (c) Update +---|
skipping to change at page 38, line 31 skipping to change at page 51, line 40
| |(6) userResponse | | |(6) userResponse |
| | (confUserID', | | | (confUserID', |
| | confObjID*,update| | | confObjID*,update|
| | success,version) | | | success,version) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 16: Client Creation of a Sidebar Conference Figure 20: Client Creation of a Sidebar Conference
1. Upon receipt of CCMP sidebarByValRequest message to "reserve" a 1. Upon receipt of CCMP sidebarByValRequest message to create a new
new sidebar conference based upon the confObjID received in the sidebar-conference based upon the confObjID received in the
request, the conferencing system uses the confObjID to clone a request, the conferencing system uses the confObjID to clone a
conference reservation for the sidebar. The sidebar reservation conference reservation for the sidebar. The sidebar reservation
is NOT independent of the active conference (i.e., parent). The is NOT independent of the active conference (i.e., parent). The
conferencing system also reserves or allocates a new confObjID to conferencing system also allocates a new XCON-URI for that
be used for any subsequent protocol requests from any of the sidebar to be used for any subsequent protocol requests from any
members of the conference. of the members of the conference. The new sidebar identifier
("confObjID*" in Figure 20) is returned in the response message
confObjID parameter.
2. The relationship information is provided in the 2. The relationship information is provided in the
sidebarByValResponse message, specifically in the "sidebar- sidebarByValResponse message, specifically in the <sidebar-
parent" element. A dump of the complete representation of the parent> element. A dump of the complete representation of the
main/parent conference is provided below as well to show how the main/parent conference is provided below as well to show how the
cloning process for the creation of the sidebar could take place. cloning process for the creation of the sidebar could take place.
3. Upon receipt of the sidebarByValResponse message to reserve the 3. Upon receipt of the sidebarByValResponse message to reserve the
conference, "Alice" can now create an active conference using conference, Alice can now create an active conference using that
that reservation, or create additional reservations based upon reservation, or create additional reservations based upon the
the existing reservations. In this example, "Alice" wants only existing reservations. In this example, Alice wants only Bob to
"Bob" to be involved in the sidebar, thus she manipulates the be involved in the sidebar, thus she manipulates the membership
membership so that only the two of them appear in the "allowed- so that only the two of them appear in the <allowed-users-list>
users-list" section. "Alice" also wants both audio and the video section. Alice also wants both audio and video from the original
from the original conference to be available in the sidebar. For conference to be available in the sidebar. For what concerns the
what concerns the media belonging to the sidebar itself, "Alice" media belonging to the sidebar itself, Alice wants the audio to
wants the audio to be restricted to the participants in the be restricted to the participants in the sidebar (that is, Bob
sidebar (that is, her and "Bob"). Additionally, "Alice" and herself). Additionally, Alice manipulates the media values
manipulates the media values to recieve the audio from the main to receive the audio from the main conference at a reduced
conference at a reduced volume, so that the communication between volume, so that the communication between her and Bob isn't
her and "Bob" isn't affected. "Alice" sends a affected. Alice sends a sidebarByValRequest message with an
sidebarByValRequest message with an operation of "update" along operation of "update" along with the "sidebarByValInfo"
with the sidebarByValInfo in the reservation, to create an active containing the aforementioned sidebar modifications.
conference.
4. Upon receipt of the sidebarByValRequest to update the reservation 4. Upon receipt of the sidebarByValRequest to update the sidebar
to create an active conference for the sidebar, as identified by reservation, the conference server ensures that Alice has the
the sidebar conference object ID, the conference server ensures appropriate authority based on the policies associated with that
that "Alice" has the appropriate authority based on the policies specific conference object to perform the operation. The
associated with that specific conference object to perform the conference server must also validate the updated information in
operation. The conference server must also validate the updated the reservation, ensuring that a member like Bob is already a
information in the reservation, ensuring that a member like "Bob" user of this conference server. Once the data for the confObjID
is already a user of this conference server. Once the data for is updated, the conference server sends a sidebarByValResponse to
the confObjID is updated, the conference server sends a Alice. Depending upon the policies, the initiator of the request
sidebarByValResponse to "Alice". Depending upon the policies, (i.e., Alice) and the participants in the sidebar (i.e., Bob) may
the initiator of the request (i.e., "Alice") and the participants be notified of his addition to the sidebar via the conference
in the sidebar (i.e., "Bob") may be notified of his addition to notification service.
the sidebar via the conference notification service.
5. At this point, "Bob" sends a userRequest message to the 5. At this point, Bob sends a userRequest message to the conference
conference server with an operation of "update" to completely server with an operation of "update" to completely disable the
disable the background audio from the parent conference, since it background audio from the parent conference, since it prevents
prevents him from understanding what "Alice" says in the sidebar. him from understanding what Alice says in the sidebar.
6. Notice that "Bob's" request only changes the media perspective 6. Notice that Bob's request only changes the media perspective for
for "Bob". "Alice" keeps on receiving both the audio from "Bob" Bob. Alice keeps on receiving both the audio from Bob and the
and the background from the parent conference. This request may background from the parent conference. This request may be
be relayed by the conference server to the Media Server handling relayed by the conference server to the Media Server handling the
the mixing, if present. Upon completion of the change, the mixing, if present. Upon completion of the change, the
conference server sends a "userResponse" message to "Bob". conference server sends a "userResponse" message to Bob.
Depending upon the policies, the initiator of the request (i.e., Depending upon the policies, the initiator of the request (i.e.,
"Bob") and the participants in the sidebar (i.e., "Alice") may be Bob) and the participants in the sidebar (i.e., Alice) may be
notified of this change via the conference notification service. notified of this change via the conference notification service.
That said, let's consider the following conference object: That said, let's consider the following conference object:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<info:conference-info <info:conference-info
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
entity="xcon:8977878@example.com"> entity="xcon:8977878@example.com">
skipping to change at page 41, line 32 skipping to change at page 54, line 41
</info:media> </info:media>
<info:media id="2"> <info:media id="2">
<info:label>456</info:label> <info:label>456</info:label>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</info:user> </info:user>
</info:users> </info:users>
</info:conference-info> </info:conference-info>
Figure 21: Conference with Alice, Bob and Carol
This is the representation of the conference the sidebar is going to This is the representation of the conference the sidebar is going to
be created in. As such, it will be used by the conferencing system be created in. As such, it will be used by the conferencing system
in order to create the new conference object associated with the in order to create the new conference object associated with the
sidebar. In fact, the sidebar creation happens through a cloning of sidebar. In fact, the sidebar creation happens through a cloning of
the parent conference. Once the sidebar is created, an "update" the parent conference. Once the sidebar is created, an "update"
makes sure that the sidebar is customized as needed. The following makes sure that the sidebar is customized as needed. The following
protocol dump makes the process clearer. protocol dump makes the process clearer.
1. sidebarByValRequest/create message 1. sidebarByValRequest/create message (Alice creates an
internal sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<ccmp:sidebarByValRequest/> <ccmp:sidebarByValRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. sidebarByValResponse/create message 2. sidebarByValResponse/create message ("success", sidebar returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8974545@example.com</confObjID>
<operation>create</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>1</version> <version>1</version>
<ccmp:sidebarByValResponse> <ccmp:sidebarByValResponse>
<sidebarByValInfo entity="xcon:8974545@example.com"> <sidebarByValInfo entity="xcon:8974545@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
SIDEBAR CONFERENCE registered by Alice SIDEBAR CONFERENCE registered by Alice
</info:display-text> </info:display-text>
<xcon:sidebar-parent> <xcon:sidebar-parent>
xcon:8977878@example.com xcon:8977878@example.com
skipping to change at page 43, line 4 skipping to change at page 56, line 15
<info:display-text> <info:display-text>
main conference video main conference video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:conference-state> <info:conference-state>
<info:active>false</info:active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/> uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/> uri="xcon-userid:Carol@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByValInfo> </sidebarByValInfo>
</ccmp:sidebarByValResponse> </ccmp:sidebarByValResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
3. sidebarByValRequest/update message 3. sidebarByValRequest/update message (Alice updates the
created sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<ccmp:sidebarByValRequest> <ccmp:sidebarByValRequest>
<sidebarByValInfo entity="xcon:8974545@example.com"> <sidebarByValInfo entity="xcon:8974545@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
private sidebar Alice - bob private sidebar Alice - Bob
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
<info:entry label="123"> <info:entry label="123">
<info:display-text> <info:display-text>
main conference audio main conference audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
<xcon:controls> <xcon:controls>
<xcon:gain>-60</xcon:gain> <xcon:gain>-60</xcon:gain>
</xcon:controls> </xcon:controls>
</info:entry> </info:entry>
<info:entry label="456"> <info:entry label="456">
<info:display-text> <info:display-text>
main conference video main conference video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:entry> </info:entry>
<info:entry label="sidebarAudioLabel"> <info:entry label="AUTO_GENERATE_1">
<info:display-text> <info:display-text>
sidebar audio sidebar audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
<info:entry label="sidebarVideoLabel"> <info:entry label="AUTO_GENERATE_2">
<info:display-text> <info:display-text>
sidebar video sidebar video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-in" <xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/> uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByValInfo> </sidebarByValInfo>
</ccmp:sidebarByValRequest> </ccmp:sidebarByValRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
4. sidebarByValResponse/update message 4. sidebarByValResponse/update message ("success", sidebar's
updates accepted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>2</version> <version>2</version>
<ccmp:sidebarByValResponse/> <ccmp:sidebarByValResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
5. userRequest/update message (Alice updates Bob's media) 5. userRequest/update message (Bob updates his media)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type"> xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Bob@example.com</confUserID> <confUserID>xcon-userid:Bob@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8974545@example.com</confObjID>
skipping to change at page 45, line 36 skipping to change at page 59, line 4
main conference audio main conference audio
</info:display-text> </info:display-text>
<info:label>123</info:label> <info:label>123</info:label>
<info:status>inactive</info:status> <info:status>inactive</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</userInfo> </userInfo>
</ccmp:userRequest> </ccmp:userRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
6. userResponse/update message ("success", Bob's preferences setted)
6. userResponse/update message
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type"> xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Bob@example.com</confUserID> <confUserID>xcon-userid:Bob@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>3</version> <version>3</version>
<ccmp:userResponse/> <ccmp:userResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 17: Internal Sidebar Messaging Details Figure 22: Internal Sidebar Messaging Details
6.6. External Sidebar 8.2. External Sidebar
Figure 18 provides an example of a different approach towards Figure 23 provides an example of a different approach towards
sidebar. In this scenario, one client, "Alice", is involved in an sidebar. In this scenario, one client, "Alice", is involved in an
active conference with "Bob", "Carol", "David" and "Ethel". "Alice" active conference with "Bob", "Carol", "David" and "Ethel". Alice
gets an important text message via a whisper from "Bob" that a gets an important text message via a whisper from Bob that a critical
critical customer needs to talk to "Alice", "Bob" and "Ethel". customer needs to talk to Alice, Bob and Ethel. Alice creates a
"Alice" creates a sidebar to have a side discussion with the customer sidebar to have a side discussion with the customer "Fred" including
"Fred" including the participants in the current conference with the the participants in the current conference with the exception of
exception of "Carol" and "David", who remain in the active Carol and David, who remain in the active conference. The difference
conference. The difference from the previous scenario is that "Fred" from the previous scenario is that Fred is not part of the parent
is not part of the parent conference: this means that different conference: this means that different policies might be involved,
policies might be involved, considering that "Fred" may access considering that Fred may access information coming from the parent
information coming from the parent conference, in case the sidebar conference, in case the sidebar was configured accordingly. For this
was configured accordingly. For this reason, in this scenario we reason, in this scenario we assume that Alice disables all the media
assume that "Alice" disables all the media from the original (parent) from the original (parent) conference within the sidebar. This means
conference within the sidebar. This means that, while in the that, while in the previous example Alice and Bob still heard the
previous example "Alice" and "Bob" still heard the audio from the audio from the main conference in background, this time no background
main conference in background, this time no background is made is made available. Alice initiates the sidebar by sending a request
available. "Alice" initiates the sidebar by sending a request to the to the conferencing system to create a conference reservation based
conferencing system to create a conference reservation based upon the upon the active conference object. Alice, Bob and Ethel would remain
active conference object. "Alice", "Bob" and "Ethel" would remain on on the roster of the main conference in a hold state. Whether or not
the roster of the main conference in a hold state. Whether or not
the hold state of these participants is visible to other participants the hold state of these participants is visible to other participants
depends upon the individual and local policy. depends upon the individual and local policy.
"Alice" "Bob" ConfS Alice Bob ConfS
| | | | | |
|(1) sidebarByRefRequest(confUserID, | |(1) sidebarByRefRequest(confUserID, |
| confObjID, create) | | confObjID, create) |
|--------------------------------------------->| |--------------------------------------------->|
| | | | | |
| | (a) Create +---| | | (a) Create +---|
| | sidebar-by-ref | | | | sidebar-by-ref | |
| | (new conf obj | | | | (new conf obj | |
| | cloned from +-->| | | cloned from +-->|
| | confObjID) | Sidebar now has | | confObjID) | Sidebar now has
skipping to change at page 47, line 28 skipping to change at page 60, line 28
| confObjID*, create, success, | conf<->sidebar) | confObjID*, create, success, | conf<->sidebar)
| version, sidebarByRefInfo) | | version, sidebarByRefInfo) |
|<---------------------------------------------| |<---------------------------------------------|
| | | | | |
|(3) sidebarByRefRequest(confUserID, | |(3) sidebarByRefRequest(confUserID, |
| confObjID*,update,sidebarByRefInfo) | | confObjID*,update,sidebarByRefInfo) |
|--------------------------------------------->| |--------------------------------------------->|
| | | | | |
| | (b) Create +---| | | (b) Create +---|
| | new user for | | | | new user for | |
| | "Fred" | | | | Fred | |
| | +-->| | | +-->|
| | | | | |
| | (c) Update +---| | | (c) Update +---|
| | sidebar-by-val | | | | sidebar-by-ref | |
| | (media, users | | | | (media, users | |
| | policy, etc.) +-->| | | policy, etc.) +-->|
| | | Sidebar is modified: | | | Sidebar is modified:
| | | no media from the | | | no media from the
| | | parent conference is | | | parent conference is
| | | available to anyone | | | available to anyone
|(4) sidebarByRefResponse(confUserID, | |(4) sidebarByRefResponse(confUserID, |
| confObjID*, update, | | confObjID*, update, |
| success, version) | | success, version) |
|<---------------------------------------------| |<---------------------------------------------|
| | | | | |
| | Notify ("Fred" | | | Notify (Fred |
| | added to | | | added to |
| | sidebar users) | | | sidebar users) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 18: Client Creation of an External Sidebar Figure 23: Client Creation of an External Sidebar
1. Upon receipt of the "sidebarByRefRequest" message to create a new 1. Upon receipt of the "sidebarByRefRequest" message to create a new
sidebar conference, based upon the active conference specified by sidebar conference, based upon the active conference specified by
"confObjID" in the request, the conferencing system uses the "confObjID" in the request, the conferencing system uses that
received active conference to clone a conference reservation for active conference to clone a conference reservation for the
the sidebar. The sidebar reservation is NOT independent of the sidebar. The sidebar reservation is NOT independent of the
active conference (i.e., parent). The conferencing system as active conference (i.e., parent). The conferencing system, as
before reserves or allocates a conference ID (confObjID*) to be before, allocates a conference ID (confObjID*) to be used for any
used for any subsequent protocol requests from any of the members subsequent protocol requests toward the sidebar reservation. The
of the conference. The conferencing system maintains the mapping mapping between the sidebar conference ID and the one associated
between this conference ID and the conference object ID with the main conference is mantained by the conferencing system
associated with the sidebar reservation through the conference and it is gathered from the c<sidebar-parent> element in the
instance. Just as before, this mapping is mantained in "sidebar- sidebar conference object.
parent".
2. Upon receipt of the "sidebarByRefResponse" message, which 2. Upon receipt of the "sidebarByRefResponse" message, which
acknowledges the successful creation of the sidebar object, acknowledges the successful creation of the sidebar object, Alice
"Alice" decides that only "Bob" and "Ethel", along with the new decides that only Bob and Ethel, along with the new participant
participant "Fred" are to be involved in the sidebar. Thus she Fred are to be involved in the sidebar. Thus she manipulates the
manipulates the membership accordingly. "Alice" also sets the membership accordingly. Alice also sets the media in the
media in the "conference-info" such that the participants in the "conference-info" such that the participants in the sidebar don't
sidebar don't receive any media from the main conference. All receive any media from the main conference. All these settings
these settings are provided to the conferencing system by means are provided to the conferencing system by means of a new
of a new "sidebarByRefRequest" message, with an "update" "sidebarByRefRequest" message, with an "update" operation.
operation.
3. "Alice" sends the aforementioned "sidebarByRefRequest" to update 3. Alice sends the aforementioned "sidebarByRefRequest" to update
the information in the reservation and to create an active the information in the reservation and to create an active
conference. Upon receipt of the "sidebarByRefRequest" with an conference. Upon receipt of the "sidebarByRefRequest" with an
operation of "update", the conferencing system ensures that operation of "update", the conferencing system ensures that Alice
"Alice" has the appropriate authority based on the policies has the appropriate authority based on the policies associated
associated with that specific conference object to perform the with that specific conference object to perform the operation.
operation. The conferencing system also validates the updated The conferencing system also validates the updated information in
information in the reservation. Since "Fred" is a new user for the reservation. Since Fred is a new user for this conferencing
this conferencing system, a conference user identifier is created system, a conference user identifier is created for Fred.
for "Fred". Specifically, "Fred" is added to the conference by Specifically, Fred is added to the conference by only providing
only providing his SIP URI. Based upon the addressing his SIP URI. Based upon the contact information provided for
information provided for "Fred" by "Alice", the call signaling to Fred by Alice, the call signaling to add Fred to the conference
add "Fred" to the conference may be instigated through the Focus may be instigated through the Focus (e.g. if Fred had a "dial-
(e.g. if "Fred" had a "dial-out" method set as the target for out" method set as the target for him) at the actual activation
him) at the actual activation of the sidebar. of the sidebar.
4. The conference server sends a "sidebarByRefResponse" message and, 4. The conference server sends a "sidebarByRefResponse" message and,
depending upon the policies, the initiator of the request (i.e., depending upon the policies, the initiator of the request (i.e.,
"Alice") and the participants in the sidebar (i.e., "Bob" and Alice) and the participants in the sidebar (i.e., Bob and Ethel)
"Ethel") may be notified of his addition to the sidebar via the may be notified of his addition to the sidebar via the conference
conference notification service. notification service.
1. sidebarByRefRequest/create message 1. sidebarByRefRequest/create message (Alice creates an
external sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<ccmp:sidebarByRefRequest/> <ccmp:sidebarByRefRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. sidebarByRefResponse/create message 2. sidebarByRefResponse/create message ("success", created
sidebar returned)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByref-response-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID> <confObjID>xcon:8971212@example.com</confObjID>
<operation>success</operation> <operation>create</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>1</version> <version>1</version>
<ccmp:sidebarByRefResponse> <ccmp:sidebarByRefResponse>
<sidebarByRefInfo entity="xcon:8971212@example.com"> <sidebarByRefInfo entity="xcon:8971212@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
SIDEBAR CONFERENCE registered by Alice SIDEBAR CONFERENCE registered by Alice
</info:display-text> </info:display-text>
<xcon:sidebar-parent> <xcon:sidebar-parent>
xcon:8977878@example.com xcon:8977878@example.com
skipping to change at page 50, line 18 skipping to change at page 63, line 20
<info:type>video</info:type> <info:type>video</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:conference-state> <info:conference-state>
<info:active>false</info:active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/> uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/> uri="xcon-userid:Carol@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:David@example.com"/> uri="xcon-userid:David@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:Ethel@example.com"/> uri="xcon-userid:Ethel@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefResponse> </ccmp:sidebarByRefResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
3. sidebarByRefRequest/update message 3. sidebarByRefRequest/update message (Alice updates the sidebar)
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID> <confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<ccmp:sidebarByRefRequest> <ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971212@example.com"> <sidebarByRefInfo entity="xcon:8971212@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
sidebar Alice, bob, ethel & fred sidebar with Alice, Bob, Ethel & Fred
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
<info:entry label="123"> <info:entry label="123">
<info:display-text> <info:display-text>
main conference audio main conference audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>inactive</info:status> <info:status>inactive</info:status>
</info:entry> </info:entry>
<info:entry label="456"> <info:entry label="456">
<info:display-text> <info:display-text>
main conference video main conference video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>inactive</info:status> <info:status>inactive</info:status>
</info:entry> </info:entry>
<info:entry> <info:entry label="AUTO_GENERATE_1">
<info:display-text> <info:display-text>
sidebar audio sidebar audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
<info:entry> <info:entry label="AUTO_GENERATE_2">
<info:display-text> <info:display-text>
sidebar video sidebar video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
<xcon:controls> <xcon:controls>
<xcon:video-layout> <xcon:video-layout>
single-view single-view
</xcon:video-layout> </xcon:video-layout>
</xcon:controls> </xcon:controls>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:conference-state> <info:conference-state>
<info:active>false</info:active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-in" <xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/> uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-out"
uri="sip:fred@example.com"/> uri="sip:fred@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefRequest> </ccmp:sidebarByRefRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
4. sidebarByRefResponse/update message 4. sidebarByRefResponse/update message ("success", sidebar updated)
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByref-response-message-type"> xsi:type="ccmp:ccmp-sidebarByref-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID> <confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>2</version> <version>2</version>
<ccmp:sidebarByRefResponse/> <ccmp:sidebarByRefResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 19: External Sidebar Messaging Details Figure 24: External Sidebar Messaging Details
6.7. Floor control using sidebars
Floor control with sidebars can be used to realize conferencing
scenario such as an analyst briefing. In this scenario, the
conference call has a panel of speakers who are allowed to talk in
the main conference. The other participants are the analysts, who
are not allowed to speak unless they have the floor. To request
access to the floor, they have to join a new sidebar with the
moderator and ask their question. The moderator can also whisper to
each analyst what their status/position in the floor control queue,
similar to the example in Figure 23. It should be noted that other
mechanisms which don't make use of sidebars could be used for floor
control such as those detailed in BFCP.
Figure 20 provides an example of the configuration involved for this
type of conference. As in the previous sidebar examples, there is
the main conference along with a sidebar. "Alice" and "Bob" are the
main participants in the conference, with "A1", "A2" and "A3"
representing the analysts. The sidebar remains active throughout the
conference, with the moderator, "Carol", serving as the chair. As
discussed previously, the sidebar conference is NOT independent of
the active conference (i.e., parent). The analysts are provided the
conference object ID associated with the active sidebar when they
join the main conference. The conferencing system also allocates a
conference ID to be used for any subsequent manipulations of the
sidebar conference. The conferencing system maintains the mapping
between this conference ID and the conference object ID associated
with the active sidebar conference through the conference instance.
The analysts are permanently muted while in the main conference. The
analysts are moved to the sidebar when they wish to speak. Only one
analyst is given the floor at a given time. All participants in the
main conference receive audio from the sidebar conference, as well as
audio provided by the panelists in the main conference.
(To Be added).
Figure 20: Floor Control with sidebars
1. "A1" wishes to ask a question, so he sends a Floor Request
message to the floor control server.
2. Upon receipt of the request, the floor control server notifies 8.3. Private Messages
the moderator, "Carol" of the active sidebar conference, whose
serving as the floor chair.
3. Since no other analysts have yet requested the floor, "Carol" The case of private messages can be handled as a sidebar with just
indicates to the floor control server that "A1" may be granted two participants, similarly to the example in Section 8.1. Unlike
the floor. 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.
(CCMP Messaging details not available yet). In this scenario, Alice requests to the conferencing system the
creation of a private chat room within the main conference context
(presented in Figure 21) in which the involved partecipants are just
Bob and herself. This can be achieved through the following CCMP
transaction (Figure 25).
Figure 21: Floor Control Messaging Details 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 comnpletely 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.
6.8. Whispering or Private Messages 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 envisioned in
Section 8.1 and Section 8.2, the sidebar is created on the basis
of the user provided conference information (as anticipated
before). However, the parent relationship between the main
conference and the newly created sidebar is still mantained 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.
The case of private messages can be handled as a sidebar with just 1. sidebarByValRequest/create message (Alice creates a private
two participants, similarly to the example in section Section 6.5. chat room between Bob and herself)
Unlike the previous example, anyway, 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 whisper. From the
protocol point of view, with reference to the messages described in
Figure 17, only the third CCMP message (a sidebarByValRequest/update)
changes, as depicted in Figure 22.
3. sidebarByValRequest/update message
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID> <confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation> <operation>create</operation>
<ccmp:sidebarByValRequest> <ccmp:sidebarByValRequest>
<sidebarByValInfo entity="xcon:8974545@example.com"> <sidebarByValInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
private sidebar alice - bob private textual sidebar alice - bob
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
<info:entry label="123"> <info:entry label="123">
<info:display-text> <info:display-text>
main conference audio main conference audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:entry> </info:entry>
<info:entry label="456"> <info:entry label="456">
<info:display-text> <info:display-text>
main conference video main conference video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:entry> </info:entry>
<info:entry label="sidebarTextLabel"> <info:entry label="AUTO_GENERATE_2">
<info:display-text> <info:display-text>
sidebar text sidebar text
</info:display-text> </info:display-text>
<info:type>text</info:type> <info:type>text</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-in" <xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/> uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByValInfo> </sidebarByValInfo>
</ccmp:sidebarByValRequest> </ccmp:sidebarByValRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
Figure 22: SidebarByVal Update for private messages scenario 2. sidebarByValResponse/create message ("success", sidebar returned)
The other context, referred to as whisper, in this document refers to
situations involving one time media targetted to specific user(s).
An example of a whisper would be an announcement injected only to the
conference chair or to a new participant joining a conference.
Please notice that such an announcement would not be conveyed by
means of CCMP, while rather by means of a notification protocol
related to it, e.g. a SIP event package, XMPP, or even a multimedia
announcement. CCMP would only be involved with respect to the
creation of an ad-hoc sidebar, as it will be clearer in the following
lines.
Figure 23 provides an example of one user "Alice" who's chairing a
fixed length conference with "Bob" and "Carol". The configuration is
such that only the chair is providing a warning when there is only 10
minutes left in the conference. At that time, "Alice" is moved into
a sidebar created by the conferencing system and only "Alice"
receives the announcement.
(To Be completed).
Figure 23: Whisper
1. When the conferencing system determines that there is only 10
minutes left in the conference which "Alice" is chairing, the
conferencing system directly creates an active sidebar
conference, based on the active conference associated with
"Alice". This sidebar conference is NOT independent of the
active conference (i.e., parent). The conferencing system also
allocates a conference ID to be used for any subsequent
manipulations of the sidebar conference.
2. Immediately upon creation of the active sidebar conference, the
announcement media is provided to "Alice". Depending upon the
policies, Alice may be notified of her addition to the sidebar
via the conference notification service. "Alice" continues to
receive the media from the main conference.
3. Upon completion of the announcement, "Alice" is removed from the <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
siebar and the sidebar conference is deleted. <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>success</response-code>
<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>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
<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>
</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>
</ccmp:ccmpResponse>
Figure 25: Sidebar for Private Messages scenario
4. "Alice" is notified of her removal from the sidebar via the 8.4. Observing and Coaching
conference notification service.
6.9. Observing and Coaching Observing and Coaching is one of the most interesting sidebars-
related scenarios. In fact, it envisages two different interactions
that have to be properly coordinated.
An example of observing and coaching is shown in figure Figure 25. An example of observing and coaching is shown in figure Figure 27.
In this example, call center agent "Bob" is involved in a conference In this example, call center agent Bob is involved in a conference
with customer "Carol". Since "Bob" is a new agent and "Alice" sees with customer Carol. Since Bob is a new agent and Alice sees that he
that he has been on the call with "Carol" for longer than normal, she has been on the call with Carol for longer than normal, she decides
decides to observe the call and coach "Bob" as necessary. 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 Consider the following as the conference document associated with the
video conference involving Bob (the call agent) and Carol (the video conference involving Bob (the call agent) and Carol (the
customer) (Figure 24): customer) (Figure 26):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<info:conference-info <info:conference-info
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
entity="xcon:8978383@example.com"> entity="xcon:8978383@example.com">
<info:conference-description> <info:conference-description>
<info:display-text>CUSTOMER SERVICE conference</info:display-text> <info:display-text>
CUSTOMER SERVICE conference
</info:display-text>
<info:conf-uris> <info:conf-uris>
<info:entry> <info:entry>
<info:uri>sip:8978383@example.com</info:uri> <info:uri>sip:8978383@example.com</info:uri>
<info:display-text>conference sip uri</info:display-text> <info:display-text>conference sip uri</info:display-text>
</info:entry> </info:entry>
</info:conf-uris> </info:conf-uris>
<info:available-media> <info:available-media>
<info:entry label="123"> <info:entry label="123">
<info:display-text>service audio</info:display-text> <info:display-text>service audio</info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
skipping to change at page 57, line 49 skipping to change at page 70, line 44
</info:media> </info:media>
<info:media id="2"> <info:media id="2">
<info:label>456</info:label> <info:label>456</info:label>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</info:user> </info:user>
</info:users> </info:users>
</info:conference-info> </info:conference-info>
Figure 24: A call-center conference object example Figure 26: A call-center conference object example
"Alice" "Bob" ConfS Alice Bob ConfS
| | | | | |
|(1) sidebarByRefRequest(confUserID, | |(1) sidebarByRefRequest(confUserID, |
| confObjID, create) | | confObjID, create) |
|--------------------------------------------->| |--------------------------------------------->|
| | | | | |
| | (a) Create +---| | | (a) Create +---|
| | sidebar-by-ref | | | | sidebar-by-ref | |
| | (new conf obj | | | | (new conf obj | |
| | cloned from +-->| | | cloned from +-->|
| | confObjID) | Sidebar now has | | confObjID) | Sidebar now has
skipping to change at page 58, line 39 skipping to change at page 71, line 39
| | policy, etc.) +-->| | | policy, etc.) +-->|
| | | Sidebar is modified: | | | Sidebar is modified:
| | | unilateral sidebar | | | unilateral sidebar
| | | audio, Carol excluded | | | audio, Carol excluded
| | | from the sidebar | | | from the sidebar
|(4) sidebarByRefResponse(confUserID, | |(4) sidebarByRefResponse(confUserID, |
| confObjID*, update, | | confObjID*, update, |
| success, version) | | success, version) |
|<---------------------------------------------| |<---------------------------------------------|
| | | | | |
| | Notify ("Bob" | | | Notify (Bob |
| | he's been added to | | | he's been added to |
| | sidebar users) | | | sidebar users) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 25: Supervisor Creating a Sidebar for Observing/Coaching Figure 27: Supervisor Creating a Sidebar for Observing/Coaching
1. Upon receipt of the sidbarByRefRequest/create from "Alice" to 1. Upon receipt of the sidbarByRefRequest/create from Alice to
"create" a new sidebar conference from the confObjID received in "create" a new sidebar conference from the confObjID received in
the request, the conferencing system uses the received active the request, the conferencing system uses the received active
conference to clone a conference reservation for the sidebar. conference to clone a conference reservation for the sidebar.
The conferencing system also allocates a conference ID to be used The conferencing system also allocates a conference ID to be used
for any subsequent protocol requests from any of the members of for any subsequent protocol requests from any of the members of
the conference. The conferencing system maintains the mapping the conference. The conferencing system maintains the mapping
between this conference ID and the confObjID associated with the between this conference ID and the confObjID associated with the
sidebar reservation through the conference instance. The sidebar reservation through the conference instance. The
conference server sends a sidebarByRefResponse message with the conference server sends a sidebarByRefResponse message with the
new confObjID and relevant confInfo. new confObjID and relevant sidebarByRefInfo.
2. Upon receipt of the confResponse message, "Alice" manipulates the 2. Upon receipt of the sidebarByRefResponse message, Alice
data received in the confInfo in the response. "Alice" wants manipulates the data received in the sidebarByRefInfo in the
only "Bob" to be involved in the sidebar, thus she updates the response. Alice wants only Bob to be involved in the sidebar,
"allowed-users-list" to include only "Bob". "Alice" also wants thus she updates the <allowed-users-list> to include only Bob and
the audio to be received by herself and "Bob" from the original herself. Alice also wants the audio to be received by herself
conference, but wants any outgoing audio from herself to be and Bob from the original conference, but wants any outgoing
restricted to the participants in the sidebar, whereas "Bob's" audio from herself to be restricted to the participants in the
outgoing audio should go to the main conference, so that both sidebar, whereas Bob's outgoing audio should go to the main
"Alice" and the customer "Carol" hear the same audio from "Bob". conference, so that both Alice and the customer Carol hear the
"Alice" sends a sidebarByRefRequest message with an "update" same audio from Bob. Alice sends a sidebarByRefRequest message
operation including the updated conference information. with an "update" operation including the updated sidebar
information.
3. Upon receipt of the sidbarByRefRequest message with an "update" 3. Upon receipt of the sidebarByRefRequest message with an "update"
operation, the conferencing system ensures that "Alice" has the operation, the conferencing system ensures that Alice has the
appropriate authority based on the policies associated with that appropriate authority based on the policies associated with that
specific conference object to perform the operation. 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 4. After validating the data, the conference server sends a
sidebarByRefResponse message. Based upon the addressing sidebarByRefResponse message. Based upon the contact information
information provided for "Bob" by "Alice", the call signaling to provided for Bob by Alice, the call signaling to add Bob to the
add "Bob" to the sidebar with the appropriate media sidebar with the appropriate media characteristics is instigated
characteristics is instigated through the Focus. "Bob" is through the Focus. Bob is notified of his addition to the
notified of his addition to the sidebar via the conference sidebar via the conference notification service, thus he is aware
notification service, thus he is aware that "Alice" the that Alice, the supervisor, is available for coaching him through
supervisor is available for coaching him through this call. this call.
1. sidebarByRefRequest/create message (Alice - the coach - creates a sidebar) 1. sidebarByRefRequest/create message (Alice as coach creates a sidebar)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info" <ccmp:ccmpRequest xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8978383@example.com</confObjID> <confObjID>xcon:8978383@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<ccmp:sidebarsByRefRequest/> <ccmp:sidebarsByRefRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. sidebarByRefRequest/create message ("success") 2. sidebarByRefResponse/create message ("success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByref-response-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID> <confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID> <confObjID>xcon:8971313@example.com</confObjID>
<operation>create</operation>
<ccmp:response-code>success</ccmp:response-code> <ccmp:response-code>success</ccmp:response-code>
<version>1</version> <version>1</version>
<ccmp:sidebarByRefResponse> <ccmp:sidebarByRefResponse>
<sidebarByRefInfo entity="xcon:8971313@example.com"> <sidebarByRefInfo entity="xcon:8971313@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
SIDEBAR CONFERENCE registered by alice SIDEBAR CONFERENCE registered by alice
</info:display-text> </info:display-text>
<xcon:sidebar-parent> <xcon:sidebar-parent>
xcon:8971313@example.com xcon:8971313@example.com
skipping to change at page 61, line 4 skipping to change at page 74, line 22
<info:display-text> <info:display-text>
main conference video main conference video
</info:display-text> </info:display-text>
<info:type>video</info:type> <info:type>video</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:conference-state> <info:conference-state>
<info:active>false</info:active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/> uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:bob@example.com"/> uri="xcon-userid:bob@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-in"
uri="xcon-userid:carol@example.com"/> uri="xcon-userid:carol@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefResponse> </ccmp:sidebarByRefResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
3. sidebarByRefRequest/update message (Alice introduces unilateral sidebar audio 3. sidebarByRefRequest/update message (Alice introduces unilateral
and excludes Carol from the sidebar) sidebar audio and excludes Carol from the sidebar)
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID> <confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID> <confObjID>xcon:8971313@example.com</confObjID>
<operation>update</operation> <operation>update</operation>
<ccmp:sidebarByRefRequest> <ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971313@example.com"> <sidebarByRefInfo entity="xcon:8971313@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
Coaching sidebar alice(supervisor) - bob(call agent) Coaching sidebar Alice and Bob
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
<info:entry label="sidebarAudio"> <info:entry label="AUTO_GENERATE_1">
<info:display-text> <info:display-text>
Alice-to-Bob audio Alice-to-Bob audio
</info:display-text> </info:display-text>
<info:type>audio</info:type> <info:type>audio</info:type>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:conference-state> <info:conference-state>
<info:active>false</info:active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-in" <xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/> uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-out" <xcon:target method="dial-out"
uri="xcon-userid:bob@example.com"/> uri="xcon-userid:bob@example.com"/>
</xcon:allowed-users-list> </xcon:allowed-users-list>
<user entity="xcon-userid:Alice@example.com> <user entity="xcon-userid:Alice@example.com>
<info:endpoint> <info:endpoint entity="sip:Alice@example.com">
<info:media> <info:media id="AUTO_GENERATE_2">
<info:label>sidebarAudio</info:label> <info:label>AUTO_GENERATE_1</info:label>
<info:status>sendonly</info:status> <info:status>sendonly</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</user> </user>
<user entity="xcon-userid:Bob@example.com> <user entity="xcon-userid:Bob@example.com>
<info:endpoint> <info:endpoint entity="sip:Bob@example.com">
<info:media> <info:media id="AUTO_GENERATE_3">
<info:label>sidebarAudio</info:label> <info:label>AUTO_GENERATE_1</info:label>
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:media> </info:media>
</info:endpoint> </info:endpoint>
</user> </user>
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefRequest> </ccmp:sidebarByRefRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
Figure 26: Coaching and Observing Messaging details 4. sidebarByRefRequest/update message ("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-sidebarByRef-response-message-type">
<confUserID>xcon-userid:alice@example.com</confUserID>
<confObjID>xcon:8971313@example.com</confObjID>
<operation>update</operation>
<ccmp:response-code>success</ccmp:response-code>
<version>2</version>
<ccmp:sidebarByRefResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
7. Removing participants and deleting conferences Figure 28: Coaching and Observing Messaging details
9. Removing Participants and Deleting Conferences
The following scenarios detail the basic operations associated with The following scenarios detail the basic operations associated with
removing participants from conferences and entirely deleting removing participants from conferences and entirely deleting
conferences. The examples assume that a conference has already been conferences. The examples assume that a conference has already been
correctly established, with media, if applicable, per one of the correctly established, with media, if applicable, per one of the
examples in Section 5. examples in Section 6.
7.1. Removing a Party 9.1. Removing a Party
Figure 27 provides an example of one client "Alice" removing another Figure 29 provides an example of a client, "Alice", removing another
participant "Bob" from a conference. This example assumes an participant, "Bob", from a conference. This example assumes an
established conference with "Alice", "Bob", "Claire" and "Duck". In established conference with Alice, Bob, "Claire" and "Duck". In this
this example, "Alice" wants to remove "Bob" from the conference so example, Alice wants to remove Bob from the conference so that the
that the group can continue in the same conference without "Bob"'s group can continue in the same conference without Bob's
participation. participation.
"Alice" "Bob" "Claire" ConfS Alice Bob Claire ConfS
| | | | | | | |
|(1) userRequest(confUserID,| | |(1) userRequest(confUserID,| |
| confObjID, delete,| | | confObjID, delete,| |
| userInfo) | | | userInfo) | |
|-------------------------------------->| |-------------------------------------->|
| | | | | | | |
| | | (a) Focus | | | | (a) Focus |
| | | tears down| | | | tears down|
| | | signaling | | | | signaling |
| | | to "Bob" | | | | to Bob |
| |<----------------------| | |<----------------------|
| | | | | |
| | (b)Deletes+---| | | (b)Deletes+---|
| | | "Bob" | | | | | Bob | |
| | | as a | | | | | as a | |
| | | user +-->| | | | user +-->|
| | | in | | | | in |
| | | confObj | | | | confObj |
| | | | | | | |
|(2) userResponse(confUserID,confObjID, | |(2) userResponse(confUserID,confObjID, |
| delete,success,version) | | delete,success,version) |
|<--------------------------------------| |<--------------------------------------|
| | | | | | | |
| | | | | | | |
| | | (c) Notify| | | | (c) Notify|
| | | ("Bob just| | | | ("Bob just|
| | | left") | | | | left") |
| | |<----------| | | |<----------|
| | | | | | | |
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
Figure 27: Client Manipulation of Conference - Remove a party Figure 29: Client Manipulation of Conference - Remove a party
1. "Alice" sends a userRequest message, with a "delete" operation. 1. Alice sends a userRequest message, with a "delete" operation.
The conference server ensures that "Alice" has the appropriate The conference server ensures that Alice has the appropriate
authority based on the policies associated with that specific authority based on the policies associated with that specific
conference object to perform the operation. conference object to perform the operation.
2. Based upon the addressing and media information in the conference 2. Based upon the contact and media information in the conference
object for "Bob" in the "user" element, the conference instigates object for Bob in the "userInfo" element, the conferencing system
the process to remove "Bob" (e.g., the call signaling to remove starts the process to remove Bob (e.g., the call signaling to
"Bob" from the conference is instigated through the Focus). The remove Bob from the conference is instigated through the Focus).
conference server updates the data in the conference object, thus The conference server updates the data in the conference object,
removing "Bob" from the "users" list. After updating the data, thus removing Bob from the <users> list. After updating the
the conference server sends a userResponse message to "Alice". data, the conference server sends a userResponse message to
Depending upon the policies, other participants (e.g. "Claire") Alice. Depending upon the policies, other participants (e.g.
may be notified of the removal of "Bob" from the conference via "Claire") may be notified of the removal of Bob from the
the Conference Notification Service. conference via the Conference Notification Service.
1. userRequest/delete message (Alice deletes Bob): 1. userRequest/delete message (Alice deletes Bob):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type"> xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID> <confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation> <operation>delete</operation>
<ccmp:userRequest> <ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com"/> <userInfo entity="xcon-userid:Bob@example.com"/>
</ccmp:userRequest> </ccmp:userRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. userResponse/delete message 2. userResponse/delete message ("success")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type"> xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID> <confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation> <operation>delete</operation>
<response-code>success</response-code> <response-code>success</response-code>
<version>17</version> <version>17</version>
<ccmp:userResponse/> <ccmp:userResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 28: Removing a Participant Messaging Details Figure 30: Removing a Participant Messaging Details
7.2. Deleting a Conference 9.2. Deleting a Conference
Details to be added. In this section, an example of a successful conference deletion is
provided (Figure 31).
"Alice" ConfS Alice ConfS
| | | |
|(1)confRequest(confUserID, | |(1)confRequest(confUserID, |
| confObjID, delete) | | confObjID, delete) |
|------------------------------>| |------------------------------>|
| (a)Delete +---| | (a)Delete +---|
| Conf | | | Conf | |
| Object | | | Object | |
| +-->| | +-->|
| |--+ (b) MS | |--+ (b) MS
| | | removes related | | | removes related
skipping to change at page 66, line 27 skipping to change at page 79, line 32
| |<-+ their participants | |<-+ their participants
| | (SIP signaling as well) | | (SIP signaling as well)
| | | |
|(2)confResponse(confUserID, | |(2)confResponse(confUserID, |
| confObjID,delete, | | confObjID,delete, |
| success) | | success) |
| | | |
|<------------------------------| |<------------------------------|
| | | |
Figure 29: Deleting a conference Figure 31: Deleting a conference
(Text description to be added). 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,
disconnetting participants and removing associated resources such
as mixer instances. Then, the conference server returns a
confResponse message to Alice with "success" as "response-code"
and the deleted conference XCON-URI in the "confObjID" field.
1. confRequest/delete message (Alice deletes a conference) 1. confRequest/delete message (Alice deletes a conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info" xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp" xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type"> xsi:type="ccmp:ccmp-conf-request-message-type">
skipping to change at page 67, line 38 skipping to change at page 80, line 38
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type"> xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID> <confObjID>xcon:8977794@example.com</confObjID>
<operation>delete</operation> <operation>delete</operation>
<response-code>success</response-code> <response-code>success</response-code>
<ccmp:confResponse/> <ccmp:confResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 30: Deleting a Conference Messaging Details Figure 32: Deleting a Conference Messaging Details
8. Additional Conference Scenarios and Examples
The following are additional scenarios making use of the XCON
framework and associated protocols. In some cases, these examples
make use of some of the building block scenarios detailed in the
previous example sections, in which case the appropriate scenario is
referenced rather than duplicating details. In addition, in cases
where the scenarios make use of other protocols, as in the previous
section, the appropriate reference in the form of a title to the
specific flow in the appropriate protocol document is included.
8.1. Chat
The chat functionality described in this section of the document
allows clients that use the XCON framework and protocols for other
media types (e.g. voice/video) to utilize the same conference control
mechanisms and conferencing system to establish, update and delete a
conference instance associated with an Instant Messaging (IM) chat
session, independent of the IM chat protocol. In some cases(e.g.,
Message Session Relay Protocol (MSRP) chat), this would provide
additional capabilities, such as sidebars. This approach also allows
the conferencing system to provide a natural interworking point for
various IM protocols, the details of the interworking are outside the
scope of this document.
An IM client wishing to join a conference uses standardized
centralized conferencing mechanisms for creating and joining a
conference, as identified in the previous sections. The request to
send an IM to an IM media session is specific to the IM protocol
(e.g., MSRP SEND), just as there is specific media control messaging
for other types of sessions. An IM client connecting to a
conferencing system has a 1:1 relationship with the IM media
signaling entity in the conferencing system. This relationship is
referred to as an IM session. Further details of the correlation of
the IM session identifiers with the XCON session identifiers is
provided in [I-D.boulton-xcon-session-chat]. The IM media signaling
entity is responsible for distribution of all the messages to the
other participants.
As with the other example conferences created, each IM session is
logically associated with a specific conference. The conference
itself has a specific identifier in the form of the XCON-URI, which
is passed in the "confObjID" element in the CCMP messages. This
provides the relevant association between IM session and a
centralized conference.
An IM client wishing to delete a chat room uses standardized
mechanisms for deleting a conference instance, such as those detailed
in Section 7.2.
8.1.1. Basic Chat Operations
This section provides details of the realization of the Multi-party
IM (chat) within the context of the centralized conferencing
framework. A brief discussion and diagrams are provided for
creating, joining, and deleting a chat based conference. The
discovery of chat rooms available on a specific conferencing system
is inherent in the blueprint capability provided by the conferencing
system. The objective of this section is to further illustrate the
model, mechanisms and protocols presented in the previous sections
and also serves to validate that the model, mechanisms and protocols
are sufficient to support IM chat.
It should be noted that not all entities impacted by the request are
shown in the diagram (e.g., Focus), but rather the emphasis is on the
new entities introduced by this centralized conferencing framework.
8.1.1.1. Creating a Chat Room
There are different ways to create a conference. A participant can
create a conference using call signaling means only, such as SIP, as
detailed in [RFC4579]. For a conferencing client to have more
flexibility in defining the charaterisitics and capabilities of a
chat based conference, a conferencing client would implement a
conference control protocol client. By using a conference control
protocol, the client can determine the capabilities of a conferencing
system and its various resources.
Figure 31 provides an example of one client "Alice" determining the
conference blueprints available to support various types of chat
rooms for a particular conferencing system and creating a chat based
conference using the desired blueprint.
Details to be added.
Figure 31: Client Creation of Chat room
Upon receipt of the Conference Control Protocol request for
blueprints associated with chat rooms, the conferencing system would
first authenticate "Alice" (and allocate a conference user
identifier, if necessary) and then ensure that "Alice" has the
appropriate authority based on system policies to receive any chat
room based blueprints supported by that system. Any blueprints that
"Alice" is authorized to use are returned in a response, along with
the conference user ID.
Upon receipt of the Conference Control Protocol response containing
the blueprints, "Alice" determines which blueprint to use for the
conference to be created. "Alice" creates a conference object based
on the blueprint (i.e., clones) and modifies applicable fields, such
as membership list, topic details, and start time. "Alice" then
sends a request to the conferencing system to create a conference
reservation based upon the updated blueprint.
Upon receipt of the Conference Control Protocol request to "create" a
conference based upon the blueprint in the request, the conferencing
system ensures that the blueprint received is a valid blueprint (i.e.
the values of the various field are within range). The conferencing
system determines the appropriate read/write access of any users to
be added to a conference based on this blueprint (using membership,
roles, etc.). The conferencing system uses the received blueprint to
clone a conference reservation. The conferencing system also
reserves or 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 conference object ID associated with the reservation through
the conference instance.
Upon receipt of the conference control protocol response to reserve
the conference, "Alice" now creates an active chat room using that
reservation. "Alice" provides the conference information, including
the necessary conference ID, to desired participants to allow them to
join the chat room. "Alice" may also add other users to the chat
room. When the first participant, including "Alice", requests to be
added to the conference, an active conference and focus are created.
The focus is associated with the conference ID received in the
request.
(CCMP Messaging details not available yet.
Plan is to reference detailed flows in
previous sections
in the example.)
Figure 32: Chatroom Creation Messaging Details
8.1.1.2. Joining a Chat Room
A participant can join and leave the conference using call signaling
means only, such as SIP. However, in order to perform richer
conference control a user client can implement a conference control
protocol client. By using a conference control protocol, the client
can affect its own state and the state of other participants,
depending upon policies, which may indirectly affect the state of any
of the conference participants.
In the example in section Section 8.1.1.1, "Alice" has reserved a
chat room . "Alice" has also already joined the conference and made
the chat room active. "Alice" can either add additional participants
to the chat room or provide the conference information, including the
necessary conference ID, to desired participants and allow them to
request to join themselves. Any participants that have the authority
to manipulate the conference would receive the conference object
identifier of the active conference object in the response to their
request to join.
Figure 33 provides an example of "Bob" joining the chat room using
the conference ID provided by "Alice" (e.g., in an IM).
Details to be added.
Figure 33: Joining a chat room
Upon receipt of the Conference Control Protocol request to "add" a
party ("Bob") in the specific conference as identified by the
conference object ID, the conferencing system must determine whether
"Bob" is already a user of this conferencing system or whether he is
a new user. If "Bob" is a new user for this conferencing system, a
Conference User Identifier is created for Bob. The conferencing
system must also ensure that "Bob" has the appropriate authority
based on the policies associated with that specific conference object
to perform the operation.
Once "Bob" has been successfully added to the chat room, a response
is sent to "Bob". Depending upon the policies, other participants
(including "Bob") may be notified of the addition of "Bob" to the
conference via the Conference Notification Service.
(CCMP Messaging details not available yet.
Plan is to reference detailed flows in
previous sections as appropriate
in the example.)
Figure 34: Chatroom Join Messaging Details
8.1.1.3. Deleting a Chat Room
Depending upon the conferencing system policies and policies specific
to the chat room, the creator of the chat would typically be the
participant authorized to delete the chat room.
In the example in section Section 8.1.1.1, "Alice" has created a chat
room and provided the conference information, including the necessary
conference ID, to desired participants and allow them to request to
join themselves. "Bob" and others are participants in the chat.
Figure 35 provides an example of "Alice" later deleting this same
chat room.
Details to be added.
Figure 35: Deleting a chat room
Upon receipt of the Conference Control Protocol request to "delete"
the specific chat room as identified by the conference object ID, the
conferencing system must determine whether "Alice" has the authority
to delete this conference. Since "Alice" is the creator of the
conference, the "delete" operation is performed, with the appropriate
signaling sent to the participants, including a response to "Alice"
indicating that the chat room has been deleted.
One step in the deletion of the chat room may include notifitying the
participants (including "Bob") that they have been removed via the
Conference Notification Service.
(CCMP Messaging details not available yet.
Plan is to reference detailed flows in
previous sections .)
Figure 36: Chatroom Deletion Messaging Details
8.1.2. Advanced Operations
This section provides details of the realization of advanced chat
features, such as sidebars and private messages, within the context
of the centralized conferencing framework. As with Section 8.1.1,
the objective of this section is to further illustrate the model,
mechanisms and protocols presented in the previous sections and also
serves to validate that the model, mechanisms and protocols are
sufficient to support advance IM chat features.
8.1.2.1. Text Sidebar
The concept of a 'sidebar' in conferencing system is fully described
in the Sidebar section and related subsections within the
Conferencing Scenarios Realization section of the centralized
conferencing framework document [RFC5239]. The creation,
manipulation and deletion of sidebars for chat rooms follows the same
principles.
A conference object representing a sidebar is created by cloning the
parent associated with the existing conference and updating any
information specific to the sidebar. A sidebar conference object is
implicitly linked to the parent conference object (i.e. it is not an
independent object) and is associated with the parent conference
object identifier. A conferencing system manages and enforces the
parent and appropriate localized restrictions on the sidebar
conference object (e.g., no members from outside the parent
conference instance can join, sidebar conference can not exist if
parent conference is terminated, etc.).
Figure 37 provides an example of one client "Alice" involved in
active chat room with "Bob" and "Carol". "Alice" wants to create a
sidebar to have a side discussion with "Bob" while still receiving
the session based messaging associated with the main chat room.
Whether the text is interleaved with the main chat or whether a
separate window is created for the sidebar is implementation
specific. "Alice" initiates the sidebar by sending a request to the
conferencing system to create a conference chat reservation based
upon the active chat 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 the text sidebar conference is occurring.
Details to be added.
Figure 37: Client Creation of a Sidebar Conference
Upon receipt of the Conference Control Protocol request to "reserve"
a new sidebar chat conference, based upon the active chat conference
received in the request, the conferencing system uses the received
active chat conference to clone a conference chat reservation for the
sidebar. As discussed previously, the sidebar reservation is NOT
independent of the active conference (i.e., parent). The
conferencing system also reserves or 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 conference object ID associated
with the sidebar reservation through the conference instance.
Upon receipt of the conference control protocol response to reserve
the conference, "Alice" can now create an active chat 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.
"Alice" also only wants the text from the original conference, but
wants the text within the sidebar to be restricted to the
participants in the sidebar. "Alice" sends a conference control
protocol request to update the information in the reservation and to
create an active conference.
Upon receipt of the conference control protocol request to update the
reservation and to create an active chat conference for the sidebar,
as identified by the conference object ID, 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 must also validate the
updated information in the reservation, ensuring that a member like
"Bob" is already a user of this conferencing system.
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.
Details to be added.
Figure 38: Chatroom Sidebar Messaging Details
8.1.2.2. Private Message
The case of private messages can be handled as a sidebar with just
two participants, identical to the example in section
Section 8.1.2.1. The other context, referred to as whisper, in this
document refers to situations involving one time media targetted to
specific user(s). An example of a whisper would be a text message
injected only to the conference chair or to a new participant joining
a conference.
Figure 39 provides an example of one user "Alice" who's chairing a
fixed length conference with "Bob" and "Carol". The configuration is
such that only the chair is providing a warning when there is only 10
minutes left in the conference. At that time, "Alice" is moved into
a sidebar created by the conferencing system and only "Alice"
receives that text message announcing the 10 minute warning.
Details to be added.
Figure 39: Whisper
When the conferencing system determines that there is only 10 minutes
left in the conference which "Alice" is chairing, rather than
creating a reservation as was done for the sidebar in
Section 8.1.2.1, the conferencing system directly creates an active
chat sidebar conference, based on the active chat conference
associated with "Alice". As discussed previously, the sidebar
conference is NOT independent of the active conference (i.e.,
parent). The conferencing system also allocates a conference ID to
be used for any subsequent manipulations of the sidebar chat
conference. The conferencing system maintains the mapping between
this conference ID and the conference object ID associated with the
active sidebar conference through the conference instance.
Immediately upon creation of the active chat sidebar conference, the
text announcement is provided to "Alice". Depending upon the
policies, Alice may be notified of her addition to the sidebar via
the conference notification service. "Alice" continues to receive
the text messages from the main conference.
Upon delivery of the text announcement, "Alice" is removed from the
sidebar and the sidebar conference is deleted. Depending upon the
policies, "Alice" may be notified of her removal from the sidebar via
the conference notification service.
Details to be added.
Figure 40: Chatroom Sidebar Messaging Details
9. IANA Considerations 10. IANA Considerations
This document has no IANA considerations. This document has no IANA considerations.
10. Security Considerations 11. Security Considerations
The security considerations applicable to the implementation of these The security considerations applicable to the implementation of these
call flows is documented in the XCON Framework, with additional call flows is documented in the XCON Framework, with additional
security considerations documented in the CCMP document. Where security considerations documented in the CCMP document. Where
applicable, statements with regards to the necessary security are applicable, statements with regards to the necessary security are
discussed in particular flows, however, since this is only an discussed in particular flows, however, since this is only an
informational document, readers are strongly recommended to carefully informational document, readers are strongly recommended to carefully
consider the security considerations defined in the XCON Framework consider the security considerations defined in the XCON Framework
and the CCMP document. and the CCMP document.
11. Change Summary 12. Change Summary
NOTE TO THE RFC-Editor: Please remove this section prior to NOTE TO THE RFC-EDITOR: Please remove this section prior to
publication as an RFC. publication as an RFC.
The following are the major changes between the 02 and the 03
versions of the draft:
o updated the call flows in order to take into account the changes
on CCMP;
o added a completely new introductory section, addressing the
protocol in general, the data model constraints, transport-related
information, and notifications in a practical way;
o reorganized the chapters, grouping user-related scenarios in an
users section, and doing the same for sidebars;
o added more verbose text to almost every section of the document;
The following are the major changes between the 01 and the 02 The following are the major changes between the 01 and the 02
versions of the draft: versions of the draft:
o updated the call flows in order to take into account the new o updated the call flows in order to take into account the new
versioning mechanism of the CCMP; versioning mechanism of the CCMP;
o clarified, per agreement in Stockholm, that cloning from a o clarified, per agreement in Stockholm, that cloning from a
blueprint does not need a cloning-parent to be made available in blueprint does not need a cloning-parent to be made available in
the response; the response;
skipping to change at page 77, line 5 skipping to change at page 82, line 13
a resource before it can be used by an interested participant; a resource before it can be used by an interested participant;
o changed all the domains involved in the flows to make them o changed all the domains involved in the flows to make them
compliant with [RFC2606]; compliant with [RFC2606];
o clarified that a successful creation of a new conference object o clarified that a successful creation of a new conference object
may or may not contain the whole confInfo object in the response; may or may not contain the whole confInfo object in the response;
in case it doesn't, a retrieve of the updated object can be in case it doesn't, a retrieve of the updated object can be
achieved by issuing a confRequest/retrieve; achieved by issuing a confRequest/retrieve;
o clarified that the scenario in Section 6.1 only involves CCMP in o clarified that the scenario in Section 7.3 only involves CCMP in
adding the user to a conference; this includes requiring the use adding the user to a conference; this includes requiring the use
of a password only in adding the user to the conference object; of a password only in adding the user to the conference object;
the actual request for PIN/Password when joining thw conference is the actual request for PIN/Password when joining thw conference is
handled by means of out-of-band mechanisms (in this case at the handled by means of out-of-band mechanisms (in this case at the
media level, with the help of the MEDIACTRL framework); media level, with the help of the MEDIACTRL framework);
o added and corrected Sidebars-related scenarios; o added and corrected Sidebars-related scenarios;
o added flows for some previously missing scenarios: Private o added flows for some previously missing scenarios: Private
Message/Whisper, Coaching Scenario, Removing a Party, Deleting a Message/Whisper, Coaching Scenario, Removing a Party, Deleting a
skipping to change at page 77, line 35 skipping to change at page 83, line 5
The following are the major changes between the individual 01 version The following are the major changes between the individual 01 version
to the WG 00: to the WG 00:
o Updates to reflect most recent version of CCMP, including o Updates to reflect most recent version of CCMP, including
parameter names, etc. parameter names, etc.
o Added protocol details to many of the examples. o Added protocol details to many of the examples.
o Editorial: Simplifying intro, terms, etc. o Editorial: Simplifying intro, terms, etc.
12. Acknowledgements 13. Acknowledgements
The detailed content for this document is derived from the prototype The detailed content for this document is derived from the prototype
work of Lorenzo Miniero, Simon Pietro-Romano, Tobia Castaldi and work of Lorenzo Miniero, Simon Pietro-Romano, Tobia Castaldi and
their colleagues at the University of Napoli. their colleagues at the University of Napoli.
13. References 14. References
13.1. Normative References
14.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5239] Barnes, M., Boulton, C., and O. Levin, "A Framework for [RFC5239] Barnes, M., Boulton, C., and O. Levin, "A Framework for
Centralized Conferencing", RFC 5239, June 2008. Centralized Conferencing", RFC 5239, June 2008.
[I-D.ietf-xcon-ccmp] [I-D.ietf-xcon-ccmp]
Barnes, M., Boulton, C., Romano, S., and H. Schulzrinne, Barnes, M., Boulton, C., Romano, S., and H. Schulzrinne,
"Centralized Conferencing Manipulation Protocol", "Centralized Conferencing Manipulation Protocol",
draft-ietf-xcon-ccmp-05 (work in progress), December 2009. draft-ietf-xcon-ccmp-05 (work in progress), December 2009.
13.2. Informative References 14.2. Informative References
[RFC2606] Eastlake, D. and A. Panitz, "Reserved Top Level DNS [RFC2606] Eastlake, D. and A. Panitz, "Reserved Top Level DNS
Names", BCP 32, RFC 2606, June 1999. Names", BCP 32, RFC 2606, June 1999.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E. A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261, Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002. June 2002.
[RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol [RFC4579] Johnston, A. and O. Levin, "Session Initiation Protocol
(SIP) Call Control - Conferencing for User Agents", (SIP) Call Control - Conferencing for User Agents",
BCP 119, RFC 4579, August 2006. BCP 119, RFC 4579, August 2006.
[RFC4597] Even, R. and N. Ismail, "Conferencing Scenarios", [RFC4597] Even, R. and N. Ismail, "Conferencing Scenarios",
RFC 4597, August 2006. RFC 4597, August 2006.
[RFC4582] Camarillo, G., Ott, J., and K. Drage, "The Binary Floor [RFC4582] Camarillo, G., Ott, J., and K. Drage, "The Binary Floor
Control Protocol (BFCP)", RFC 4582, November 2006. 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-xcon-event-package] [I-D.ietf-xcon-event-package]
Camarillo, G., Srinivasan, S., Even, R., and J. Camarillo, G., Srinivasan, S., Even, R., and J.
Urpalainen, "Conference Event Package Data Format Urpalainen, "Conference Event Package Data Format
Extension for Centralized Conferencing (XCON)", Extension for Centralized Conferencing (XCON)",
draft-ietf-xcon-event-package-01 (work in progress), draft-ietf-xcon-event-package-01 (work in progress),
September 2008. September 2008.
[I-D.ietf-xcon-common-data-model] [I-D.ietf-xcon-common-data-model]
Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen, Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen,
"Conference Information Data Model for Centralized "Conference Information Data Model for Centralized
Conferencing (XCON)", draft-ietf-xcon-common-data-model-14 Conferencing (XCON)", draft-ietf-xcon-common-data-model-16
(work in progress), November 2009. (work in progress), February 2010.
[I-D.ietf-mediactrl-call-flows] [I-D.ietf-mediactrl-call-flows]
Amirante, A., Castaldi, T., Miniero, L., and S. Romano, Amirante, A., Castaldi, T., Miniero, L., and S. Romano,
"Media Control Channel Framework (CFW) Call Flow "Media Control Channel Framework (CFW) Call Flow
Examples", draft-ietf-mediactrl-call-flows-02 (work in Examples", draft-ietf-mediactrl-call-flows-03 (work in
progress), October 2009. progress), February 20