draft-ietf-xcon-examples-06.txt   draft-ietf-xcon-examples-07.txt 
XCON Working Group M. Barnes XCON Working Group M. Barnes
Internet-Draft Polycom Internet-Draft Polycom
Intended status: Informational L. Miniero Intended status: Informational L. Miniero
Expires: January 13, 2011 Meetecho Expires: April 28, 2011 Meetecho
R. Presta R. Presta
S P. Romano S P. Romano
University of Napoli University of Napoli
July 12, 2010 October 25, 2010
Centralized Conferencing Manipulation Protocol (CCMP) Call Flow Examples Centralized Conferencing Manipulation Protocol (CCMP) Call Flow Examples
draft-ietf-xcon-examples-06 draft-ietf-xcon-examples-07
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 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on January 13, 2011. This Internet-Draft will expire on April 28, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 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
skipping to change at page 2, line 20 skipping to change at page 2, line 20
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Working with CCMP . . . . . . . . . . . . . . . . . . . . . . 4 4. Working with CCMP . . . . . . . . . . . . . . . . . . . . . . 4
4.1. CCMP and the Data Model . . . . . . . . . . . . . . . . . 5 4.1. CCMP and the Data Model . . . . . . . . . . . . . . . . . 5
4.2. Using HTTP as a transport . . . . . . . . . . . . . . . . 6 4.2. Using HTTP as a transport . . . . . . . . . . . . . . . . 6
4.3. Conference Notifications . . . . . . . . . . . . . . . . . 10 4.3. Conference Notifications . . . . . . . . . . . . . . . . . 10
5. Conference Creation . . . . . . . . . . . . . . . . . . . . . 14 5. Conference Creation . . . . . . . . . . . . . . . . . . . . . 11
5.1. Basic Conference Creation . . . . . . . . . . . . . . . . 14 5.1. Basic Conference Creation . . . . . . . . . . . . . . . . 12
5.2. Conference Creation using Blueprints . . . . . . . . . . . 19 5.2. Conference Creation using Blueprints . . . . . . . . . . . 16
5.3. Conference Creation using User-Provided Conference 5.3. Conference Creation using User-Provided Conference
Information . . . . . . . . . . . . . . . . . . . . . . . 26 Information . . . . . . . . . . . . . . . . . . . . . . . 23
5.4. Cloning an Existing Conference . . . . . . . . . . . . . . 31 5.4. Cloning an Existing Conference . . . . . . . . . . . . . . 28
6. Conference Users Scenarios and Examples . . . . . . . . . . . 35 6. Conference Users Scenarios and Examples . . . . . . . . . . . 32
6.1. Adding a Party . . . . . . . . . . . . . . . . . . . . . . 35 6.1. Adding a Party . . . . . . . . . . . . . . . . . . . . . . 32
6.2. Muting a Party . . . . . . . . . . . . . . . . . . . . . . 39 6.2. Muting a Party . . . . . . . . . . . . . . . . . . . . . . 36
6.3. Conference Announcements and Recordings . . . . . . . . . 42 6.3. Conference Announcements and Recordings . . . . . . . . . 40
6.4. Monitoring for DTMF . . . . . . . . . . . . . . . . . . . 45 6.4. Monitoring for DTMF . . . . . . . . . . . . . . . . . . . 44
6.5. Entering a password-protected conference . . . . . . . . . 46 6.5. Entering a password-protected conference . . . . . . . . . 44
7. Sidebars Scenarios and Examples . . . . . . . . . . . . . . . 48 7. Sidebars Scenarios and Examples . . . . . . . . . . . . . . . 46
7.1. Internal Sidebar . . . . . . . . . . . . . . . . . . . . . 49 7.1. Internal Sidebar . . . . . . . . . . . . . . . . . . . . . 47
7.2. External Sidebar . . . . . . . . . . . . . . . . . . . . . 58 7.2. External Sidebar . . . . . . . . . . . . . . . . . . . . . 56
7.3. Private Messages . . . . . . . . . . . . . . . . . . . . . 65 7.3. Private Messages . . . . . . . . . . . . . . . . . . . . . 63
7.4. Observing and Coaching . . . . . . . . . . . . . . . . . . 69 7.4. Observing and Coaching . . . . . . . . . . . . . . . . . . 67
8. Removing Participants and Deleting Conferences . . . . . . . . 77 8. Removing Participants and Deleting Conferences . . . . . . . . 74
8.1. Removing a Party . . . . . . . . . . . . . . . . . . . . . 77 8.1. Removing a Party . . . . . . . . . . . . . . . . . . . . . 74
8.2. Deleting a Conference . . . . . . . . . . . . . . . . . . 80 8.2. Deleting a Conference . . . . . . . . . . . . . . . . . . 77
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 81 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 78
10. Security Considerations . . . . . . . . . . . . . . . . . . . 82 10. Security Considerations . . . . . . . . . . . . . . . . . . . 78
11. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 82 11. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 79
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 84 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 81
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 84 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 81
13.1. Normative References . . . . . . . . . . . . . . . . . . . 84 13.1. Normative References . . . . . . . . . . . . . . . . . . . 81
13.2. Informative References . . . . . . . . . . . . . . . . . . 84 13.2. Informative References . . . . . . . . . . . . . . . . . . 81
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 85 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 82
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 4, line 43 skipping to change at page 4, line 43
The rest of this document is organized as follows. Section 4 The rest of this document is organized as follows. Section 4
presents an overview on CCMP, together with some implementation- presents an overview on CCMP, together with some implementation-
related details and related matters like HTTP transport and related details and related matters like HTTP transport and
notifications. Section 5 presents the reader with examples showing notifications. Section 5 presents the reader with examples showing
the different approaches CCMP provides to create a new conference. the different approaches CCMP provides to create a new conference.
Section 6 more generally addresses the different user-related Section 6 more generally addresses the different user-related
manipulations that can be achieved by means of CCMP, by presenting a manipulations that can be achieved by means of CCMP, by presenting a
number of interesting scenarios. Section 7 addresses the several number of interesting scenarios. Section 7 addresses the several
scenarios that may involve the use of sidebars. Section 8 shows how scenarios that may involve the use of sidebars. Section 8 shows how
CCMP can be used to remove conferences and users from the system. CCMP can be used to remove conferences and users from the system.
Finally, IANA considerations are discussed in Section 9, while Finally, Section 10 provides a few details for what concerns the
Section 10 provides a few details for what concerns the Security Security Considerations when it comes to implementing CCMP.
Considerations when it comes to implementing CCMP.
4. Working with CCMP 4. Working with CCMP
This section aims at being a brief introduction to how the This section provides a brief introduction as to how the Centralized
Centralized Conferencing Manipulation Protocol (CCMP) Conferencing Manipulation Protocol (CCMP) [I-D.ietf-xcon-ccmp] works
and how it can be transported across a network. A typical CCMP
[I-D.ietf-xcon-ccmp] works and how it can be transported across a interaction focusing on relevant aspects of the client-server
network. Some words will be spent to describe a typical CCMP communication is described. Please note that this section assumes
interaction, by focusing on relevant aspects of the client-server the reader has an understanding of and has read the CCMP document.
communication. Please notice that this section is by no means to be This section is intended to help the reader understand the actual
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. protocol interactions.
First of all, some lines will be devoted to the protocol by itself in First a description of the protocol itself is provided Section 4.1,
Section 4.1, together with some recommendations from an including some implementation considerations. In Section 4.2, an
implementation point of view. In Section 4.2, instead, an effective effective CCMP interaction is presented by exploiting HTTP as a
CCMP interaction will be presented by exploiting HTTP as a transport. transport. Finally, notifications are described in Section 4.3.
Finally, a few words will be spent on notifications in Section 4.3.
Once done with these preliminary steps, some actual flows will be The document then presents and describes some actual flows in detail
presented and described in detail in the sections to follow. in the sections to follow.
4.1. CCMP and the Data Model 4.1. CCMP and the Data Model
CCMP is an XML-based protocol. It has been designed as a request/ CCMP is an XML-based protocol. It has been designed as a request/
response protocol. Besides, it is completely stateless, which means response protocol. It is completely stateless, which means
implementations can safely handle transactions independently from implementations can safely handle transactions independently from
each other. each other.
The protocol allows for the manipulation of conference objects and The protocol allows for the manipulation of conference objects and
related users. By manipulation it is implied, as the document related users. This manipulation allows a Conferencing Client
specifies, that a Conferencing Client (briefly CMCC in all the (briefly CMCC in all the following sections) to create, update and
following sections) can create, update and remove basically remove basically everything that is related to the objects handled by
everything that is related to the objects handled by a conferencing a conferencing system. This is reflected in the allowed operations
system. This is reflected in the allowed operations (retrieve, (retrieve, create, update, delete) and the specified request types
create, update, delete) and the specified request types (ranging from (ranging from the manipulation of blueprints and conferences to users
the manipulation of blueprints and conferences to users and and sidebars). For instance, CCMP provides ways to:
sidebars). For instance, CCMP provides ways to:
o retrieve the list of registered and/or active conferences in the o retrieve the list of registered and/or active conferences in the
system; system;
o create new conferences by exploiting to several different o create new conferences by exploiting to several different
approaches; approaches;
o add/remove users to/from a conference; o add/remove users to/from a conference;
o update a conference with respect to all of its aspects; o update a conference with respect to all of its aspects;
and so on. and so on.
It is worthwile to note that, while CCMP acts as the means to While CCMP acts as the means to manipulate conference objects, CCMP
manipulate conference objects, its specification does not define does not define these conference objects. A separate document
these objects as well. In fact, a separate document has been written specifies how a conference object and all its components have to be
to specify how a conference object and all its components have to be
constructed: the Conference Information Data Model for Centralized constructed: the Conference Information Data Model for Centralized
Conferencing (XCON) [I-D.ietf-xcon-common-data-model]. CCMP, Conferencing (XCON) [I-D.ietf-xcon-common-data-model]. CCMP,
according to the request type and the related operation, carries depending upon the request type and the related operation, carries
pieces of conference objects (or any object as a whole) according to pieces of conference objects (or any object as a whole) according to
the aforementioned specification. This means that any implementation the aforementioned specification. This means that any implementation
aiming at being compliant with CCMP has to make sure that the aiming at being compliant with CCMP has to make sure that the
transported objects are completely compliant with the Data Model transported objects are completely compliant with the Data Model
specification and coherent with the constraints defined therein. To specification and coherent with the constraints defined therein. To
make this clearer, there are elements that are mandatory in a make this clearer, there are elements that are mandatory in a
conference object: issuing a syntactically correct CCMP request that conference object: issuing a syntactically correct CCMP request that
carries a wrong conference object is doomed to result in a failure. carries a wrong conference object is doomed to result in a failure.
For this reason, it is suggested that the interested implementors For this reason, it is suggested that the interested implementors
take special care in carefully checking the Data Model handlers as take special care in carefully checking the Data Model handlers as
well in order to avoid potential mistakes. well in order to avoid potential mistakes.
Of course, there are cases where a mandatory element in the Data However, there are cases when a mandatory element in the Data Model
Model cannot be assigned in a conference object by a CCMP user. For cannot be assigned in a conference object by a CCMP user. For
instance, a CMCC may be requesting the direct creation of a new example, a CMCC may be requesting the direct creation of a new
conference: in this case, a conference object assumes an 'entity' conference: in this case, a conference object assumes an 'entity'
element uniquely identifying the conference to be in place. Anyway, element uniquely identifying the conference to be in place. Thus,
the CMCC has no way to know a priori what the entity will be like, the CMCC has no way to know a priori what the entity will be, since
considering it will only be generated by the ConfS after the request. it is generated by the ConfS after the request. For scenarios like
For scenarios like this one, the CCMP specification envisages the use this one, the CCMP specification describes the use of a dedicated
of a dedicated placeholder wildcard to make the conference object placeholder wildcard (i.e., AUTO_GENERATE_X, where X is an integer)
compliant with the Data Model: the wildcard would then be replaced by to make the conference object compliant with the Data Model: the
the ConfS with the right value. wildcard would then be replaced by the ConfS with the right value.
4.2. Using HTTP as a transport 4.2. Using HTTP as a transport
CCMP requests and responses can be transported from a client to a CCMP requests and responses can be transported from a client to a
server and viceversa through several ways, being the protocol server and viceversa in several ways, since the protocol
specification agnostic with respect to the transport in use. specification is agnostic with respect to the transport. However,
Nevertheless, in [I-D.ietf-xcon-ccmp], more focus is given on HTTP as [I-D.ietf-xcon-ccmp] requires that implementations support HTTP. The
a solution for this transport matter, and a whole chapter is devoted following provides a brief explanation, from a more practical point
in the document to how HTTP can be used for it. The following lines of view, of how HTTP might be exploited to carry CCMP messages. In
will provide a brief explanation, from a more practical point of this document, however, all the call flows presented just show the
view, of how HTTP might be exploited to carry CCMP messages. In this CCMP interactions, without describing how the messages are
document, however, all the call flows herein presented will just show transported.
the CCMP interactions, without talking about how the messages could
have gone across the network.
In case HTTP is used as a transport, the specification is very clear When HTTP is used as a transport, a CMCC sends his request as part of
with respect to how the interaction has to occur. Specifically, a an HTTP POST message, and the ConfS would reply with an HTTP 200
CMCC is assumed to send his request as part of an HTTP POST message, message. In both cases, the HTTP messages would have the CCMP
and the ConfS would reply by means of an HTTP 200 message. In both messages as payload, which would be reflected in the Content-Type
cases, the HTTP messages would have the CCMP messages as payload, message (application/ccmp+xml). Figure 1 presents a ladder diagram
which would be reflected in the Content-Type message (application/ of such interaction, which is followed by a dump of the exchanged
ccmp+xml). Figure 1 presents a ladder diagram of such interaction, HTTP messages for further analysis:
which is followed by a dump of the exchanged HTTP messages for
further analysis:
CMCC ConfS CMCC ConfS
| | | |
| 1. HTTP POST (CCMP request) | | 1. HTTP POST (CCMP request) |
|--------------------------------------------->| |--------------------------------------------->|
| | | |
| |--+ Parse request, | |--+ Parse request,
| | | update object | | | update object
| |<-+ and reply | |<-+ and reply
| | | |
skipping to change at page 7, line 31 skipping to change at page 7, line 26
| | | |
|--+ Parse response and | |--+ Parse response and |
| | update local copy | | | update local copy |
|<-+ of conference object | |<-+ of conference object |
| | | |
. . . .
. . . .
Figure 1: CCMP on HTTP Figure 1: CCMP on HTTP
As it can be seen in the protocol dump in the following lines, the Per the protocol dump in the following lines, the CMCC has issued a
CMCC has issued a CCMP request (a blueprintRequest with a 'retrieve' CCMP request (a blueprintRequest with a 'retrieve' operation) towards
operation) towards the Conferencing Server (ConfS). The request has the Conferencing Server (ConfS). The request has been carried as
been carried as payload of an HTTP POST (message 1.) towards a payload of an HTTP POST (message 1.) towards a previously known
previously known location. The mandatory 'Host' header has been location. The mandatory 'Host' header has been specified, and the
specified, and the 'Content-Type' header has been correctly set as 'Content-Type' header has been correctly set as well (application/
well (application/ccmp+xml). ccmp+xml).
The ConfS, in turn, has handled the request and replied accordingly. The ConfS, in turn, has handled the request and replied accordingly.
The response (a blueprintResponse with a successful response code) The response (a blueprintResponse with a successful response code)
has been carried as payload of an HTTP 200 OK (message 2.). As has been carried as payload of an HTTP 200 OK (message 2.). As
before, the 'Content-Type' header has been correctly set before, the 'Content-Type' header has been correctly set
(application/ccmp+xml). (application/ccmp+xml).
1. CMCC -> ConfS (HTTP POST, CCMP request) 1. CMCC -> ConfS (HTTP POST, CCMP request)
------------------------------------------ ------------------------------------------
POST /Xcon/Ccmp HTTP/1.1 POST /Xcon/Ccmp HTTP/1.1
skipping to change at page 8, line 39 skipping to change at page 8, line 31
Server: Sun GlassFish Communications Server 1.5 Server: Sun GlassFish Communications Server 1.5
Content-Type: application/ccmp+xml;charset=ISO-8859-1 Content-Type: application/ccmp+xml;charset=ISO-8859-1
Content-Length: 1652 Content-Length: 1652
Date: Thu, 04 Feb 2010 14:47:56 GMT Date: Thu, 04 Feb 2010 14:47:56 GMT
<?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-blueprint-response-message-type">
xsi:type="ccmp:ccmp-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:AudioRoom@example.com</confObjID> <confObjID>xcon:AudioRoom@example.com</confObjID>
<operation>retrieve</operation> <operation>retrieve</operation>
<response-code>200</response-code> <response-code>200</response-code>
<response-string>success</response-string> <response-string>success</response-string>
<ccmp:blueprintResponse> <ccmp:blueprintResponse>
<blueprintInfo entity="xcon:AudioRoom@example.com"> <blueprintInfo entity="xcon:AudioRoom@example.com">
<info:conference-description> <info:conference-description>
<info:display-text>AudioRoom</info:display-text> <info:display-text>AudioRoom</info:display-text>
<info:maximum-user-count>2 <info:maximum-user-count>2</info:maximum-user-count>
</info:maximum-user-count>
<info:available-media> <info:available-media>
<info:entry label="audioLabel"> <info:entry label="audioLabel">
<info:type>audio</info:type> <info:type>audio</info:type>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description> </info:conference-description>
<info:users> <info:users>
<xcon:join-handling>allow</xcon:join-handling> <xcon:join-handling>allow</xcon:join-handling>
</info:users> </info:users>
<xcon:floor-information> <xcon:floor-information>
skipping to change at page 9, line 28 skipping to change at page 9, line 18
</xcon:floor-request-handling> </xcon:floor-request-handling>
<xcon:conference-floor-policy> <xcon:conference-floor-policy>
<xcon:floor id="audioLabel"></xcon:floor> <xcon:floor id="audioLabel"></xcon:floor>
</xcon:conference-floor-policy> </xcon:conference-floor-policy>
</xcon:floor-information> </xcon:floor-information>
</blueprintInfo> </blueprintInfo>
</ccmp:blueprintResponse> </ccmp:blueprintResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Just for the sake of completeness, a few words will be spent about For completeness, the following provides some details of the CCMP
the occurred CCMP interaction as well. In fact, despite the interaction. Despite the simplicity of the request, this flow
simplicity of the request, this flow already provides some relevant provides some relevant information on how CCMP messages are built.
information on how CCMP messages are built. Specifically, both the Specifically, both the request and the response share a subset of the
request and the response share a subset of the message: message:
o confUserID: this element, provided by the CMCC, refers to the o confUserID: this element, provided by the CMCC, refers to the
requester by means of his XCON-USERID; except in a few scenarios requester by means of his XCON-USERID; except in a few scenarios
(presented in the following sections) this element must always (presented in the following sections) this element must always
contain a valid value; contain a valid value;
o confObjID: this element refers to the target conference object, o confObjID: this element refers to the target conference object,
according to the request in place; according to the request in place;
o operation: this element specifies the operation the CMCC wants to o operation: this element specifies the operation the CMCC wants to
perform according to the specific request type. perform according to the specific request type.
Besides those elements, the CMCC (let's say Alice, whose 'confUserID' Besides those elements, the CMCC (let's say Alice, whose 'confUserID'
is 'xcon-userid:Alice@example.com') has also provided an additional is 'xcon-userid:Alice@example.com') has also provided an additional
element, 'blueprintRequest'. The name of that element varies element, 'blueprintRequest'. The name of that element varies
according to the request type the CMCC is interested into. In this according to the request type the CMCC is interested in. In this
specific scenario, the CMCC was interested in acquiring details specific scenario, the CMCC was interested in acquiring details
concerning a specific blueprint (identified by its XCON-URI concerning a specific blueprint (identified by its XCON-URI
'xcon:AudioRoom@example.com', as reflected in the provided 'xcon:AudioRoom@example.com', as reflected in the provided
'confObjID' target element), and so the request consisted in an empty 'confObjID' target element), and so the request consisted in an empty
'blueprintRequest' element. As it will be clearer in the following 'blueprintRequest' element. It will be clearer in the following
sections, different request types may require different elements and, sections that different request types may require different elements
as a consequence, different content. and, as a consequence, different content.
Considering the request was a 'blueprintRequest', the ConfS has Considering the request was a 'blueprintRequest', the ConfS has
replied with a 'blueprintResponse' element. This element includes a replied with a 'blueprintResponse' element. This element includes a
complete dump of the conference object (compliant with the Data complete dump of the conference object (compliant with the Data
Model) describing the requested blueprint. Model) describing the requested blueprint.
This section won't delve in additional details for what concerns this Without providing additional details of this interaction, it is worth
interaction. It is just worth noticing that this was the example of noting that this was the example of the simplest CCMP communication
the simplest CCMP communication that could take place between a CMCC that could take place between a CMCC and a ConfS, a blueprintRequest:
and a ConfS, a blueprintRequest: this scenario will be described in this scenario will be described in more detail in Section 5.2.
more detail in Section 5.2.
4.3. Conference Notifications 4.3. Conference Notifications
The XCON framework [RFC5239] presents several different possible The XCON framework [RFC5239] identifies several different possible
protocol interactions between a conferencing server and a protocol interactions between a conferencing server and a
conferencing client. One of those interactions is generically called conferencing client. One of those interactions is generically called
"Notification Protocol", implementing a notification service for all "Notification Protocol" providing a mechanism for all clients
clients interested in being informed by the server whenever something interested in being informed by the server whenever something
relevant happens in a conference. While at first glance it may relevant happens in a conference. When SIP is used as the call
appear that such a functionality should belong to a conference signaling protocol in a CCMP implementation, the XCON Event Package
control protocol, such feature has been specifically marked as out of [I-D.ietf-xcon-event-package], which extends the SIP Event Package
scope in CCMP. As a consequence, CCMP has been conceived as a for Conference State [RFC4575] must be supported. A SIP client uses
request/answer protocol, and in fact no ways to provide notifications the SIP SUBSCRIBE message for the XCON Event Package to subscribe to
to clients have been introduced in the specification. notifications related to a specific conference. A SIP client would
receive notifications describing all the changes to the document via
Nevertheless, the CCMP document by itself has a brief section SIP NOTIFY message. An example ladder diagram is presented in
presenting some typical ways notifications might be managed. This Figure 2: in this figure, we assume a CMCC has updated a conference
example document does not foster one rather than another, and all the object, and a previously subscribed SIP client is notified of the
flows will always generically present a notification being involved, update.
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 CMCC ConfS UAC
| | | | | |
| | 1. SIP SUBSCRIBE | | | 1. SIP SUBSCRIBE |
| |<--------------------------| | |<--------------------------|
| Handle +--| | | Handle +--| |
| new | | | | new | | |
| subscription +->| 2. SIP 200 OK | | subscription +->| 2. SIP 200 OK |
| |-------------------------->| | |-------------------------->|
| | | | | |
skipping to change at page 11, line 40 skipping to change at page 11, line 34
| | 5. SIP NOTIFY (changes) | | | 5. SIP NOTIFY (changes) |
| |-------------------------->| | |-------------------------->|
| | 6. SIP 200 OK | | | 6. SIP 200 OK |
| |<--------------------------| | |<--------------------------|
| | | | | |
. . . . . .
. . . . . .
Figure 2: XCON Event Package: SIP notifications Figure 2: XCON Event Package: SIP notifications
While simple and effective, this solution has a drawback: it assumes The detailed flows in this document generically present a
that all clients to be notified have a SIP stack. In fact, the notification, when appropriate, but do not include the SIP messaging
approach relies on the SIP SUBSCRIBE/NOTIFY mechanism. This means details.
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 signalling 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 such 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.
5. Conference Creation 5. Conference Creation
This section starts the sequence of call flows of typical XCON- This section provides details associated with the various ways in
related scenarios provided in this document. Specifically, it which a conference can be created using CCMP and the XCON framework
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. This also applies to CCMP, whose flows are related to the details. This also applies to CCMP, whose flows are related to the
protocol alone, hiding any detail concerning the transport that may protocol alone, hiding any detail concerning the transport that may
have been used (e.g. HTTP). However, for clarification purposes, have been used (e.g. HTTP). However, for clarification purposes,
the first example Section 5.1 provides the details of the media the first example Section 5.1 provides the details of the media
control messaging along with an example of the standard annotation control messaging with the standard annotation used throughout the
used throughout the remainder of this document. In subsequent flows, remainder of this document. In subsequent flows, only this
only this annotation (identified by lower case letters) is included annotation (identified by lower case letters) is included and the
and the reader is encouraged to refer to the call flows in the reader is encouraged to refer to the call flows in the relevant
relevant documents for details about the other protocols. The documents for details about the other protocols. The annotations for
annotations for the call signaling are on the left side of the the call signaling are on the left side of the conferencing server
conferencing server vertical bar and those for the media control vertical bar and those for the media control messaging are on the
messaging are on the right side. right side.
5.1. Basic Conference Creation 5.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 one already
in the request) and the data for the conference object in the present 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 This example also adds the issuing user to the conference upon
also add the issuing user to the conference upon creation (e.g., creation with the "method" attribute in the <target> element of
"method" attribute in the <target> element of <allowed-users-list> <allowed-users-list> set to "dial out".
may be set to "dial out" for this client, based on the particular
conferencing systems default). This is exactly the case depicted in
the figure, which is presented to enrich the scenario.
The specific data for the conference object are returned in the The specific data for the conference object is 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 these 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 the CCMP additional flows. Please notice that, according to the CCMP
specification, the return 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 not included in the response, a
retrieve of the returned "confObjID" can be triggered to provide the subsequent confRequest/retrieve of the returned "confObjID" can be
requesting client with the detailed conference description. triggered to provide the requesting client with the detailed
conference description.
Clients that are not XCON-aware can 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] (using the
signaling interface to the conference focus as described in signaling interface to the conference focus as described in
[RFC4579]), or other supported signaling protocols, being XCON [RFC4579]), or other supported signaling protocols, being XCON
agnostic with respect to them. However, these details are not shown agnostic with respect to them. However, these details are not shown
in the message flows. The message flows in this document identify in the message flows. The message flows in this document identify
the point in the message flows at which this signaling occurs via the the point in the message flows at which this signaling occurs via the
lower case letter items (i.e., (a)...(x)) along with the appropriate lower case letter items (i.e., (a)...(x)) along with the appropriate
text for the processing done by the conferencing server. text for the processing done by the conferencing server.
As anticipated at the beginning of this section, this example also As previously described, this example also shows how the conferencing
shows how the conferencing system may make use of other standard system may make use of other standard protocol components for
components to make available its functionality. An example of that complete functionality. An example of that is the MEDIACTRL
is the MEDIACTRL specification, which allows the conferencing system specification, which allows the conferencing system to configure
to configure conference mixes, IVR dialogs and all sort of media- conference mixes, IVR dialogs and all sort of media-related
related interactions an application like this may need. So, just to interactions an application like this may need. In order to provide
provide the reader with some insight on these interactions, the the reader with some insight on these interactions, the conferencing
conferencing system also configures and starts a mixer via MEDIACTRL system in this example also configures and starts a mixer via
as soon as the conference is created (transactions A1 and A2), and MEDIACTRL as soon as the conference is created (transactions A1 and
attaches clients to it when necessary (e.g. when CMCC1 joins the A2), and attaches clients to it when necessary (e.g. when CMCC1 joins
conference by means of SIP signaling, its media channels are attached the conference by means of SIP signaling, its media channels are
to the Media Server using MEDIACTRL in B1/B2). attached to the Media Server using MEDIACTRL in B1/B2). Note, that
the MEDIACTRL interfaces are NOT shown in the remaining call flows in
this document, but rather follow the same annotation as with the SIP
signaling such that (b) correlates with the A1 and A2 transactions
and (d) correlates with the B1 and B2 transactions.
CMCC1 CMCC2 CMCCx ConfS MS 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 |
skipping to change at page 17, line 4 skipping to change at page 15, 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 4: Create Basic Conference - Complete flow Figure 3: Create Basic Conference - Complete flow
"Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS
| | | |
|(1)confRequest(confUserID, create) |
|-------------------------------------->|
| | | |
| | (a)Create +---|
| | |Conf | |
| | |Object | |
| | |& IDs +-->|
| | | |--+ (b) MS
| | | | | creates
| | | | | conf and
| | | |<-+ its ID
| | | | (confid=Y)
|(2)confResponse(confUserID, confObjID |
| create, 200, success, |
| version, confInfo) |
| | | |
|<--------------------------------------|
| | | |
| | | |
| | (c) Focus +---|
| | sets up | |
| | signaling | |
| | to CMCC1 +-->|
| | | |
| | | |--+(d) MS joins
| | | | | CMCC1 &
| | | |<-+ conf Y
|<<###################################>>|
| CMCC1 is mixed in the conference |
|<<###################################>>|
| | | |
|**CMCC1 then manipulates conference****|
|** data and add addt'l users, etc. ***|
' ' ' '
' ' ' '
' ' ' '
-
Figure 5: Create Basic Conference - Annotated Flow
1. confRequest/create message (Alice creates a default conference) 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>
<ccmp:confRequest/> <ccmp:confRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. confResponse/create message ("success", created conference 2. confResponse/create message ("success", created conference
object returned) 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>
<confObjID>xcon:8977794@example.com</confObjID> <confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
skipping to change at page 18, line 48 skipping to change at page 16, line 4
<ccmp:confResponse> <ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com"> <confInfo entity="xcon:8977794@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
Default conference initiated by Alice Default conference initiated by Alice
</info:display-text> </info:display-text>
<info:conf-uris> <info:conf-uris>
<info:entry> <info:entry>
<info:uri> <info:uri>
xcon:8977794@example.com xcon:8977794@example.com
</info:uri> </info:uri>
<info:display-text> <info:display-text>
Conference XCON-URI Conference XCON-URI
</info:display-text> </info:display-text>
</info:entry>
</info:entry>
</info:conf-uris> </info:conf-uris>
<info:maximum-user-count>10 <info:maximum-user-count>10
</info:maximum-user-count> </info:maximum-user-count>
<info:available-media> <info:available-media>
<info:entry label="11"> <info:entry label="11">
<info:type>audio</info:type> <info:type>audio</info:type>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
</info:conference-description>
<info:conference-state> <info:conference-state>
<active>false</active> <info:active>false</info:active>
</info:conference-state> </info:conference-state>
</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 6: Create Basic Conference (Annotated) Detailed Messaging Figure 4: Create Basic Conference Detailed Messaging
5.2. Conference Creation using Blueprints 5.2. Conference Creation using Blueprints
The previous example showed the creation of a new conference using The previous example showed the creation of a new conference using
default values. This means the client provided no information about default values. This means the client provided no information about
how she wanted the conference to be like. Anyway, the XCON framework how she wanted the conference to be created. The XCON framework (and
(and CCMP as a consequence) allows for the exploitation of templates. CCMP as a consequence) allows for the implementation of templates.
These templates are called "conference blueprints", and are basically These templates are called "conference blueprints", and are basically
conference objects with pre-defined settings. This means that a conference objects with pre-defined settings. This means that a
client might get one of these blueprints, choose the one that more client might get a list of blueprints, choose the one that more fits
fits his needs, and use the chosen blueprint to create a new his needs, and use the chosen blueprint to create a new conference.
conference.
This section addresses exactly this scenario, and Figure 7 provides This section Figure 5 provides an example of one client, "Alice",
an example of one client, "Alice", discovering the conference discovering the conference blueprints available for a particular
blueprints available for a particular conferencing system and conferencing system and creating a conference based on the desired
creating a conference based on the desired blueprint. In particular, blueprint. In particular, Alice is interested in those blueprints
Alice is interested in those blueprints suitable to represent a suitable to represent a "video-conference", i.e. a conference in
"video-conference", i.e. a conference in which both audio and video which both audio and video are available, so she makes use of the
are available, so she exploits the filter mechanism envisioned by filter mechanism provided by CCMP to make a selective blueprints
CCMP to make a selective blueprints retrieve request. This results retrieve request. This results in three distinct CCMP transactions.
in three distinct CCMP transactions.
CMCC "Alice" ConfS CMCC "Alice" ConfS
| | | |
| (1) blueprintsRequest | | (1) blueprintsRequest |
| (confUserID,xpathFilter) | | (confUserID,xpathFilter) |
|------------------------------>| |------------------------------>|
| | | |
| (2) blueprintsResponse | | (2) blueprintsResponse |
| (confUserID, | | (confUserID, |
| 200, success, | | 200, success, |
skipping to change at page 21, line 14 skipping to change at page 18, line 15
|(6) confResponse | |(6) confResponse |
| (confUserID, confObjID*, | | (confUserID, confObjID*, |
| create, 200, success) | | create, 200, success) |
|<------------------------------| |<------------------------------|
| | | |
| | | |
| | | |
. . . .
. . . .
Figure 7: Client Creation of Conference using Blueprints Figure 5: Client Creation of Conference using Blueprints
1. Alice first sends a "blueprintsRequest" message to the 1. Alice first sends a "blueprintsRequest" message to the
conferencing system identified by the conference server discovery conferencing system identified by the conference server discovery
process. This request contains the "confUserID" of the user process. This request contains the "confUserID" of the user
issuing the request (Alice's XCON-USERID) and the "xpathFilter" issuing the request (Alice's XCON-USERID) and the "xpathFilter"
parameter by which Alice specifies she desires to obtain only parameter by which Alice specifies she desires to obtain only
blueprints providing support for both audio and video: for this blueprints providing support for both audio and video: for this
purpose, the xpath query contained in this field is: "/ purpose, the xpath query contained in this field is: "/
conference-info[conference-description/available-media/entry/ conference-info[conference-description/available-media/entry/
type='audio' and conference-description/available-media/entry/ type='audio' and conference-description/available-media/entry/
type='video'"] . Upon receipt of the "blueprintsRequest", the type='video'"] . Upon receipt of the "blueprintsRequest", the
conferencing system would first control, on the basis of the conferencing system would first ensure, on the basis of the
"confUserID" parameter, that Alice has the appropriate authority "confUserID" parameter, that Alice has the appropriate authority
based on system policies to receive the requested kind of based on system policies to receive the requested kind of
blueprints supported by that system. blueprints supported by that system.
2. All blueprints that Alice is authorized to use are returned in a 2. All blueprints that Alice is authorized to use are returned in a
"blueprintsResponse" message in the "blueprintsInfo" element. "blueprintsResponse" message in the "blueprintsInfo" element.
3. Upon receipt of the "blueprintsResponse" containing the 3. Upon receipt of the "blueprintsResponse" containing the
blueprints, Alice determines which blueprint to use for the blueprints, Alice determines which blueprint to use for the
conference to be created. Alice sends a "blueprintRequest" conference to be created. Alice sends a "blueprintRequest"
skipping to change at page 22, line 14 skipping to change at page 19, line 14
6. Upon receipt of the "confRequest" message with a "create" 6. Upon receipt of the "confRequest" message with a "create"
operation, the conferencing system uses the received blueprint to operation, the conferencing system uses the received blueprint to
clone a conference, allocating a new XCON-URI (again called clone a conference, allocating a new XCON-URI (again called
"confObjID*" in the example). The conferencing server then sends "confObjID*" in the example). The conferencing server then sends
a "confResponse" message including the new "confObjID*" a "confResponse" message including the new "confObjID*"
associated with the newly created conference instance. Upon associated with the newly created conference instance. Upon
receipt of the "confResponse" message, Alice can now add other receipt of the "confResponse" message, Alice can now add other
users to the conference . users to the conference .
1. blueprintsRequest message (Alice requires the list of the 1. blueprintsRequest message (Alice requires the list of the
available blueprints with video support) available blueprints with video support)
<?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 xsi:type="ccmp:ccmp-blueprints-request-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <confUserID>xcon-userid:Alice@example.com</confUserID>
xsi:type="xcon:ccmp-blueprints-request-message-type"> <ccmp:blueprintsRequest>
<confUserID>xcon-userid:Alice@example.com</confUserID> <xpathFilter>/conference-info[conference-description/
<ccmp:blueprintsRequest> available-media/entry/type='audio'
<xpathFilter>/conference-info and
[conference-description/ conference-description/available-media/entry/type='video']
available-media/entry/type='audio' and </xpathFilter>
conference-description/available-media/ </ccmp:blueprintsRequest>
entry/type='video'] </ccmpRequest>
</xpathFilter> </ccmp:ccmpRequest>
</ccmp:blueprintsRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. blueprintsResponse message (the server provides a 2. blueprintsResponse message (the server provides a
descriptions of the available blueprints descriptions of the available blueprints
fitting Alice's request) fitting Alice's request)
<?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-blueprints-response-message-type"> xsi:type="ccmp:ccmp-blueprints-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID> <confUserID>xcon-userid:Alice@example.com</confUserID>
<response-code>200</response-code> <response-code>200</response-code>
<response-string>success</response-string> <response-string>success</response-string>
<ccmp:blueprintsResponse> <ccmp:blueprintsResponse>
<blueprintsInfo> <blueprintsInfo>
<info:entry> <info:entry>
<info:uri>xcon:VideoRoom@example.com</info:uri> <info:uri>xcon:VideoRoom@example.com</info:uri>
<info:display-text>VideoRoom</info:display-text> <info:display-text>VideoRoom</info:display-text>
<info:purpose>Video Room: <info:purpose>Video Room:
conference room with public access, 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, where both audio and video are available,
4 users can talk and be seen at the same time, only one user can talk
and the floor requests are automatically accepted.
</info:purpose> </info:purpose>
</info:entry> </info:entry>
<info:entry> </blueprintsInfo>
<info:uri>xcon:VideoConference1@example.com </ccmp:blueprintsResponse>
</info:uri> </ccmpResponse>
<info:display-text>VideoConference1 </ccmp:ccmpResponse>
</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 3. blueprintRequest/retrieve message (Alice wants the
"VideoRoom" blueprint) "VideoRoom" blueprint)
<?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-blueprint-request-message-type">
xsi:type="ccmp:ccmp-blueprint-request-message-type"> <confUserID>xcon-userid:Alice@example.com</confUserID>
<confUserID>xcon-userid:Alice@example.com</confUserID> <confObjID>xcon:VideoRoom@example.com</confObjID>
<confObjID>xcon:VideoRoom@example.com</confObjID> <operation>retrieve</operation>
<operation>retrieve</operation> <ccmp:blueprintRequest/>
<ccmp:blueprintRequest/> </ccmpRequest>
</ccmpRequest> </ccmp:ccmpRequest>
</ccmp:ccmpRequest> 4. blueprintResponse/retrieve message ("VideoRoom"
conference object returned)
4. blueprintResponse/retrieve message ("VideoRoom" <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
conference object returned) <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>retrieve</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<ccmp:blueprintResponse>
<blueprintInfo entity="xcon:VideoRoom@example.com">
<info:conference-description>
<info:display-text>VideoRoom</info:display-text>
<info:maximum-user-count>4</info:maximum-user-count>
<info:available-media>
<info:entry label="audioLabel">
<info:type>audio</info:type>
</info:entry>
<info:entry label="videoLabel">
<info:type>video</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>confirm
</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="audioFloor">
<xcon:media-label>audioLabel</xcon:media-label>
</xcon:floor>
<xcon:floor id="videoFloor">
<xcon:media-label>videoLabel</xcon:media-label>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</blueprintInfo>
</ccmp:blueprintResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
5. confRequest/create message (Alice clones the "VideoRoom" blueprint)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-blueprint-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>retrieve</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<ccmp:blueprintResponse>
<blueprintInfo entity="xcon:VideoRoom@example.com">
<info:conference-description>
<info:display-text>VideoRoom</info:display-text>
<info:maximum-user-count>4</info:maximum-user-count>
<info:available-media>
<info:entry label="audioLabel">
<info:type>audio</info:type>
</info:entry>
<info:entry label="videoLabel">
<info:type>video</info:type>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>confirm
</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="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 "VideoRoom" blueprint)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<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>
<confObjID>xcon:VideoRoom@example.com</confObjID> <confObjID>xcon:VideoRoom@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<ccmp:confRequest/> <ccmp:confRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
6. confResponse/create message (cloned conference 6. confResponse/create message (cloned conference
object returned) 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>
<confObjID>xcon:8977794@example.com</confObjID> <confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation> <operation>create</operation>
<response-code>200</response-code> <response-code>200</response-code>
<response-string>success</response-string> <response-string>success</response-string>
<version>1</version> <version>1</version>
<ccmp:confResponse> <ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com"> <confInfo entity="xcon:8977794@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
New conference by Alice cloned from VideoRoom New conference by Alice cloned from VideoRoom
</info:display-text> </info:display-text>
<info:conf-uris> <info:conf-uris>
<info:entry> <info:entry>
<info:uri> <info:uri>
xcon:8977794@example.com xcon:8977794@example.com
</info:uri> </info:uri>
<info:display-text> <info:display-text>
conference xcon-uri conference xcon-uri
</info:display-text>
<xcon:conference-password>
8601
</info:display-text> </xcon:conference-password>
<xcon:conference-password> </info:entry>
8601 </info:conf-uris>
</xcon:conference-password> <info:maximum-user-count>10</info:maximum-user-count>
</info:entry> <info:available-media>
</info:conf-uris> <info:entry label="11">
<info:maximum-user-count>10 <info:type>audio</info:type>
</info:maximum-user-count> </info:entry>
<info:available-media> <info:entry label="12">
<info:entry label="11"> <info:type>video</info:type>
<info:type>audio</info:type> </info:entry>
</info:entry> </info:available-media>
<info:entry label="12"> </info:conference-description>
<info:type>video</info:type> <info:users>
</info:entry> <xcon:join-handling>allow</xcon:join-handling>
</info:available-media> </info:users>
</info:conference-description> <xcon:floor-information>
<info:users> <xcon:floor-request-handling>
<xcon:join-handling>allow</xcon:join-handling> confirm</xcon:floor-request-handling>
</info:users> <xcon:conference-floor-policy>
<xcon:floor-information> <xcon:floor id="1">
<xcon:floor-request-handling> <xcon:media-label>11</xcon:media-label>
confirm</xcon:floor-request-handling> </xcon:floor>
<xcon:conference-floor-policy> <xcon:floor id="2">
<xcon:floor id="11"/> <xcon:media-label>12</xcon:media-label>
<xcon:floor id="12"/> </xcon:floor>
</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 8: Create Conference (Blueprint) Detailed Messaging Figure 6: Create Conference (Blueprint) Detailed Messaging
5.3. Conference Creation using User-Provided Conference Information 5.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. of the requesting entity.
This approach allows for a client (in this example Alice) to This approach allows for a client (in this example Alice) to
completely describe how the conference object should look like, completely describe what the conference object should look like,
without just relying on defaults or blueprints: i.e. which media without relying on defaults or blueprints: e.g, which media should be
should be available, which should be the topic, the users allowed to available, the topic, the users allowed to join, any scheduling-
join, any scheduling-related information and so on. This can be related information and so on. This can be done by providing in the
done, as anticipated, by providing in the creation request a full creation request a full conference object for the server to parse.
conference object for the server to parse.
This "confInfo" parameter must comply of course with the Data Model This "confInfo" parameter must comply with the Data Model
specification. This means that its "entity" attribute is mandatory, specification. This means that the "entity" attribute is mandatory,
and cannot be missing in the document. Nevertheless, considering in and cannot be missing in the document. However, in this example the
this example the client is actually requesting the creation of a new client is actually requesting the creation of a new conference, which
conference, which doesn't exist yet, this "entity" attribute cannot doesn't exist yet, so the "entity" attribute is unknown. As
be set to a valid value. This is related to an issue already discussed in Section 4.1, the CCMP protocol allows for the use of a
anticipated in Section 4.1. To cope with this, the CCMP protocol wildcard placeholder. This placeholder
fosters the use of a wildcard placeholder: this placeholder ("xcon:AUTO_GENERATE_1@example.com" in the example) is only to ensure
("xcon:AUTO_GENERATE_1@example.com" in the example) has the only aim the "confInfo" element is compliant with the Data Model, and would
of making the "confInfo" element compliant with the Data Model, and subsequently be replaced by the conferencing system with the actual
would subsequently be replaced by the conferencing system with the value. Thus, when the conferencing system actually creates the
actual value. This means that, as soon as the conferencing system conference, a valid "entity" value is created for it as well, which
actually creates the conference, a valid "entity" value is created takes the place of the wildcard value when the actual conference
for it as well, which would take the place of the wildcard when object provided by the client is populated.
completing the actual conference object provided by the client.
To give a flavour of what could be added to the conference object, we To give a flavour of what could be added to the conference object, we
assume Alice is also interested in providing scheduling-related assume Alice is also interested in providing scheduling-related
information. So, in this example, Alice also specifies by the information. So, in this example, Alice also specifies by the
<conference-time> element included in the "confInfo" that the <conference-time> element included in the "confInfo" that the
conference she wants to create has to occur on a certain date conference she wants to create has to occur on a certain date
spanning from a certain start time to a certain stop time and has to spanning from a certain start time to a certain stop time and has to
be replicated weekly. be replicated weekly.
Moreover, Alice indicates by means of the <allowed-users-list> that Moreover, Alice indicates by means of the <allowed-users-list> that
skipping to change at page 27, line 47 skipping to change at page 24, line 45
Once Alice has prepared the "confInfo" element and sent it as part of Once Alice has prepared the "confInfo" element and sent it as part of
her request to the server, if the conferencing system can support 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. We assume the request results in the creation of a conference. We assume the
request has been successful, and as a consequence XCON-URI in the request has been successful, and as a consequence XCON-URI in the
form of the "confObjID" parameter and the XCON-USERID in the form of form of the "confObjID" parameter and the XCON-USERID in the form of
the "confUserID" parameter (again, the same as the requesting entity) the "confUserID" parameter (again, the same as the requesting entity)
are returned in the "confResponse" message. are returned in the "confResponse" message.
In this example, we choose not to return the created conference In this example, the created conference object is not returned in the
object in the successful "confResponse" in the "confInfo" parameter. successful "confResponse" in the "confInfo" parameter. Nevertheless,
Nevertheless, Alice could still retrieve the actual conference object Alice could still retrieve the actual conference object by issuing a
by issuing a "confRequest" with a "retrieve" operation on the "confRequest" with a "retrieve" operation on the returned
returned "confObjID". Such a request would show how, as we "confObjID". Such a request would show how, as described at the
anticipated at the beginning of this section, the "entity" attribute beginning of this section, the "entity" attribute of the conference
of the conference object in "confInfo" is replaced with the actual object in "confInfo" is replaced with the actual information (i.e.
information (i.e. "xcon:6845432@example.com").
"xcon:6845432@example.com").
Alice Bob Carol ConfS Alice Bob Carol ConfS
| | | | | | | |
| | | | | | | |
|(1)confRequest(confUserID, | | |(1)confRequest(confUserID, | |
| create, confInfo) | | | create, confInfo) | |
| | | | | | | |
|-------------------------------------->| |-------------------------------------->|
| | | | | | | |
| | (a)Create +---| | | (a)Create +---|
skipping to change at page 29, line 38 skipping to change at page 26, line 36
| | | | | | | |
| | | | | | | |
| | | | | | | |
|<***All parties connected to conf Y***>| |<***All parties connected to conf Y***>|
| | | | | | | |
| | | | | | | |
" " " " " " " "
" " " " " " " "
" " " " " " " "
Figure 9: Create Basic Conference from user provided conference-info Figure 7: Create Basic Conference from user provided conference-info
1. confRequest/create message (Alice proposes a conference object
to be created)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest 1. confRequest/create message (Alice proposes a conference object
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" to be created)
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<operation>create</operation>
<ccmp:confRequest>
<confInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description>
<info:display-text>
Dial-out conference initiated by Alice
</info:display-text>
<info:maximum-user-count>10
</info:maximum-user-count>
<info:available-media>
<info:entry label="AUTO_GENERATE_2">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
<xcon:conference-time>
<xcon:entry>
<xcon:base>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mozilla.org/NONSGML
Mozilla Calendar V1.0//EN
BEGIN:VEVENT
DTSTAMP: 20100127T140728Z
UID: 20100127T140728Z-345FDA-alice@example.com
ORGANIZER:MAILTO:alice@example.com
DTSTART:20100127T143000Z
RRULE:FREQ=WEEKLY
DTEND: 20100127T163000Z
END:VEVENT
END:VCALENDAR
</xcon:base>
<xcon:mixing-start-offset
required-participant="moderator">
2010-01-27T14:29:00Z
</xcon:mixing-start-offset>
<xcon:mixing-end-offset
required-participant="participant">
2010-01-27T16:31:00Z
</xcon:mixing-end-offset>
<xcon:must-join-before-offset>
2010-01-27T15:30:00Z
</xcon:must-join-before-offset>
</xcon:entry>
</xcon:conference-time>
</info:conference-description> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<info:users> <ccmp:ccmpRequest
<xcon:join-handling>allow</xcon:join-handling> xmlns:info="urn:ietf:params:xml:ns:conference-info"
<xcon: allowed-users-list> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
<xcon:target uri="xcon-userid:alice@example.com" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
method="dial-out"/> <ccmpRequest
<xcon:target uri="sip:bob83@example.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
method="dial-out"/> xsi:type="ccmp:ccmp-conf-request-message-type">
<xcon:target uri="sip:carol@example.com" <confUserID>xcon-userid:Alice@example.com</confUserID>
method="dial-out"/> <operation>create</operation>
</xcon:allowed-users-list> <ccmp:confRequest>
</info:users> <confInfo entity="xcon:AUTO_GENERATE_1@example.com">
</confInfo> <info:conference-description>
</ccmp:confRequest> <info:display-text>
</ccmpRequest> Dial-out conference initiated by Alice
</ccmp:ccmpRequest> </info:display-text>
<info:maximum-user-count>10</info:maximum-user-count>
<info:available-media>
<info:entry label="AUTO_GENERATE_2">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
<xcon:conference-time>
<xcon:entry>
<xcon:base>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mozilla.org/NONSGML
Mozilla Calendar V1.0//EN
BEGIN:VEVENT
DTSTAMP: 20100127T140728Z
UID: 20100127T140728Z-345FDA-alice@example.com
ORGANIZER:MAILTO:alice@example.com
DTSTART:20100127T143000Z
RRULE:FREQ=WEEKLY
DTEND: 20100127T163000Z
END:VEVENT
END:VCALENDAR
</xcon:base>
<xcon:mixing-start-offset
required-participant="moderator">
2010-01-27T14:29:00Z
</xcon:mixing-start-offset>
<xcon:mixing-end-offset
required-participant="participant">
2010-01-27T16:31:00Z
</xcon:mixing-end-offset>
<xcon:must-join-before-offset>
2010-01-27T15:30:00Z
</xcon:must-join-before-offset>
</xcon:entry>
</xcon:conference-time>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
<xcon:allowed-users-list>
<xcon:target uri="xcon-userid:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:bob83@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
</confInfo>
</ccmp:confRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/create message (200, "success") 2. confResponse/create message (200, "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>200<response-code> <response-code>200</response-code>
<response-string>success<response-string> <response-string>success</response-string>
<version>1</version> <version>1</version>
</ccmpResponse> <ccmp:confResponse/>
</ccmp:ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse>
Figure 10: Create Basic Conference Detailed Messaging Figure 8: Create Basic Conference Detailed Messaging
5.4. Cloning an Existing Conference 5.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 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 new conference using a blueprint: the difference is that, instead of
cloning the pre-defined settings listed in a blueprint, the settings cloning the pre-defined settings listed in a blueprint, the settings
of an existing conference would be cloned. of an existing conference would be cloned.
skipping to change at page 33, line 4 skipping to change at page 29, line 47
| |<-+ its ID | |<-+ its ID
| | (confid=Y) | | (confid=Y)
| | | |
|(2)confResponse(confUserID, | |(2)confResponse(confUserID, |
| confObjID*,create, | | confObjID*,create, |
| 200, success, | | 200, success, |
| version, confInfo) | | version, confInfo) |
| | | |
|<------------------------------| |<------------------------------|
| | | |
Figure 11: Create Basic Conference - Clone
Figure 9: Create Basic Conference - Clone
1. Alice, a conferencing system client, sends a confRequest message 1. Alice, a conferencing system client, sends a confRequest message
to clone a conference based on an existing conference to clone a conference based on an existing conference
reservation. Alice indicates this conference should be cloned reservation. Alice indicates this conference should be cloned
from the specified parent conference represented by the from the specified parent conference represented by the
"confObjID" in the request. "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 11) to be used for the cloned (called "confObjID*" in Figure 9) 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
use this new identifier. The conferencing system maintains the use this new identifier. The conferencing system maintains 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 (Alice clones an existing conference) 1. confRequest/create message (Alice clones an existing conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation>
</ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/create message (created conference <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
object returned) <ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:6845432@example.com</confObjID>
<operation>create</operation>
<ccmp:confRequest/>
</ccmpRequest>
</ccmp:ccmpRequest>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2. confResponse/create message (created conference
<ccmp:ccmpResponse object returned)
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
New conference by Alice cloned from 6845432
</info:display-text>
<xcon:cloning-parent>
xcon:6845432@example.com
</xcon:cloning-parent>
<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>
<xcon: allowed-users-list>
<xcon:target uri="sip:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:bob83@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>
confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xcon:floor id="11"/> <ccmp:ccmpResponse
</xcon:conference-floor-policy> xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
</xcon:floor-information> xmlns:info="urn:ietf:params:xml:ns:conference-info"
</confInfo> xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
</ccmp:confResponse> <ccmpResponse
</ccmpResponse> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</ccmp:ccmpResponse> xsi:type="ccmp:ccmp-conf-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>1</version>
<ccmp:confResponse>
<confInfo entity="xcon:8977794@example.com">
<info:conference-description>
<info:display-text>
New conference by Alice cloned from 6845432
</info:display-text>
<info:maximum-user-count>10</info:maximum-user-count>
<info:available-media>
<info:entry label="11">
<info:type>audio</info:type>
</info:entry>
</info:available-media>
<xcon:cloning-parent>
xcon:6845432@example.com
</xcon:cloning-parent>
</info:conference-description>
<info:users>
<xcon:join-handling>allow</xcon:join-handling>
<xcon:allowed-users-list>
<xcon:target uri="sip:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:bob83@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
</xcon:allowed-users-list>
</info:users>
<xcon:floor-information>
<xcon:floor-request-handling>
confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="1">
<xcon:media-label>11</xcon:media-label>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</confInfo>
</ccmp:confResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 12: Create Basic Conference (Clone) Detailed Messaging Figure 10: Create Basic Conference (Clone) Detailed Messaging
6. Conference Users Scenarios and Examples 6. Conference Users Scenarios and Examples
Section 5 showed examples describing the several different ways a Section 5 showed examples describing the several different ways a
conference might be created using CCMP. This section instead focuses conference might be created using CCMP. This section focuses on
on user-related scenarios, i.e. typical scenarios that may occur user-related scenarios, i.e. typical scenarios that may occur during
during the lifetime of a conference, like adding new users and the lifetime of a conference, like adding new users and handling
handling their media. The following scenarios are based on those their media. The following scenarios are based on those documented
documented in the XCON framework. The examples assume that a in the XCON framework. The examples assume that a conference has
conference has already been correctly established, with media, if already been correctly established, with media, if applicable, per
applicable, per one of the examples in Section 5. one of the examples in Section 5.
6.1. Adding a Party 6.1. Adding a Party
In this example, Alice wants to add Bob to an established conference. In this example, Alice wants to add Bob to an established conference.
In the following example we assume Bob is a new user of the system, In the following example we assume Bob is a new user of the system,
which means Alice also needs to provide some details about him. In which means Alice also needs to provide some details about him. In
fact, the case of Bob already present as a user in the conferencing fact, the case of Bob already present as a user in the conferencing
system is much easier to address, and will be discussed later on. system is much easier to address, and will be discussed later on.
"Alice" "Bob" "Alice" "Bob"
skipping to change at page 36, line 37 skipping to change at page 33, line 37
| | | | | | | |
| | | (c) Notify| | | | (c) Notify|
| | | ("Bob just| | | | ("Bob just|
| | | joined") | | | | joined") |
| | |<----------| | | |<----------|
| | | | | | | |
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
Figure 13: Client Manipulation of Conference - Add a party Figure 11: 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 in the request a "userInfo" element describing Bob as a by adding in the request a "userInfo" element describing Bob as a
user. This is needed in order to let the conferencing system be user. This is needed in order to let the conferencing system be
aware of Bob's characteristics. In case Bob was already a aware of Bob's characteristics. In case Bob was already a
registered user, Alice would just have referenced him through his registered user, Alice would just have referenced him through his
XCON-USERID in the "entity" attribute of the "userInfo" field, XCON-USERID in the "entity" attribute of the "userInfo" field,
skipping to change at page 37, line 20 skipping to change at page 34, line 20
messages below) is used for the "entity" attribute of the messages below) is used for the "entity" attribute of the
"userInfo" element, to be replaced by the actual XCON-USERID "userInfo" element, to be replaced by the actual XCON-USERID
later on; later on;
2. Bob is successfully added to the conference object, and an XCON- 2. Bob is successfully added to the conference object, and an XCON-
USERID is allocated for him ("xcon-userid:Bob@example.com"); this USERID is allocated for him ("xcon-userid:Bob@example.com"); this
identifier is reported in the response as part of the "entity" identifier is reported in the response as part of the "entity"
element of the returned "userInfo"; element of the returned "userInfo";
3. In the presented example, the call signaling to add Bob to the 3. In the presented example, the call signaling to add Bob to the
conference is instigated through the Focus as well. We again conference is instigated through the Focus as well. As noted
remind that this is implementation specific. In fact, a previously, 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 (see the date, password, expected participants and so on (see
Section 4.3). Section 4.3).
To conclude the overview on this scenario, once Bob has been Once Bob has been successfully added to the specified conference,
successfully added to the specified conference, per updates to the per updates to the state, and depending upon the policies, other
state, and depending upon the policies, other participants participants (including Bob himself) may be notified of the
(including Bob himself) may be notified of the addition of Bob to addition of Bob to the conference via the Conference Notification
the conference via the Conference Notification Service in use. Service in use.
1. userRequest/create message (Alice adds Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:AUTO_GENERATE@example.com">
<info:display-text>Bob</info:display-text>
<info:associated-aors>
<info:entry>
<info:uri>mailto:bob.depippis@example.com
</info:uri>
<info:display-text>Bob's email
</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop
</info:display-text>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create message (a new XCON-USERID is 1. userRequest/create message (Alice adds Bob)
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 <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"
<ccmpResponse xsi:type="ccmp:ccmp-user-request-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <confUserID>xcon-userid:Alice@example.com</confUserID>
xsi:type="ccmp:ccmp-user-response-message-type"> <confObjID>xcon:8977878@example.com</confObjID>
<confUserID>xcon-userid:Alice@example.com</confUserID> <operation>create</operation>
<confObjID>xcon:8977878@example.com</confObjID> <ccmp:userRequest>
<operation>create</operation> <userInfo entity="xcon-userid:AUTO_GENERATE@example.com">
<response-code>200</response-code> <info:display-text>Bob</info:display-text>
<response-string>success</response-string> <info:associated-aors>
<version>10</version> <info:entry>
<ccmp:userResponse> <info:uri>mailto:bob.depippis@example.com</info:uri>
<userInfo entity="xcon-userid:Bob@example.com"> <info:display-text>Bob's email</info:display-text>
<info:display-text>Bob</info:display-text> </info:entry>
<info:associated-aors> </info:associated-aors>
<info:entry> <info:endpoint entity="sip:bob83@example.com">
<info:uri>mailto:bob.depippis@example.com <info:display-text>Bob's laptop</info:display-text>
</info:uri> </info:endpoint>
<info:display-text>Bob's email </userInfo>
</info:display-text> </ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
</info:entry> 2. userResponse/create message (a new XCON-USERID is
</info:associated-aors> created for Bob and he is added to the conference)
<info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop
</info:display-text>
</info:endpoint>
</userInfo>
</ccmp:userResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 14: Add Party Message Details <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>10</version>
<ccmp:userResponse>
<userInfo entity="xcon-userid:Bob@example.com">
<info:display-text>Bob</info:display-text>
<info:associated-aors>
<info:entry>
<info:uri>mailto:bob.depippis@example.com</info:uri>
<info:display-text>Bob's email</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:bob83@example.com">
<info:display-text>Bob's laptop</info:display-text>
</info:endpoint>
</userInfo>
</ccmp:userResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 12: Add Party Message Details
6.2. Muting a Party 6.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. We assume that the user to mute has already been active conference. We assume that the user to mute has already been
added to the conference. The document only addresses muting and not added to the conference. The document only addresses muting and not
unmuting as well, since it would involve an almost identical CCMP unmuting, since the latter would involve an almost identical CCMP
message flow anyway. Although, in case that any external floor message flow anyway. However, if any external floor control is
control is involved, whether or not a particular conference client involved, whether a particular conference client can actually mute/
can actually mute/unmute itself must be considered by the unmute itself, must be considered by the conferencing system.
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 15 provides an example of one client, "Alice", impacting the Figure 13 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, Alice, whose role is established conference. In this example, Alice, whose role is
"moderator" of the conference, wants to mute Bob on a medium-size "moderator" of the conference, wants to mute Bob on a medium-size
multi-party conference, as his device is not muted (and he's multi-party conference, as his device is not muted (and 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 Muting can be accomplished using the "mute" control in the conference
consists in updating the conference object by modifying the settings object, in which case the conference server must update the settings
related to the target user's media streams. Specifically, Bob's associated with the user's media streams. Muting/unmuting can also
"userInfo" must be updated by modifying its audio <endpoint> be accomplished by directly updating the conference object with
information (e.g. setting it to "recvonly" in case of muting), modified settings related to the target user's media streams, which
identified by the right media id. is the approach shown in this example. Specifically, Bob's
"userInfo" is updated by modifying its audio <endpoint> information
(e.g. setting it to "recvonly" in case of muting), identified by the
right media id.
"Alice" "Bob" "Alice" "Bob"
CMCC1 CMCC2 CMCCx ConfS MS CMCC1 CMCC2 CMCCx ConfS MS
| | | | | | | | | |
|(1) userRequest(subject, | | | |(1) userRequest(subject, | | |
| confUserID,confObjID, | | | | confUserID,confObjID, | | |
| update,userInfo) | | | | update,userInfo) | | |
| | | | | | | | | |
|--------------------------------------->| | |--------------------------------------->| |
| | | | Mute Bob | | | | | Mute Bob |
skipping to change at page 40, line 38 skipping to change at page 37, line 38
| | | | | | | | | |
| | | (b) Notify | | | | | (b) Notify | |
| | | ("Bob is | | | | | ("Bob is | |
| | | muted") | | | | | muted") | |
| | |<-----------| | | | |<-----------| |
| | | | | | | | | |
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
' ' ' ' ' ' ' ' ' '
Figure 15: Client Manipulation of Conference - Mute a party Figure 13: Client Manipulation of Conference - Mute a party
1. Alice sends a 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's <endpoint> set to "revconly". In order to authenticate Bob's <endpoint> set to "revconly". In order to authenticate
herself, Alice provides in the "subject" request parameter her herself, Alice provides in the "subject" request parameter her
registration credentials (i.e. username and password). The registration credentials (i.e. username and password). The
"subject" parameter is an optional one: its use can be systematic "subject" parameter is an optional one: its use can be systematic
whenever the conferencing server envisages to authenticate each whenever the conferencing server envisages to authenticate each
requestor. In such cases, if the client does not provide the requestor. In such cases, if the client does not provide the
required authentication information, the conferencing server required authentication information, the conferencing server
answers with a CCMP "authenticationRequired" response message, answers with a CCMP "authenticationRequired" response message,
indicating that the request cannot be processed without including indicating that the request cannot be processed without including
the proper "subject" parameter. The Conference Server ensures the proper "subject" parameter. The Conference Server ensures
that Alice has the appropriate authority based on the policies that Alice has the appropriate authority based on the policies
associated with that specific conference object to perform the associated with that specific conference object to perform the
operation. It recognizes that Alice is allowed to request the operation. It recognizes that Alice is allowed to request the
specified modification, since she is moderator of the target specified modification, since she is moderator of the target
conference, and updates the "userInfo" in the conference object conference, and updates the "userInfo" in the conference object
reflecting that Bob's media is not to be mixed with the reflecting that Bob's media is not to be mixed with the
conference media. In case the Conference Server relies on a conference media. If the Conference Server relies on a remote
remote Media Server for its multimedia functionality, it Media Server for its multimedia functionality, it subsequently
subsequently changes Bob's media profile accordingly by means of changes Bob's media profile accordingly by means of the related
the related protocol interaction with the MS to enforce the protocol interaction with the MS. An example describing a
decision. An example describing a possible way of dealing with possible way of dealing with such a situation using the Media
such a situation using the Media Server Control architecture is Server Control architecture is described in
described in [I-D.ietf-mediactrl-call-flows], at "Simple [I-D.ietf-mediactrl-call-flows], at "Simple Bridging: Framework
Bridging: Framework Transactions (2)". Transactions (2)".
2. A userResponse message with a "200" response-code ("success") is 2. A userResponse message with a "200" response-code ("success") is
then sent to Alice. Depending upon the policies, the conference then 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 any Conference Notification Service that may be in update via any Conference Notification Service that may be in
use. use.
1. userRequest/update message (Alice mutes Bob) 1. userRequest/update message (Alice mutes Bob)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<subject>
<username>Alice83</username>
<password>13011983</password>
</subject>
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com">
<info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>recvonly</info:status>
</info:media>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
</t>
2. userResponse/update message (Bob has been muted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <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">
<ccmpResponse <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ccmp:ccmp-user-request-message-type">
xsi:type="ccmp:ccmp-user-response-message-type"> <subject>
<confUserID>xcon-userid:Alice@example.com</confUserID> <username>Alice83</username>
<confObjID>xcon:8977878@example.com</confObjID> <password>13011983</password>
<operation>update</operation> </subject>
<response-code>200</response-code> <confUserID>xcon-userid:Alice@example.com</confUserID>
<response-string>success</response-string> <confObjID>xcon:8977878@example.com</confObjID>
<version>7</version> <operation>update</operation>
<ccmp:userResponse/> <ccmp:userRequest>
</ccmpResponse> <userInfo entity="xcon-userid:Bob@example.com">
</ccmp:ccmpResponse> <info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:label>123</info:label>
<info:status>recvonly</info:status>
</info:media>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
Figure 16: Mute Message Details 2. userResponse/update message (Bob has been muted)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977878@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>7</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 14: Mute Message Details
6.3. Conference Announcements and Recordings 6.3. Conference Announcements and Recordings
This section deals with features that are typically required in a This section deals with features that are typically required in a
conferencing system, that are public announcements (e.g. to notify conferencing system, such as public announcements (e.g. to notify
vocally that a new user joined a conference) and name recording. vocally that a new user joined a conference) and name recording.
While this is not strictly CCMP-related (the CCMP signaling is While this is not strictly CCMP-related (the CCMP signaling is
actually the same as the one seen in Section 6.1) it is an actually the same as the one seen in Section 6.1) it is an
interesting scenario to address to see how the several components of interesting scenario to address to see how several components of an
an XCON-compliant architecture interact with each other to make it XCON-compliant architecture interact with each other to make it
happen. happen.
In this example, as shown in Figure 17 Alice is joining Bob's In this example, as shown in Figure 15 Alice is joining Bob's
conference that requires that she first enters a pass code. After conference that requires that she first enters a pass code. After
successfully entering the pass code, an announcement prompts Alice to successfully entering the pass code, an announcement prompts Alice to
speak her name so it can be recorded. When Alice is added to the 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 active conference, the recording is played back to all the existing
participants. A very similar example is presented in Figure 33 of participants. A very similar example is presented in Figure 33 of
[I-D.ietf-mediactrl-call-flows]. [I-D.ietf-mediactrl-call-flows].
CMCC "Alice" ConfS MS CMCC "Alice" ConfS MS
| | | | | |
|(1)userRequest(confObjID, | | |(1)userRequest(confObjID, | |
skipping to change at page 44, line 4 skipping to change at page 42, line 4
| Complete +--| | | Complete +--| |
| creation | | | | creation | | |
| of Alice +->| | | of Alice +->| |
| | | | | |
| | | | | |
| (2)userResponse(confUserID,| | | (2)userResponse(confUserID,| |
| confObjID,create,200,| | | confObjID,create,200,| |
| success,version) | | | success,version) | |
|<---------------------------| | |<---------------------------| |
| | | | | |
Figure 17: Recording and Announcements Figure 15: Recording and Announcements
1. Upon receipt of the userRequest from Alice to be added to Bob's 1. Upon receipt of the userRequest from Alice to be added to Bob's
conference, the conferencing system determines that a password is conference, the conferencing system determines that a password is
required for this specific conference. Thus an announcement required for this specific conference. Thus an announcement
asking Alice to enter the password is sent back. This may be asking Alice to enter the password is sent back. This may be
achieved by means of typical IVR functionality. Once Alice achieved by means of typical IVR functionality. Once Alice
enters the password, it is validated against the policies enters the password, it is validated against the policies
associated with Bob's active conference. The conferencing system associated with Bob's active conference. The conferencing system
then connects to a server which prompts and records Alice's name. then connects to a server which prompts and records Alice's name.
The conferencing system must also determine whether Alice is The conferencing system must also determine whether Alice is
skipping to change at page 44, line 35 skipping to change at page 43, line 5
conference (if she were to have the appropriate policies), conference (if she were to have the appropriate policies),
including registering for event notifications associated with the including registering for event notifications associated with the
conference. Once the call signaling indicates that Alice has conference. Once the call signaling indicates that Alice has
been successfully added to the specific conference, per updates been successfully added to the specific conference, per updates
to the state, and depending upon the policies, other participants to the state, and depending upon the policies, other participants
(e.g., Bob) are notified of the addition of Alice to the (e.g., Bob) are notified of the addition of Alice to the
conference via the conference notification service and an conference via the conference notification service and an
announcement is provided to all the participants indicating that announcement is provided to all the participants indicating that
Alice has joined the conference. Alice has joined the conference.
1. userRequest/create message (A new conferencing system client, 1. userRequest/create message (A new conferencing system client,
Alice, enters Bob's conference) Alice, enters Bob's conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confObjID>xcon:bobConf@example.com</confObjID>
<operation>create</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:AUTO_GENERATE@example.com">
<info:associated-aors>
<info:entry>
<info:uri>
mailto:Alice83@example.com
</info:uri>
<info:display-text>email</info:display-text>
</info:entry>
</info:associated-aors>
<info:endpoint entity="sip:alice_789@example.com"/>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create (Alice provided with a new xcon-userid
and added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse <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">
<ccmpResponse <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ccmp:ccmp-user-request-message-type">
xsi:type="ccmp:ccmp-user-response-message-type"> <confObjID>xcon:bobConf@example.com</confObjID>
<confUserID>xcon-userid:Alice@example.com</confUserID> <operation>create</operation>
<confObjID>xcon:bobConf@example.com</confObjID> <ccmp:userRequest>
<operation>create</operation> <userInfo entity="xcon-userid:AUTO_GENERATE@example.com">
<response-code>200</response-code> <info:associated-aors>
<response-string>success</response-string> <info:entry>
<version>5</version> <info:uri>
<ccmp:userResponse/> mailto:Alice83@example.com
</ccmpResponse> </info:uri>
</ccmp:ccmpResponse> <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>
Figure 18: Announcement Messaging Details 2. userResponse/create (Alice provided with a new xcon-userid
and added to the conference)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:bobConf@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>5</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 16: Announcement Messaging Details
6.4. Monitoring for DTMF 6.4. Monitoring for DTMF
Conferencing systems often also need the capability to monitor for Conferencing systems often also need the capability to monitor for
DTMF from each individual participant. This would typically be used DTMF from each individual participant. This would typically be used
to enter the identifier and/or access code for joining a specific to enter the identifier and/or access code for joining a specific
conference. This feature is often also exploited to achieve conference. This feature is often also exploited to achieve
interaction between participants and the conference system for non- interaction between participants and the conference system for non-
XCON-aware user agents (e.g. using DTMF tones to get muted/unmuted). XCON-aware user agents (e.g. using DTMF tones to get muted/unmuted).
An example of DTMF monitoring, within the context of the framework An example of DTMF monitoring, within the context of the framework
elements, is shown in Figure 17. A typical way for the conferencing elements, is shown in Figure 15. The mediactrl architecture/
system to be aware of all the DTMF interactions within the context of protocols can be used by the conferencing system for all the DTMF
conferences it is responsible for, is making use of the MEDIACTRL interactions. Examples for DTMF interception in conference instances
architecture for what regards media manipulation. Examples in that are presented in [I-D.ietf-mediactrl-call-flows].
sense (specifically for what concerns DTMF interception in conference
instances) are presented in [I-D.ietf-mediactrl-call-flows].
6.5. Entering a password-protected conference 6.5. Entering a password-protected conference
Some conferences may envision a password to be provided by a user who Some conferences may require a password to be provided by a user who
wants to manipulate the relative conference objects (e.g. join, wants to manipulate the conference objects (e.g. join, update,
update, delete) via CCMP. Such a password would be included in the delete) via CCMP. In this case, a password would be included in the
<conference-password> element related to the conference XCON-URI in <conference-password> element related to the conference XCON-URI in
the appropriate <conference-uris> entry and must be then included in the appropriate <conference-uris> entry and must be then included in
the apposite "conference-password" field in the CCMP request the "conference-password" field in the CCMP request addressed to a
addressed to that conference. specific conference.
In the following CCMP transactions, it is depicted a scenario in In the following example, Alice, a conferencing system client,
which Alice, a conferencing system client, attempts to join a attempts to join a password-protected conference.
password-protected conference.
1. Alice sends a userRequest message with a "create" operation to 1. Alice sends a userRequest message with a "create" operation to
add herself in the conference with XCON-URI add herself in the conference with XCON-URI
"xcon:8977777@example.com" (written in the "confObjID" "xcon:8977777@example.com" (written in the "confObjID"
parameter). Alice provides her XCON-USERID via the "confUserID" parameter). Alice provides her XCON-USERID via the "confUserID"
field of the userRequest and leaves out the "userInfo" one field of the userRequest and leaves out the "userInfo" one
(first-party join). In this first attempt, she doesn't insert (first-party join). In this first attempt, she doesn't insert
any password parameter. any password parameter.
2. Upon receipt the userRequest/create message, the conferencing 2. Upon receipt the userRequest/create message, the conferencing
server detects that the indicated conference is not joinable server detects that the indicated conference is not joinable
without providing the relative pass code. Then a userResponse without providing the appropriate pass code. A userResponse
message with "423" response-code ("conference password message with "423" response-code ("conference password required")
required")is returned to Alice to indicate that her join has been is returned to Alice to indicate that her join has been refused
refused and that she has to recast her request including the and that she has to resend her request including the appropriate
appropriate conference password in order to participate. conference password in order to participate.
3. After getting the pass code through out-of-band mechanisms, Alice 3. After getting the pass code through out-of-band mechanisms, Alice
provides it in the proper "password" request field of a new provides it in the proper "password" request field of a new
userRequest/create message and sends the updated request back to userRequest/create message and sends the updated request back to
the server. the server.
4. The conferencing server checks the provided password and then 4. The conferencing server checks the provided password and then
adds Alice to the protected conference. After that, a adds Alice to the protected conference. After that, a
userResponse with a "200" response-code ("success") is sent to userResponse with a "200" response-code ("success") is sent to
Alice. Alice.
1. userRequest/create message (Alice tries to enter the conference 1. userRequest/create message (Alice tries to enter the conference
without providing the password) without providing the password)
<?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-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>create</operation>
<operation>create</operation> <ccmp:userRequest/>
<ccmp:userRequest/> </ccmpRequest>
</ccmpRequest> </ccmp:ccmpRequest>
</ccmp:ccmpRequest>
2. userResponse/create message (423, "conference password required") 2. userResponse/create message (423, "conference password required")
<?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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>create</operation>
<operation>create</operation> <response-code>423</response-code>
<ccmp:response-code>423</ccmp:response-code> <response-string>conference password required</response-string>
<ccmp:response-string> <ccmp:userResponse/>
conference password required </ccmpResponse>
</ccmp:response-string> </ccmp:ccmpResponse>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
3. userRequest/create message (Alice provides the password) 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 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
(Alice has been added to the conference) <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>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 4. userResponse/create message
<ccmp:ccmpResponse (Alice has been added to the conference)
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>10</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 19: Password-protected conference join messages details <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpResponse
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8977794@example.com</confObjID>
<operation>create</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>10</version>
<ccmp:userResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 17: Password-protected conference join messages details
7. Sidebars Scenarios and Examples 7. Sidebars Scenarios and Examples
While creating conferences and manipulating users and their media may While creating conferences and manipulating users and their media are
be considered enough for many scenarios, there may be cases when a sufficient for many scenarios, there may be cases when a more complex
more complex management is needed. management is needed.
In fact, a feature typically required in conferencing systems is the In fact, a feature typically required in conferencing systems is the
ability to create sidebars. A sidebar is basically a child ability to create sidebars. A sidebar is basically a child
conference that usually includes a subset of the participants of the conference that usually includes a subset of the participants of the
parent conference, and a subset of its media as well. Sidebars are parent conference, and a subset of its media as well. Sidebars are
typically required whenever some of the participants in a conference typically required whenever some of the participants in a conference
want to discuss privately about something, without interfering with want a private discussion, without interfering with the main
the main conference. conference.
This section deals with some scenarios that typically envisage the This section deals with some typical scenarios using a sidebar, like
use of a sidebar, like whispering, private messages and coaching whispering, private messages and coaching scenarios. The first
scenarios. The first subsections, anyway, present some examples of subsections present some examples of how a generic sidebar can be
how a generic sidebar can be created, configured and managed. created, configured and managed.
7.1. Internal Sidebar 7.1. Internal Sidebar
Figure 20 provides an example of one client, "Alice", involved in an Figure 18 provides an example of one client, "Alice", involved in an
active conference with "Bob" and "Carol". Alice wants to create a active conference with "Bob" and "Carol". Alice wants to create a
sidebar to have a side discussion with Bob while still viewing the 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 conferencing Alice initiates the sidebar by sending a request to the conferencing
system to create a conference reservation based upon the active system to create a conference reservation based upon the active
conference object. Alice and Bob would remain on the roster of the conference object. Alice and Bob would remain on the roster of the
main conference, such that other participants could be aware of their main conference, such that other participants could be aware of their
participation in the main conference, while an internal-sidebar participation in the main conference, while an internal-sidebar
conference is occurring. Besides, Bob decides that he is not conference is occurring. Besides, Bob decides that he is not
skipping to change at page 50, line 45 skipping to change at page 48, line 42
| | (confUserID', | | | (confUserID', |
| | confObjID*, | | | confObjID*, |
| | update, 200, | | | update, 200, |
| | success,version) | | | success,version) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 20: Client Creation of a Sidebar Conference Figure 18: Client Creation of a Sidebar Conference
1. Upon receipt of CCMP sidebarByValRequest message to create a new 1. Upon receipt of CCMP sidebarByValRequest message to create a 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 allocates a new XCON-URI for that conferencing system also allocates a new XCON-URI for that
sidebar to be used for any subsequent protocol requests from any sidebar to be used for any subsequent protocol requests from any
of the members of the conference. The new sidebar identifier of the members of the conference. The new sidebar identifier
("confObjID*" in Figure 20) is returned in the response message ("confObjID*" in Figure 18) is returned in the response message
confObjID parameter. 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 that conference, Alice can now create an active conference using that
skipping to change at page 52, line 15 skipping to change at page 50, line 11
6. Notice that Bob's request only changes the media perspective for 6. Notice that Bob's request only changes the media perspective for
Bob. Alice keeps on receiving both the audio from Bob and the Bob. Alice keeps on receiving both the audio from Bob and the
background from the parent conference. This request may be background from the parent conference. This request may be
relayed by the conference server to the Media Server handling the relayed by the conference server to the Media Server handling 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: The following conference object represents the conference in which
the sidebar is to be created. It will be used by the conferencing
system to create the new conference object associated with the
sidebar.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?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">
<info:conference-description> <info:conference-description>
<info:display-text>MAIN CONFERENCE</info:display-text> <info:display-text>MAIN CONFERENCE</info:display-text>
<info:conf-uris> <info:conf-uris>
skipping to change at page 53, line 46 skipping to change at page 51, line 46
</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 Figure 19: Conference with Alice, Bob and Carol
This is the representation of the conference the sidebar is going to The sidebar creation happens through a cloning of the parent
be created in. As such, it will be used by the conferencing system conference. Once the sidebar is created, an "update" makes sure that
in order to create the new conference object associated with the the sidebar is customized as needed. The following protocol dump
sidebar. In fact, the sidebar creation happens through a cloning of makes the process clearer.
the parent conference. Once the sidebar is created, an "update"
makes sure that the sidebar is customized as needed. The following
protocol dump makes the process clearer.
1. sidebarByValRequest/create message (Alice creates an 1. sidebarByValRequest/create message (Alice creates an
internal sidebar) internal sidebar)
<?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 xsi:type="ccmp:ccmp-sidebarByVal-request-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <confUserID>xcon-userid:Alice@example.com</confUserID>
xsi:type="ccmp:ccmp-sidebarByVal-request-message-type"> <confObjID>xcon:8977878@example.com</confObjID>
<confUserID>xcon-userid:Alice@example.com</confUserID> <operation>create</operation>
<confObjID>xcon:8977878@example.com</confObjID> <ccmp:sidebarByValRequest/>
<operation>create</operation> </ccmpRequest>
<ccmp:sidebarByValRequest/> </ccmp:ccmpRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByValResponse/create message (sidebar returned) 2. sidebarByValResponse/create message (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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<operation>create</operation> <response-code>200</response-code>
<response-code>200</response-code> <response-string>success</response-string>
<response-string>success</response-string> <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> <info:available-media>
<xcon:sidebar-parent> <info:entry label="123">
xcon:8977878@example.com <info:display-text>
</xcon:sidebar-parent> main conference audio
<info:available-media> </info:display-text>
<info:entry label="123"> <info:type>audio</info:type>
<info:display-text> <info:status>sendrecv</info:status>
main conference audio </info:entry>
</info:display-text> <info:entry label="456">
<info:type>audio</info:type> <info:display-text>
<info:status>sendrecv</info:status> main conference video
</info:entry> </info:display-text>
<info:entry label="456"> <info:type>video</info:type>
<info:display-text> <info:status>sendrecv</info:status>
main conference video </info:entry>
</info:display-text> </info:available-media>
<info:type>video</info:type> </info:conference-description>
<info:status>sendrecv</info:status> <info:conference-state>
</info:entry> <info:active>false</info:active>
</info:available-media> </info:conference-state>
</info:conference-description> <info:users>
<info:conference-state> <xcon:allowed-users-list>
<info:active>false</info:active> <xcon:target method="dial-in"
</info:conference-state> uri="xcon-userid:Alice@example.com"/>
<info:users> <xcon:target method="dial-in"
<xcon:allowed-users-list> uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-in" <xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/> uri="xcon-userid:Carol@example.com"/>
<xcon:target method="dial-in" </xcon:allowed-users-list>
uri="xcon-userid:Bob@example.com"/> <xcon:sidebar-parent>
<xcon:target method="dial-in" xcon:8977878@example.com
uri="xcon-userid:Carol@example.com"/> </xcon:sidebar-parent>
</xcon:allowed-users-list> </info:users>
</info:users> </sidebarByValInfo>
</sidebarByValInfo> </ccmp:sidebarByValResponse>
</ccmp:sidebarByValResponse> </ccmpResponse>
</ccmpResponse> </ccmp:ccmpResponse>
</ccmp:ccmpResponse>
3. sidebarByValRequest/update message (Alice updates the 3. sidebarByValRequest/update message (Alice updates the
created sidebar) 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 <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>recvonly</info:status>
<xcon:controls>
<xcon:gain>-60</xcon:gain>
</xcon:controls>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
4. sidebarByValResponse/update message (sidebar's </info:display-text>
updates accepted) <info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>recvonly</info:status>
<xcon:controls>
<xcon:gain>-60</xcon:gain>
</xcon:controls>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>recvonly</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByValInfo>
</ccmp:sidebarByValRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
4. sidebarByValResponse/update message (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:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByValResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
5. userRequest/update message (Bob updates his media)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" xmlns: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 <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ccmp:ccmp-user-request-message-type">
xsi:type="ccmp:ccmp-sidebarByVal-response-message-type"> <confUserID>xcon-userid:Bob@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:userRequest>
<response-code>200</response-code> <userInfo entity="xcon-userid:Bob@example.com">
<response-string>success</response-string> <info:endpoint entity="sip:bob83@example.com">
<version>2</version> <info:media id="1">
<ccmp:sidebarByValResponse/> <info:display-text>
</ccmpResponse> main conference audio
</ccmp:ccmpResponse> </info:display-text>
<info:label>123</info:label>
5. userRequest/update message (Bob updates his media) <info:status>inactive</info:status>
</info:media>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> </info:endpoint>
<ccmp:ccmpRequest </userInfo>
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info" </ccmp:userRequest>
xmlns:info="urn:ietf:params:xml:ns:conference-info" </ccmpRequest>
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp"> </ccmp:ccmpRequest>
<ccmpRequest 6. userResponse/update message (Bob's preferences are set)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-user-request-message-type">
<confUserID>xcon-userid:Bob@example.com</confUserID>
<confObjID>xcon:8974545@example.com</confObjID>
<operation>update</operation>
<ccmp:userRequest>
<userInfo entity="xcon-userid:Bob@example.com">
<info:endpoint entity="sip:bob83@example.com">
<info:media id="1">
<info:display-text>
main conference audio
</info:display-text>
<info:label>123</info:label>
<info:status>inactive</info:status>
</info:media>
</info:endpoint>
</userInfo>
</ccmp:userRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
6. userResponse/update message (Bob's preferences setted)
<?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 xsi:type="ccmp:ccmp-user-response-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <confUserID>xcon-userid:Bob@example.com</confUserID>
xsi:type="ccmp:ccmp-user-response-message-type"> <confObjID>xcon:8974545@example.com</confObjID>
<confUserID>xcon-userid:Bob@example.com</confUserID> <operation>update</operation>
<confObjID>xcon:8974545@example.com</confObjID> <response-code>200</response-code>
<operation>update</operation> <response-string>success</response-string>
<response-code>200</response-code> <version>3</version>
<response-string>success</response-string> <ccmp:userResponse/>
<version>3</version> </ccmpResponse>
<ccmp:userResponse/> </ccmp:ccmpResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 22: Internal Sidebar Messaging Details Figure 20: Internal Sidebar Messaging Details
7.2. External Sidebar 7.2. External Sidebar
Figure 23 provides an example of a different approach towards Figure 21 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 critical gets an important text message via a whisper from Bob that a critical
customer needs to talk to Alice, Bob and Ethel. Alice creates a customer needs to talk to Alice, Bob and Ethel. Alice creates a
sidebar to have a side discussion with the customer "Fred" including sidebar to have a side discussion with the customer "Fred" including
the participants in the current conference with the exception of the participants in the current conference with the exception of
Carol and David, who remain in the active conference. The difference Carol and David, who remain in the active conference. The difference
from the previous scenario is that Fred is not part of the parent from the previous scenario is that Fred is not part of the parent
conference: this means that different policies might be involved, conference: this means that different policies might be involved,
considering that Fred may access information coming from the parent considering that Fred may access information coming from the parent
conference, in case the sidebar was configured accordingly. For this conference, in case the sidebar was configured accordingly. For this
reason, in this scenario we assume that Alice disables all the media reason, in this scenario we assume that Alice disables all the media
from the original (parent) conference within the sidebar. This means from the original (parent) conference within the sidebar. This means
that, while in the previous example Alice and Bob still heard the that, while in the previous example Alice and Bob still heard the
audio from the main conference in background, this time no background audio from the main conference in background, this time no background
is made available. Alice initiates the sidebar by sending a request is made available. Alice initiates the sidebar by sending a request
to the conferencing system to create a conference reservation based to the conferencing system to create a conference reservation based
upon the active conference object. Alice, Bob and Ethel would remain upon the active conference object. Alice, Bob and Ethel would remain
on the roster of the main conference in a hold state. Whether or not on the roster of the main conference in a hold state. Whether or not
the hold state of these participants is visible to other participants 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. However, providing the
hold state allows the participants in the main conference to see that
others in the conference are busy. Note, that a separate conference
could have been created by Alice to allow Bob and Ethel to talk to
Fred. However, creating a sidebar has somewhat of an advantage by
allowing the conference to be created using some of the same settings
(e.g, role, floor control, etc.) that Bob and Ethel had in the main
conference and it would allow for updates such that the media could
be updated, for example, to provide audio from the main conference.
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 | |
skipping to change at page 61, line 4 skipping to change at page 59, line 4
|<---------------------------------------------| |<---------------------------------------------|
| | | | | |
| | Notify (Fred | | | Notify (Fred |
| | added to | | | added to |
| | sidebar users) | | | sidebar users) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 23: Client Creation of an External Sidebar Figure 21: 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 that "confObjID" in the request, the conferencing system uses that
active conference to clone a conference reservation for the active conference to clone a conference reservation for 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, allocates a conference ID (confObjID*) to be used for any before, allocates a conference ID (confObjID*) to be used for any
subsequent protocol requests toward the sidebar reservation. The subsequent protocol requests toward the sidebar reservation. The
mapping between the sidebar conference ID and the one associated mapping between the sidebar conference ID and the one associated
skipping to change at page 62, line 5 skipping to change at page 60, line 5
may be instigated through the Focus (e.g. if Fred had a "dial- may be instigated through the Focus (e.g. if Fred had a "dial-
out" method set as the target for him) at the actual activation out" method set as the target for 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 Ethel) Alice) and the participants in the sidebar (i.e., Bob and Ethel)
may be notified of his addition to the sidebar via the conference may be notified of his addition to the sidebar via the conference
notification service. notification service.
1. sidebarByRefRequest/create message (Alice creates an 1. sidebarByRefRequest/create message (Alice creates an
external sidebar) external sidebar)
<?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 xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <confUserID>xcon-userid:Alice@example.com</confUserID>
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type"> <confObjID>xcon:8977878@example.com</confObjID>
<confUserID>xcon-userid:Alice@example.com</confUserID> <operation>create</operation>
<confObjID>xcon:8977878@example.com</confObjID> <ccmp:sidebarByRefRequest/>
<operation>create</operation> </ccmpRequest>
<ccmp:sidebarByRefRequest/> </ccmp:ccmpRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
2. sidebarByRefResponse/create message (created 2. sidebarByRefResponse/create message (created
sidebar returned) 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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>create</operation>
<operation>create</operation> <response-code>200</response-code>
<response-code>200</response-code> <response-string>success</response-string>
<response-string>success</response-string> <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> <info:available-media>
<xcon:sidebar-parent> <info:entry label="123">
xcon:8977878@example.com <info:display-text>
</xcon:sidebar-parent> main conference audio
<info:available-media> </info:display-text>
<info:entry label="123"> <info:type>audio</info:type>
<info:display-text> <info:status>sendrecv</info:status>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:David@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Ethel@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
3. sidebarByRefRequest/update message (Alice updates the sidebar) </info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Carol@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:David@example.com"/>
<xcon:target method="dial-in"
uri="xcon-userid:Ethel@example.com"/>
</xcon:allowed-users-list>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefResponse>
</ccmpResponse>
</ccmp:ccmpResponse>
<ccmp:ccmpRequest 3. sidebarByRefRequest/update message (Alice updates the sidebar)
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971212@example.com">
<info:conference-description>
<info:display-text>
sidebar with Alice, Bob, Ethel & Fred
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
<xcon:controls>
<xcon:video-layout>
single-view
</xcon:video-layout>
</xcon:controls>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out"
uri="sip:fred@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
4. sidebarByRefResponse/update message (sidebar updated) <ccmp:ccmpRequest
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<ccmp:sidebarByRefRequest>
<sidebarByRefInfo entity="xcon:8971212@example.com">
<info:conference-description>
<info:display-text>
sidebar with Alice, Bob, Ethel and Fred
</info:display-text>
<info:available-media>
<info:entry label="123">
<info:display-text>
main conference audio
</info:display-text>
<info:type>audio</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="456">
<info:display-text>
main conference video
</info:display-text>
<info:type>video</info:type>
<info:status>inactive</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_1">
<info:display-text>
sidebar audio
</info:display-text>
<info:type>audio</info:type>
<info:status>sendrecv</info:status>
</info:entry>
<info:entry label="AUTO_GENERATE_2">
<info:display-text>
sidebar video
</info:display-text>
<info:type>video</info:type>
<info:status>sendrecv</info:status>
<xcon:controls>
<xcon:video-layout>
single-view
</xcon:video-layout>
</xcon:controls>
</info:entry>
</info:available-media>
</info:conference-description>
<info:conference-state>
<info:active>false</info:active>
</info:conference-state>
<info:users>
<xcon:allowed-users-list>
<xcon:target method="dial-out"
uri="xcon-userid:Alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:Bob@example.com"/>
<xcon:target method="dial-out"
uri="sip:fred@example.com"/>
</xcon:allowed-users-list>
</info:users>
</sidebarByRefInfo>
</ccmp:sidebarByRefRequest>
</ccmpRequest>
</ccmp:ccmpRequest>
<ccmp:ccmpResponse 4. sidebarByRefResponse/update message (sidebar updated)
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByref-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByRefResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 24: External Sidebar Messaging Details <ccmp:ccmpResponse
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:ccmp="urn:ietf:params:xml:ns:xcon:ccmp">
<ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ccmp:ccmp-sidebarByRef-response-message-type">
<confUserID>xcon-userid:Alice@example.com</confUserID>
<confObjID>xcon:8971212@example.com</confObjID>
<operation>update</operation>
<response-code>200</response-code>
<response-string>success</response-string>
<version>2</version>
<ccmp:sidebarByRefResponse/>
</ccmpResponse>
</ccmp:ccmpResponse>
Figure 22: External Sidebar Messaging Details
7.3. Private Messages 7.3. Private Messages
The case of private messages can be handled as a sidebar with just The case of private messages can be handled as a sidebar with just
two participants, similarly to the example in Section 7.1. Unlike two participants, similarly to the example in Section 7.1. Unlike
the previous example, rather than using audio within the sidebar, the previous example, rather than using audio within the sidebar,
Alice could just add an additional text based media stream to the Alice could just add an additional text based media stream to the
sidebar in order to convey her textual messages to Bob, while still sidebar in order to convey her textual messages to Bob, while still
viewing and listening to the main conference. viewing and listening to the main conference.
In this scenario, Alice requests to the conferencing system the In this scenario, Alice requests to the conferencing system the
creation of a private chat room within the main conference context creation of a private chat room within the main conference context
(presented in Figure 21) in which the involved partecipants are just (presented in Figure 19) in which the involved partecipants are just
Bob and herself. This can be achieved through the following CCMP Bob and herself. This can be achieved through the following CCMP
transaction (Figure 25). transaction (Figure 23).
1. Alice forwards a sidebarByValRequest/create to the Conferencing 1. Alice forwards a sidebarByValRequest/create to the Conferencing
Control Server with the main conference XCON-URI in the Control Server with the main conference XCON-URI in the
"confObjID" parameter and the desired sidebar conference object "confObjID" parameter and the desired sidebar conference object
in the "sidebarByValInfo" field. In this way, a sidebar creation in the "sidebarByValInfo" field. In this way, a sidebar creation
using user-provided conference information is requested to the using user-provided conference information is requested to the
conferencing system. Please note that, unlike the previous conferencing system. Please note that, unlike the previous
sidebar examples, in this case a comnpletely new conference sidebar examples, in this case a comnpletely new conference
object to describe the sidebar is provided: there is no cloning object to describe the sidebar is provided: there is no cloning
involved, while the "confObjID" still enforces the parent-child involved, while the "confObjID" still enforces the parent-child
relationship between the main conference and the to-be-created relationship between the main conference and the to-be-created
sidebar. sidebar.
2. The Conference Control Server, after checking Alice's rights and 2. The Conference Control Server, after checking Alice's rights and
validating the conference-object carried in the request, creates validating the conference-object carried in the request, creates
the required sidebar-by-val conference and a new XCON-URI for it. the required sidebar-by-val conference and a new XCON-URI for it.
Instead of cloning the main conference object, as envisioned in Instead of cloning the main conference object, as shown in
Section 7.1 and Section 7.2, the sidebar is created on the basis Section 7.1 and Section 7.2, the sidebar is created on the basis
of the user provided conference information (as anticipated of the user provided conference information. However, the parent
before). However, the parent relationship between the main relationship between the main conference and the newly created
conference and the newly created sidebar is still mantained by sidebar is still mantained by the conferencing system (as a
the conferencing system (as a consequence of the chosen CCMP consequence of the chosen CCMP request message type - the
request message type - the sidebarByVal one) and it is reflected sidebarByVal one) and it is reflected by the <sidebar-parent>
by the <sidebar-parent> element in the "sidebarByValInfo" element element in the "sidebarByValInfo" element returned in the
returned in the sidebarByValResponse message. Please notice sidebarByValResponse message. Please notice that, according to
that, according to the CCMP specification, the return of the the CCMP specification, the return of the created sidebar data in
created sidebar data in this kind of "success" response is not this kind of "success" response is not mandatory.
mandatory.
1. sidebarByValRequest/create message (Alice creates a private 1. sidebarByValRequest/create message (Alice creates a private
chat room between Bob and herself) chat room between Bob and herself)
<?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 <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<sidebarByValInfo entity="xcon:AUTO_GENERATE_1@example.com"> <sidebarByValInfo entity="xcon:AUTO_GENERATE_1@example.com">
<info:conference-description> <info:conference-description>
<info:display-text> <info:display-text>
private textual sidebar alice - bob private textual sidebar alice - bob
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
skipping to change at page 68, line 4 skipping to change at page 65, line 45
</info:users> </info:users>
</sidebarByValInfo> </sidebarByValInfo>
</ccmp:sidebarByValRequest> </ccmp:sidebarByValRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. sidebarByValResponse/create message (sidebar returned) 2. sidebarByValResponse/create message (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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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> <operation>create</operation>
<response-code>200</response-code> <response-code>200</response-code>
<response-string>success</response-string> <response-string>success</response-string>
<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>
private textual sidebar alice - bob private textual sidebar alice - bob
</info:display-text> </info:display-text>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
<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>
skipping to change at page 68, line 48 skipping to change at page 66, line 37
<info:status>recvonly</info:status> <info:status>recvonly</info:status>
</info:entry> </info:entry>
<info:entry label="789"> <info:entry label="789">
<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>
<xcon:sidebar-parent>
xcon:8977878@example.com
</xcon:sidebar-parent>
</info:conference-description> </info:conference-description>
<info:users> <info:users>
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-out" <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>
skipping to change at page 69, line 12 skipping to change at page 67, line 4
<xcon:allowed-users-list> <xcon:allowed-users-list>
<xcon:target method="dial-out" <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:sidebarByValResponse> </ccmp:sidebarByValResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 25: Sidebar for Private Messages scenario Figure 23: Sidebar for Private Messages scenario
7.4. Observing and Coaching 7.4. Observing and Coaching
Observing and Coaching is one of the most interesting sidebars- Observing and Coaching is one of the most interesting sidebars-
related scenarios. In fact, it envisages two different interactions related scenarios. In fact, it highlights two different interactions
that have to be properly coordinated. that have to be properly coordinated.
An example of observing and coaching is shown in figure Figure 27. An example of observing and coaching is shown in figure Figure 25.
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 that he with customer Carol. Since Bob is a new agent and Alice sees that he
has been on the call with Carol for longer than normal, she decides has been on the call with Carol for longer than normal, she decides
to observe the call and coach Bob as necessary. Of course the to observe the call and coach Bob as necessary. Of course the
conferencing system must make sure that the customer Carol is not 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 aware of the presence of the coach Alice. This makes the use of a
sidebar necessary for the success of the scenario. 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 26): customer) (Figure 24):
<?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> <info:display-text>
CUSTOMER SERVICE conference CUSTOMER SERVICE conference
skipping to change at page 71, line 4 skipping to change at page 68, line 44
<info:display-text>Carol - customer</info:display-text> <info:display-text>Carol - customer</info:display-text>
<info:endpoint entity="sip:carol@example.com"> <info:endpoint entity="sip:carol@example.com">
<info:media id="1"> <info:media id="1">
<info:label>123</info:label> <info:label>123</info:label>
<info:status>sendrecv</info:status> <info:status>sendrecv</info:status>
</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 26: A call-center conference object example Figure 24: 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 | |
skipping to change at page 72, line 48 skipping to change at page 69, line 48
| | | | | |
| | Notify (Bob | | | Notify (Bob |
| | he's been added to | | | he's been added to |
| | sidebar users) | | | sidebar users) |
| |<----------------------| | |<----------------------|
| | | | | |
" " " " " "
" " " " " "
" " " " " "
Figure 27: Supervisor Creating a Sidebar for Observing/Coaching Figure 25: 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
skipping to change at page 74, line 14 skipping to change at page 71, line 14
provided for Bob by Alice, the call signaling to add Bob to the provided for Bob by Alice, the call signaling to add Bob to the
sidebar with the appropriate media characteristics is instigated sidebar with the appropriate media characteristics is instigated
through the Focus. Bob is notified of his addition to the through the Focus. Bob is notified of his addition to the
sidebar via the conference notification service, thus he is aware sidebar via the conference notification service, thus he is aware
that Alice, the supervisor, is available for coaching him through that Alice, the supervisor, is available for coaching him through
this call. this call.
1. sidebarByRefRequest/create message (Alice as 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 <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 xsi:type="ccmp:ccmp-sidebarByRef-request-message-type">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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:sidebarByRefRequest/>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
2. sidebarByRefResponse/create message (sidebar created) 2. sidebarByRefResponse/create message (sidebar created)
<?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-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> <operation>create</operation>
<ccmp:response-code>200</ccmp:response-code> <response-code>200</response-code>
<ccmp:response-string>success</ccmp:response-string> <response-string>Success</response-string>
<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:8971313@example.com
</xcon:sidebar-parent>
<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>sendrecv</info:status> <info:status>sendrecv</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>sendrecv</info:status> <info:status>sendrecv</info:status>
</info:entry> </info:entry>
</info:available-media> </info:available-media>
<xcon:sidebar-parent>
xcon:8971313@example.com
</xcon:sidebar-parent>
</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-in" <xcon:target method="dial-in"
uri="xcon-userid:bob@example.com"/> uri="xcon-userid:bob@example.com"/>
skipping to change at page 75, line 46 skipping to change at page 72, line 44
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefResponse> </ccmp:sidebarByRefResponse>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
3. sidebarByRefRequest/update message (Alice introduces unilateral 3. sidebarByRefRequest/update message (Alice introduces unilateral
sidebar audio 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 <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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 and Bob Coaching sidebar Alice and Bob
</info:display-text> </info:display-text>
<info:available-media> <info:available-media>
skipping to change at page 76, line 27 skipping to change at page 73, line 24
</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> <info:user entity="xcon-userid:Alice@example.com">
<xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:bob@example.com"/>
</xcon:allowed-users-list>
<user entity="xcon-userid:Alice@example.com>
<info:endpoint entity="sip:Alice@example.com"> <info:endpoint entity="sip:Alice@example.com">
<info:media id="AUTO_GENERATE_2"> <info:media id="AUTO_GENERATE_2">
<info:label>AUTO_GENERATE_1</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> </info:user>
<user entity="xcon-userid:Bob@example.com> <info:user entity="xcon-userid:Bob@example.com">
<info:endpoint entity="sip:Bob@example.com"> <info:endpoint entity="sip:Bob@example.com">
<info:media id="AUTO_GENERATE_3"> <info:media id="AUTO_GENERATE_3">
<info:label>AUTO_GENERATE_1</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> </info:user>
<xcon:allowed-users-list>
<xcon:target method="dial-in"
uri="xcon-userid:alice@example.com"/>
<xcon:target method="dial-out"
uri="xcon-userid:bob@example.com"/>
</xcon:allowed-users-list>
</info:users> </info:users>
</sidebarByRefInfo> </sidebarByRefInfo>
</ccmp:sidebarByRefRequest> </ccmp:sidebarByRefRequest>
</ccmpRequest> </ccmpRequest>
</ccmp:ccmpRequest> </ccmp:ccmpRequest>
4. sidebarByRefRequest/update message (updates accepted) 4. sidebarByRefRequest/update message (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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>update</operation> <operation>update</operation>
<response-code>200</response-code> <response-code>200</response-code>
<response-string>success</response-string> <response-string>success</response-string>
<version>2</version> <version>2</version>
<ccmp:sidebarByRefResponse/> <ccmp:sidebarByRefResponse/>
</ccmpResponse> </ccmpResponse>
</ccmp:ccmpResponse> </ccmp:ccmpResponse>
Figure 28: Coaching and Observing Messaging details Figure 26: Coaching and Observing Messaging details
8. Removing Participants and Deleting Conferences 8. 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 5.
8.1. Removing a Party 8.1. Removing a Party
Figure 29 provides an example of a client, "Alice", removing another Figure 27 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 this established conference with Alice, Bob, "Claire" and "Duck". In this
example, Alice wants to remove Bob from the conference so that the example, Alice wants to remove Bob from the conference so 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,| |
skipping to change at page 78, line 39 skipping to change at page 75, line 39
| | | | | | | |
| | | (c) Notify| | | | (c) Notify|
| | | ("Bob just| | | | ("Bob just|
| | | left") | | | | left") |
| | |<----------| | | |<----------|
| | | | | | | |
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
' ' ' ' ' ' ' '
Figure 29: Client Manipulation of Conference - Remove a party Figure 27: 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 contact and media information in the conference 2. Based upon the contact and media information in the conference
object for Bob in the "userInfo" element, the conferencing system object for Bob in the "userInfo" element, the conferencing system
starts the process to remove Bob (e.g., the call signaling to starts the process to remove Bob (e.g., the call signaling to
remove Bob from the conference is instigated through the Focus). remove Bob from the conference is instigated through the Focus).
The conference server updates the data in the conference object, The conference server updates the data in the conference object,
thus removing Bob from the <users> list. After updating the thus removing Bob from the <users> list. After updating the
data, the conference server sends a userResponse message to data, the conference server sends a userResponse message to
Alice. Depending upon the policies, other participants (e.g. Alice. Depending upon the policies, other participants (e.g.
"Claire") may be notified of the removal of Bob from the "Claire") may be notified of the removal of Bob from the
conference via 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 <ccmpRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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 (Bob has been deleted) 2. userResponse/delete message (Bob has been deleted)
<?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 <ccmpResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>200</response-code>
<response-code>200</response-code> <response-string>success</response-string>
<response-string>success</response-string> <version>17</version>
<version>17</version> <ccmp:userResponse/>
<ccmp:userResponse/> </ccmpResponse>
</ccmpResponse> </ccmp:ccmpResponse>
</ccmp:ccmpResponse>
Figure 30: Removing a Participant Messaging Details Figure 28: Removing a Participant Messaging Details
8.2. Deleting a Conference 8.2. Deleting a Conference
In this section, an example of a successful conference deletion is In this section, an example of a successful conference deletion is
provided (Figure 31). provided (Figure 29).
Alice ConfS Alice ConfS
| | | |
|(1)confRequest(confUserID, | |(1)confRequest(confUserID, |
| confObjID, delete) | | confObjID, delete) |
|------------------------------>| |------------------------------>|
| (a)Delete +---| | (a)Delete +---|
| Conf | | | Conf | |
| Object | | | Object | |
| +-->| | +-->|
skipping to change at page 80, line 33 skipping to change at page 77, line 32
| |<-+ their participants | |<-+ their participants
| | (SIP signaling as well) | | (SIP signaling as well)
| | | |
|(2)confResponse(confUserID, | |(2)confResponse(confUserID, |
| confObjID,delete,200, | | confObjID,delete,200, |
| success) | | success) |
| | | |
|<------------------------------| |<------------------------------|
| | | |
Figure 31: Deleting a conference Figure 29: Deleting a conference
1. The conferencing system client "Alice" sends a confRequest 1. The conferencing system client "Alice" sends a confRequest
message with a "delete" operation to be performed on the message with a "delete" operation to be performed on the
conference identified by the XCON-URI carried in the "confObjID" conference identified by the XCON-URI carried in the "confObjID"
parameter. The conference server, on the basis of the parameter. The conference server, on the basis of the
"confUserID" included in the receipt request, ensures that Alice "confUserID" included in the receipt request, ensures that Alice
has the appropriate authority to fulfill the operation. has the appropriate authority to fulfill the operation.
2. After validating Alice's rights, the conferencing server 2. After validating Alice's rights, the conferencing server
instigates the process to delete the conference object, instigates the process to delete the conference object,
disconnetting participants and removing associated resources such disconnetting participants and removing associated resources such
as mixer instances. Then, the conference server returns a as mixer instances. Then, the conference server returns a
confResponse message to Alice with "200" as "response-code" and confResponse message to Alice with "200" as "response-code" and
the deleted conference XCON-URI in the "confObjID" field. 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 <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:8977794@example.com</confObjID>
<confObjID>xcon:8977794@example.com</confObjID> <operation>delete</operation>
<operation>delete</operation> <ccmp:confRequest/>
<ccmp:confRequest/> </ccmpRequest>
</ccmpRequest> </ccmp:ccmpRequest>
</ccmp:ccmpRequest>
2. confResponse/delete message (200, "success") 2. confResponse/delete message (200, "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 <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:8977794@example.com</confObjID>
<confObjID>xcon:8977794@example.com</confObjID> <operation>delete</operation>
<operation>delete</operation> <response-code>200</response-code>
<response-code>200</response-code> <response-string>success</response-string>
<response-string>success</response-string> <ccmp:confResponse/>
<ccmp:confResponse/> </ccmpResponse>
</ccmpResponse> </ccmp:ccmpResponse>
</ccmp:ccmpResponse>
Figure 32: Deleting a Conference Messaging Details Figure 30: Deleting a Conference Messaging Details
9. IANA Considerations 9. IANA Considerations
This document has no IANA considerations. This document has no IANA considerations.
10. Security Considerations 10. 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 are documented in the XCON Framework, with additional
security considerations documented in the CCMP document. Where security considerations documented in the CCMP document. Statements
applicable, statements with regards to the necessary security are with regards to the necessary security are discussed in particular
discussed in particular flows, however, since this is only an flows, however, this is for informational purposes only. The
informational document, readers are strongly recommended to carefully implementor is encouraged to carefully consider the security
consider the security considerations defined in the XCON Framework requirements in the normative documents.
and the CCMP document.
11. Change Summary 11. 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 The following are the major changes between the 02 and the 03
versions of the draft: versions of the draft:
o updated the call flows in order to take into account the changes o updated the call flows in order to take into account the changes
skipping to change at page 84, line 25 skipping to change at page 81, line 21
13. References 13. References
13.1. Normative References 13.1. Normative References
[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-09 (work in progress), July 2010. draft-ietf-xcon-ccmp-10 (work in progress), July 2010.
13.2. Informative References 13.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.
skipping to change at page 85, line 15 skipping to change at page 82, line 9
[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-19 Conferencing (XCON)", draft-ietf-xcon-common-data-model-20
(work in progress), May 2010. (work in progress), October 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-04 (work in Examples", draft-ietf-mediactrl-call-flows-05 (work in
progress), May 2010. progress), October 2010.
[RFC5567] Melanchuk, T., "An Architectural Framework for Media [RFC5567] Melanchuk, T., "An Architectural Framework for Media
Server Control", RFC 5567, June 2009. Server Control", RFC 5567, June 2009.
[I-D.ietf-mediactrl-mixer-control-package] [I-D.ietf-mediactrl-mixer-control-package]
McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer
Control Package for the Media Control Channel Framework", Control Package for the Media Control Channel Framework",
draft-ietf-mediactrl-mixer-control-package-11 (work in draft-ietf-mediactrl-mixer-control-package-11 (work in
progress), February 2010. progress), February 2010.
 End of changes. 204 change blocks. 
1571 lines changed or deleted 1380 lines changed or added

This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/