RFC 4575 - A Session Initiation Protocol (SIP) Event Package(3)

时间:2006-11-02 来源: 作者: 点击:
conference.Whenknownandmeaningful,includingtheinformation asconveyed/reportedbythecallsignalingintheformatdefined byRFC3326[12]isRECOMMENDED.Forexample, reasonReason:SIP;cause=415;text="UnsupportedMe
  
      conference.  When known and meaningful, including the information
      as conveyed/reported by the call signaling in the format defined
      by RFC 3326 [12] is RECOMMENDED.  For example,

   <reason>Reason: SIP;cause=415;text="Unsupported Media Type"</reason>

   by:  This element contains the URI of the entity that caused the
      endpoint to depart the conference.

5.7.8.  <media>

   This element contains information about a single media stream and is
   included for each media stream being established between the focus
   and the <endpoint>.  The media stream definition can be found in SDP
   [3].

   Note that if the <call-info> sub-element of the endpoint is not
   included in the document by the server, it is possible that the media
   streams listed under the common <endpoint> were established by
   separate signaling sessions.

5.7.9.  <call-info>

   The <call-info> element provides detailed call signaling information
   for a call being maintained between the participant and the focus.
   Privacy policies MUST be consulted before revealing this information
   to other participants.

   The <sip> sub-element contains the SIP dialog identifier of the
   endpoint’s dialog with the focus.  The element includes sub-elements
   <display-text>, <call-id>, <to-tag>, <from-tag>.

   In future, the <call-info> element can be expanded to include call
   signaling protocol information for other protocols besides SIP.

5.8.  <media>

   This section describes the <media> element in more detail.

   A single ’id’ attribute is defined for this element.  This is the
   media stream identifier being generated by the server such that its

   value is unique in the endpoint context.  This attribute is the key
   to refer to a particular media stream in the conference document.

   The following child elements are defined for <media>:

5.8.1.  <display-text>

   This element contains the display text for the media stream.  The
   value of this element corresponds to the SDP description media
   attribute ("i") defined in SDP [3].

5.8.2.  <type>

   This element contains the media type for the media stream.  The value
   of this element MUST be one of the values registered for "media" of
   SDP [3] and its later revision(s).

5.8.3.  <label>

   The <label> element carries a unique identifier for this stream among
   all streams in the conference and is assigned by the focus.  The
   value of this element will typically correspond to the SDP "label"
   media attribute defined in [17] and is exchanged between a
   participant and a focus over the signaling connection between them.

   If the <available-media> information (described in Section 5.3.4) is
   included in the conference document, the value of this element MUST
   be equal to the ’label’ value of the corresponding media stream
   <entry> in the <available-media> container.

5.8.4.  <src-id>

   The <src-id> element, if applicable, carries the information about
   the actual source of the media.  For example, for Real-time Transport
   Protocol (RTP) / RTP Control Protocol (RTCP) [13] media streams, the
   value MUST contain the synchronization source (SSRC) identifier value
   generated by the endpoint for the stream it sends.

   When an RTP mixer generates a contributing source (CSRC) identifiers’
   list according to RTP/RTCP [13], it inserts a list of the SSRC
   identifiers of the sources that contributed to the generation of a
   particular packet into the RTP header of that packet.  A quote from
   RFC 3550 [13] explains as follows: "An example application is audio
   conferencing where a mixer indicates all the talkers whose speech was
   combined to produce the outgoing packet, allowing the receiver to
   indicate the current talker, even though all the audio packets
   contain the same SSRC identifier (that of the mixer)."

   If an RTP mixer compliant to the above is used, participants can
   perform an SSRC to user mapping and identify "a current speaker".

5.8.5.  <status>

   The element <status> indicates the status in both directions of the
   media stream and has the values "sendrecv", "sendonly", "recvonly",
   or "inactive" as defined in SDP [3] and its later revision(s).  Note
   that value specifies the direction from the participant’s point of
   view.  For example, a muted participant’s stream will have the value
   of "recvonly".

5.9.  Sidebars

   If a participant in the main conference joins a sidebar, a new <user>
   element representing the user is created either as a part of a
   separate sub-conference referenced from the <sidebars-by-ref> element
   or under one of the <sidebars-by-val> elements as described below.

   Note that the <user> in the main roster is not being deleted, but its
   media statuses can be updated to reflect the effect being caused by
   his/her participation in the sidebar.  The display of this
   information can vary among subscribers to the same conference
   information, subject to local policies and to the subscriber role
   both in the sidebar and in the main conference.

5.9.1.  <sidebars-by-ref>

   This element contains a set of <entry> child elements, each
   containing a sidebar conference URI.  The recipient of the
   information can then subscribe to sidebar information independently
   from the main conference package subscription.

5.9.2.  <sidebars-by-val>

   This element contains a set of <entry> child elements, each
   containing information about a single sidebar.  By using this element
   of conference-type, the server can include a full or partial
   description of each sidebar (as a sub-conference) in the body of the
   main conference document.

6.  XML Schema

   <?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">
   <!--
     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>

7.  Examples

7.1.  Basic Example

   The following is an example of a full conference information
   document:

   <?xml version="1.0" encoding="UTF-8"?>
   <conference-info
    xmlns="urn:ietf:params:xml:ns:conference-info"
    entity="sips:conf233@example.com"
    state="full" version="1">
   <!--
     CONFERENCE INFO
   -->
    <conference-description>
     <subject>Agenda: This month’s goals</subject>
      <service-uris>
       <entry>
        <uri>http://sharepoint/salesgroup/</uri>
        <purpose>web-page</purpose>
       </entry>
      </service-uris>
     </conference-description>
   <!--
      CONFERENCE STATE
   -->
    <conference-state>
     <user-count>33</user-count>
    </conference-state>
   <!--
     USERS
   -->
    <users>
     <user entity="sip:bob@example.com" state="full">
      <display-text>Bob Hoskins</display-text>
   <!--
     ENDPOINTS
   -->
      <endpoint entity="sip:bob@pc33.example.com">
       <display-text>Bob’s Laptop</display-text>
       <status>disconnected</status>
       <disconnection-method>departed</disconnection-method>
       <disconnection-info>
        <when>2005-03-04T20:00:00Z</when>
        <reason>bad voice quality</reason>
        <by>sip:mike@example.com</by>
       </disconnection-info>

   <!--
     MEDIA
   -->
       <media id="1">
        <display-text>main audio</display-text>
        <type>audio</type>
        <label>34567</label>
        <src-id>432424</src-id>
        <status>sendrecv</status>
       </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>
       <joining-method>dialed-out</joining-method>
       <joining-info>
        <when>2005-03-04T20:00:00Z</when>
        <by>sip:mike@example.com</by>
       </joining-info>
   <!--
     MEDIA
   -->
       <media id="1">
        <display-text>main audio</display-text>
        <type>audio</type>
        <label>34567</label>
        <src-id>534232</src-id>
        <status>sendrecv</status>
       </media>
      </endpoint>
     </user>
    </users>
   </conference-info>

7.2.  Rich Example

   The following is an example of a partial conference information
   document.  In this example, there are 32 participants in a voice
   conference.  The user Bob has been ejected from the conference by
   Mike due to bad voice quality.  Note that there are three sidebars in

   the conference; two are referenced just by their sidebar URIs, and
   information about the third sidebar is included in this notification.
   Also note that while this conference offers both audio and video
   capabilities, only audio is currently in use.
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容