mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-24 18:22:24 -05:00
first draft from authors
This commit is contained in:
parent
f7d59b09c0
commit
c51ee96631
714
inbox/coin.xml
Normal file
714
inbox/coin.xml
Normal file
@ -0,0 +1,714 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!DOCTYPE xep SYSTEM 'xep.dtd' [
|
||||
<!ENTITY % ents SYSTEM 'xep.ent'>
|
||||
%ents;
|
||||
]>
|
||||
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
|
||||
<xep>
|
||||
<header>
|
||||
<title>Delivering Conference Information to Jingle Participants (Coin)</title>
|
||||
<abstract>This specification defines an XMPP extension for tightly coupled
|
||||
conference calls. It allows users who participate in multiparty Jingle
|
||||
calls via a focus agent (mixer) to retrieve information and receive
|
||||
notifications about the state of the call and the other participants.
|
||||
This extension is also meant to provide a straightforward way of
|
||||
connecting SIP and XMPP clients to the same conference room.
|
||||
</abstract>
|
||||
&LEGALNOTICE;
|
||||
<number>xxxx</number>
|
||||
<status>ProtoXEP</status>
|
||||
<type>Standards Track</type>
|
||||
<sig>Standards</sig>
|
||||
<approver>Council</approver>
|
||||
<dependencies>
|
||||
<spec>XEP-0167</spec>
|
||||
</dependencies>
|
||||
<supersedes />
|
||||
<supersededby />
|
||||
<shortname>coin</shortname>
|
||||
<author>
|
||||
<firstname>Emil</firstname>
|
||||
<surname>Ivov</surname>
|
||||
<email>emcho@sip-communicator.org</email>
|
||||
<jid>emcho@sip-communicator.org</jid>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Enrico</firstname>
|
||||
<surname>Marocco</surname>
|
||||
<email>enrico.marocco@telecomitalia.it</email>
|
||||
<jid>enrico@tilab.com </jid>
|
||||
</author>
|
||||
<discuss>jingle</discuss>
|
||||
<revision>
|
||||
<version>0.0.1</version>
|
||||
<date>2011-01-23</date>
|
||||
<initials>ei/em</initials>
|
||||
<remark>
|
||||
<p>First draft.</p>
|
||||
</remark>
|
||||
</revision>
|
||||
</header>
|
||||
<section1 topic='Introduction' anchor='intro'>
|
||||
<p>&xep0166; defines a way for XMPP agents to establish and control
|
||||
one-to-one media sessions. It is possible for either participant in such a
|
||||
session to also establish additional conversations and then serve as a
|
||||
media mixer. This could be viewed as a classic conference call scenario
|
||||
and is also often referred to as a tightly coupled conference.</p>
|
||||
|
||||
<p>Basic participation or hosting of tightly coupled conferences requires
|
||||
no specific protocol support. With the exception of the mixing agent, call
|
||||
members, however, all perceive the session as a regular one-to-one call.
|
||||
They have no way of obtaining additional information about how many and what
|
||||
other users are participating.</p>
|
||||
|
||||
<p>The Coin extension (short for Conference Information) allows media
|
||||
mixers to deliver to participants additional information about the status
|
||||
of the call, and that of its members.</p>
|
||||
|
||||
<p>A conference participant exchanges Coin IQs only with the agent they
|
||||
have established a session with. This means that it can also be used in
|
||||
cases where only a subset of the users on a call are using XMPP while others
|
||||
are connected via alternative mechanisms such as SIP's conference
|
||||
package &rfc4575;</p>
|
||||
</section1>
|
||||
<section1 topic='Terminology' anchor='terms'>
|
||||
<dl>
|
||||
<di>
|
||||
<dt>Mixer</dt>
|
||||
<dd>Throughout this document the term is used to depict an entity that is
|
||||
responsible for mixing and delivering to conference participants both
|
||||
signalling and media. Other specifications refer to mixers and focus
|
||||
agents as two distinct entities but we find this separation to be
|
||||
unnecessary in the current specification and view both as a single logical
|
||||
entity</dd>
|
||||
</di>
|
||||
</dl>
|
||||
</section1>
|
||||
<section1 topic='Requirements' anchor='reqs'>
|
||||
<p>The extension defined herein is designed to meet the following
|
||||
requirements:</p>
|
||||
<ol>
|
||||
<li>Provide a means for mixer agents in tightly coupled
|
||||
conferences to advertise call and member state information to the call
|
||||
participants.</li>
|
||||
<li>Reuse as much as possible the existing format and XML schema already
|
||||
defined in <cite>RFC 4575</cite>.</li>
|
||||
<li>Impose no requirements on agents joining the call other than those
|
||||
necessary to establish a regular one-to-one call.</li>
|
||||
<li>Allow straightforward interoperability with other conferencing
|
||||
mechanisms such as <cite>RFC 4575</cite>; or &xep0272;</li>
|
||||
</ol>
|
||||
</section1>
|
||||
<section1 topic='How It Works' anchor='howitworks'>
|
||||
<p>This section provides a friendly introduction to Coin.</p>
|
||||
<p>In essence Coin allows clients that establish Jingle calls to
|
||||
determine whether their peer is acting as a mixer or to announce themselves
|
||||
as such. This way non-mixer participants would know when they are
|
||||
participating in a conference call and would be able to notify the user
|
||||
accordingly.</p>
|
||||
|
||||
|
||||
<p>Once in a call, call members and mixers can use Coin to exchange
|
||||
<cite>RFC 4575</cite> conference information indicating what participants
|
||||
are currently on the call and what their status is.</p>
|
||||
</section1>
|
||||
<section1 topic='Creating a conference call' anchor='call-create'>
|
||||
<p>When creating conference calls mixers SHOULD indicate the nature of the
|
||||
call as early as possible. This is necessary in order to allow other
|
||||
participating user agents to adapt their user interface in an appropriate
|
||||
way.</p>
|
||||
|
||||
<code caption="A mixer sends session-initiate for a conference call">
|
||||
<![CDATA[
|
||||
<iq from='romeo@montague.lit/orchard'
|
||||
id='zid615d9'
|
||||
to='juliet@capulet.lit/balcony'
|
||||
type='set'>
|
||||
<jingle xmlns='urn:xmpp:jingle:1'>
|
||||
action='session-initiate'
|
||||
initiator='romeo@montague.lit/orchard'
|
||||
sid='a73sjjvkla37jfea'>
|
||||
<content creator='initiator' name='this-is-a-stub'>
|
||||
<description xmlns='urn:xmpp:jingle:apps:stub:0'/>
|
||||
<transport xmlns='urn:xmpp:jingle:transports:stub:0'/>
|
||||
</content>
|
||||
<conference-info isfocus='true'/>
|
||||
</jingle>
|
||||
</iq>
|
||||
]]></code>
|
||||
<p>Similarly mixers being dialed by new participants SHOULD indicate the
|
||||
nature of the call by including the <conference-info/> element into
|
||||
the Jingle session-accept message.</p>
|
||||
<p>Finally, when transforming an existing one-to-one session into a
|
||||
conference or vice-versa a mixer SHOULD send a Jingle session-info message
|
||||
with the appropriate <conference-info/> element. </p>
|
||||
<p>Note that presence of the <conference-info/> element is only
|
||||
determines whether the party sending it is currently acting as a mixer or
|
||||
not. If multiple peers in a call are independently acting as mixers they
|
||||
should all indicate their status accordingly.</p>
|
||||
</section1>
|
||||
<section1 topic='Delivering conference information' anchor='coin-delivery'>
|
||||
<p>Once a conference call has been established and advertised as such, a
|
||||
mixer MAY at any point send information describing the state of the call and
|
||||
its current participants.</p>
|
||||
|
||||
<code caption="Mixer sends information about the current state of the call">
|
||||
<![CDATA[
|
||||
<iq from='romeo@montague.lit/orchard'
|
||||
id='zid615d9'
|
||||
to='juliet@capulet.lit/balcony'
|
||||
type='set'>
|
||||
<conference-info xmlns="urn:ietf:params:xml:ns:conference-info"
|
||||
entity="xmpp:romeo@monague.lit/orchard"
|
||||
state="full"
|
||||
version="1">
|
||||
|
||||
<!-- CONFERENCE INFO -->
|
||||
<conference-description>
|
||||
<subject>Ending a relationship</subject>
|
||||
</conference-description>
|
||||
|
||||
<!-- CONFERENCE STATE -->
|
||||
<conference-state>
|
||||
<user-count>3</user-count>
|
||||
</conference-state>
|
||||
|
||||
<!-- USERS -->
|
||||
<users>
|
||||
<user entity="xmpp:romeo@montague.lit" state="full">
|
||||
<display-text>Romeo</display-text>
|
||||
|
||||
<!-- ENDPOINTS -->
|
||||
<endpoint entity="xmpp:romeo@montague.lit/orchard">
|
||||
<display-text>Romeo's smartphone</display-text>
|
||||
<status>disconnected</status>
|
||||
<disconnection-info>
|
||||
<when>2011-01-31T20:00:00Z</when>
|
||||
<reason>poisoned</reason>
|
||||
</disconnection-info>
|
||||
|
||||
<!-- MEDIA -->
|
||||
<media id="1">
|
||||
<display-text>main audio</display-text>
|
||||
<type>audio</type>
|
||||
<src-id>432424</src-id>
|
||||
</media>
|
||||
</endpoint>
|
||||
</user>
|
||||
|
||||
<user entity="xmpp:juliet@capulet.lit" state="full">
|
||||
<display-text>Romeo</display-text>
|
||||
|
||||
<!-- ENDPOINTS -->
|
||||
<endpoint entity="juliet@capulet.lit/balcony/orchard">
|
||||
<display-text>Juliet's netbook</display-text>
|
||||
<status>connected</status>
|
||||
|
||||
<!-- MEDIA -->
|
||||
<media id="1">
|
||||
<type>audio</type>
|
||||
<src-id>2124</src-id>
|
||||
</media>
|
||||
</endpoint>
|
||||
</user>
|
||||
|
||||
<!-- USER -->
|
||||
<user entity="sip:alice@example.com" state="full">
|
||||
<display-text>Alice</display-text>
|
||||
|
||||
<!-- ENDPOINTS -->
|
||||
<endpoint entity="sip:4kfk4j392jsu@example.com;grid=433kj4j3u">
|
||||
<status>connected</status>
|
||||
|
||||
<!-- MEDIA -->
|
||||
<media id="1">
|
||||
<type>audio</type>
|
||||
<src-id>534232</src-id>
|
||||
</media>
|
||||
</endpoint>
|
||||
</user>
|
||||
</users>
|
||||
</conference-info>
|
||||
</iq>
|
||||
|
||||
]]></code>
|
||||
|
||||
|
||||
</section1>
|
||||
|
||||
|
||||
<section1 topic='Determining Support' anchor='support'>
|
||||
<p>If an entity supports Coin, it SHOULD advertise that fact by returning
|
||||
a feature of "urn:xmpp:coin" in response to a &xep0030;
|
||||
information request.</p>
|
||||
<example caption="Service Discovery Information Request"><![CDATA[
|
||||
<iq from='kingclaudius@shakespeare.lit/castle'
|
||||
id='ku6e51v3'
|
||||
to='laertes@shakespeare.lit/castle'
|
||||
type='get'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#info'/>
|
||||
</iq>
|
||||
]]></example>
|
||||
<example caption="Service Discovery Information Response"><![CDATA[
|
||||
<iq from='laertes@shakespeare.lit/castle'
|
||||
id='ku6e51v3'
|
||||
to='kingclaudius@shakespeare.lit/castle'
|
||||
type='result'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#info'>
|
||||
<feature var='urn:xmpp:coin'/>
|
||||
</query>
|
||||
</iq>
|
||||
]]></example>
|
||||
<p>In order for an application to determine whether an entity supports this
|
||||
protocol, where possible it SHOULD use the dynamic, presence-based profile
|
||||
of service discovery defined in &xep0115;. However, if an application has
|
||||
not received entity capabilities information from an entity, it SHOULD use
|
||||
explicit service discovery instead.</p>
|
||||
</section1>
|
||||
<section1 topic='Security Considerations' anchor='security'>
|
||||
<p>PENDING: <cite>RFC 4575</cite> mostly talks about authentication
|
||||
conference-info subscriptions but these are not part of this specification.
|
||||
The authors are hence currently unaware of any other Coin specific security
|
||||
considerations</p>
|
||||
</section1>
|
||||
<section1 topic='Open Issues' anchor='issues'>
|
||||
<p>This document provides a basic description of a simple way to support
|
||||
tightly coupled conference calls. It is in many respects still a stub and a
|
||||
number of open issues require the attention of the community:</p>
|
||||
<ol>
|
||||
<li>Need to define best practices for user agents to easily determine
|
||||
whether the request of user to establish a conference call should result
|
||||
in a Muji or a Coin conference.</li>
|
||||
</ol>
|
||||
</section1>
|
||||
<section1 topic='XML Schemas' anchor='schema'>
|
||||
<section2 topic='Advertising Conf Calls' anchor='schema-discover'>
|
||||
<code><![CDATA[
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
||||
<xs:schema
|
||||
xmlns:xs='http://www.w3.org/2001/XMLSchema'
|
||||
targetNamespace='urn:xmpp:jingle:apps:coin:1'
|
||||
xmlns='urn:xmpp:jingle:apps:coin:1'
|
||||
elementFormDefault='qualified'>
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
XEP-0XXX: http://www.xmpp.org/extensions/xep-0XXX.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:element name="conference-info" type="empty">
|
||||
<xs:complexType>
|
||||
<xs:attribute name='isfocus' type='xs:boolean' required='true'/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
</xs:schema>
|
||||
]]></code>
|
||||
</section2>
|
||||
<section2 topic='Conference Info' anchor='schema-coin'>
|
||||
<code><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<xs:schema
|
||||
targetNamespace="urn:ietf:params:xml:ns:conference-info"
|
||||
xmlns:tns="urn:ietf:params:xml:ns:conference-info"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="urn:ietf:params:xml:ns:conference-info"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The protocol documented by this schema is defined in
|
||||
RFC 4575: http://tools.ietf.org/html/rfc4575 and reused by
|
||||
XEP XXXX http://www.xmpp.org/extensions/xep-XXXX.html
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<!--
|
||||
This imports the xml:language definition
|
||||
-->
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
|
||||
<!--
|
||||
CONFERENCE ELEMENT
|
||||
-->
|
||||
<xs:element name="conference-info" type="conference-type"/>
|
||||
<!--
|
||||
CONFERENCE TYPE
|
||||
-->
|
||||
<xs:complexType name="conference-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="conference-description"
|
||||
type="conference-description-type" minOccurs="0"/>
|
||||
<xs:element name="host-info"
|
||||
type="host-type" minOccurs="0"/>
|
||||
<xs:element name="conference-state"
|
||||
type="conference-state-type" minOccurs="0"/>
|
||||
<xs:element name="users"
|
||||
type="users-type" minOccurs="0"/>
|
||||
<xs:element name="sidebars-by-ref"
|
||||
type="uris-type" minOccurs="0"/>
|
||||
<xs:element name="sidebars-by-val"
|
||||
type="sidebars-by-val-type" minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="entity"
|
||||
type="xs:anyURI" use="required"/>
|
||||
<xs:attribute name="state"
|
||||
type="state-type" use="optional" default="full"/>
|
||||
<xs:attribute name="version"
|
||||
type="xs:unsignedInt" use="optional"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
STATE TYPE
|
||||
-->
|
||||
<xs:simpleType name="state-type">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="full"/>
|
||||
<xs:enumeration value="partial"/>
|
||||
<xs:enumeration value="deleted"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
CONFERENCE DESCRIPTION TYPE
|
||||
-->
|
||||
<xs:complexType name="conference-description-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text"
|
||||
type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="subject"
|
||||
type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="free-text"
|
||||
type="xs:string" minOccurs="0"/>
|
||||
<xs:element name="keywords"
|
||||
type="keywords-type" minOccurs="0"/>
|
||||
<xs:element name="conf-uris"
|
||||
type="uris-type" minOccurs="0"/>
|
||||
<xs:element name="service-uris"
|
||||
type="uris-type" minOccurs="0"/>
|
||||
<xs:element name="maximum-user-count"
|
||||
type="xs:unsignedInt" minOccurs="0"/>
|
||||
<xs:element name="available-media"
|
||||
type="conference-media-type" minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
HOST TYPE
|
||||
-->
|
||||
<xs:complexType name="host-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="web-page" type="xs:anyURI"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="uris" type="uris-type"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
CONFERENCE STATE TYPE
|
||||
-->
|
||||
<xs:complexType name="conference-state-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="user-count" type="xs:unsignedInt"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="active" type="xs:boolean"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="locked" type="xs:boolean"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
CONFERENCE MEDIA TYPE
|
||||
-->
|
||||
<xs:complexType name="conference-media-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" type="conference-medium-type"
|
||||
maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
CONFERENCE MEDIUM TYPE
|
||||
-->
|
||||
<xs:complexType name="conference-medium-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="type" type="xs:string"/>
|
||||
<xs:element name="status" type="media-status-type"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="label" type="xs:string"
|
||||
use="required"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
URIs TYPE
|
||||
-->
|
||||
<xs:complexType name="uris-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" type="uri-type"
|
||||
maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="state" type="state-type"
|
||||
use="optional" default="full"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
URI TYPE
|
||||
-->
|
||||
<xs:complexType name="uri-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="uri" type="xs:anyURI"/>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="purpose" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="modified" type="execution-type"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
KEYWORDS TYPE
|
||||
-->
|
||||
<xs:simpleType name="keywords-type">
|
||||
<xs:list itemType="xs:string"/>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
USERS TYPE
|
||||
-->
|
||||
<xs:complexType name="users-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="user" type="user-type"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="state" type="state-type"
|
||||
use="optional" default="full"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
USER TYPE
|
||||
-->
|
||||
<xs:complexType name="user-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="associated-aors" type="uris-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="roles" type="user-roles-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="languages" type="user-languages-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="cascaded-focus" type="xs:anyURI"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="endpoint" type="endpoint-type"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="entity" type="xs:anyURI"/>
|
||||
<xs:attribute name="state" type="state-type"
|
||||
use="optional" default="full"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
USER ROLES TYPE
|
||||
-->
|
||||
<xs:complexType name="user-roles-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" type="xs:string"
|
||||
maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
USER LANGUAGES TYPE
|
||||
-->
|
||||
<xs:simpleType name="user-languages-type">
|
||||
<xs:list itemType="xs:language"/>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
ENDPOINT TYPE
|
||||
-->
|
||||
<xs:complexType name="endpoint-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="referred" type="execution-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="status" type="endpoint-status-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="joining-method" type="joining-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="joining-info"
|
||||
type="execution-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="disconnection-method"
|
||||
type="disconnection-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="disconnection-info"
|
||||
type="execution-type"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="media" type="media-type"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="call-info" type="call-type"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="entity" type="xs:string"/>
|
||||
<xs:attribute name="state" type="state-type"
|
||||
use="optional" default="full"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
ENDPOINT STATUS TYPE
|
||||
-->
|
||||
<xs:simpleType name="endpoint-status-type">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="pending"/>
|
||||
<xs:enumeration value="dialing-out"/>
|
||||
<xs:enumeration value="dialing-in"/>
|
||||
<xs:enumeration value="alerting"/>
|
||||
<xs:enumeration value="on-hold"/>
|
||||
<xs:enumeration value="connected"/>
|
||||
<xs:enumeration value="muted-via-focus"/>
|
||||
<xs:enumeration value="disconnecting"/>
|
||||
<xs:enumeration value="disconnected"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
JOINING TYPE
|
||||
-->
|
||||
<xs:simpleType name="joining-type">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="dialed-in"/>
|
||||
<xs:enumeration value="dialed-out"/>
|
||||
<xs:enumeration value="focus-owner"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
DISCONNECTION TYPE
|
||||
-->
|
||||
<xs:simpleType name="disconnection-type">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="departed"/>
|
||||
<xs:enumeration value="booted"/>
|
||||
<xs:enumeration value="failed"/>
|
||||
<xs:enumeration value="busy"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
EXECUTION TYPE
|
||||
-->
|
||||
<xs:complexType name="execution-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="when" type="xs:dateTime"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="reason" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="by" type="xs:anyURI"
|
||||
minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
CALL TYPE
|
||||
-->
|
||||
<xs:complexType name="call-type">
|
||||
<xs:choice>
|
||||
<xs:element name="sip" type="sip-dialog-id-type"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:choice>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
SIP DIALOG ID TYPE
|
||||
-->
|
||||
<xs:complexType name="sip-dialog-id-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="call-id" type="xs:string"/>
|
||||
<xs:element name="from-tag" type="xs:string"/>
|
||||
<xs:element name="to-tag" type="xs:string"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
MEDIA TYPE
|
||||
-->
|
||||
<xs:complexType name="media-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="display-text" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="type" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="label" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="src-id" type="xs:string"
|
||||
minOccurs="0"/>
|
||||
<xs:element name="status" type="media-status-type"
|
||||
minOccurs="0"/>
|
||||
<xs:any namespace="##other" processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" type="xs:string"
|
||||
use="required"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
<!--
|
||||
MEDIA STATUS TYPE
|
||||
-->
|
||||
<xs:simpleType name="media-status-type">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="recvonly"/>
|
||||
<xs:enumeration value="sendonly"/>
|
||||
<xs:enumeration value="sendrecv"/>
|
||||
<xs:enumeration value="inactive"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!--
|
||||
SIDEBARS BY VAL TYPE
|
||||
-->
|
||||
<xs:complexType name="sidebars-by-val-type">
|
||||
<xs:sequence>
|
||||
<xs:element name="entry" type="conference-type"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="state" type="state-type"
|
||||
use="optional" default="full"/>
|
||||
<xs:anyAttribute namespace="##other" processContents="lax"/>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
|
||||
</xs:schema>
|
||||
]]></code>
|
||||
</section2>
|
||||
</section1>
|
||||
</xep>
|
Loading…
Reference in New Issue
Block a user