Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 5022

Media Server Control Markup Language (MSCML) and Protocol

Pages: 81
Informational
Errata
Obsoletes:  4722
Part 4 of 4 – Pages 62 to 81
First   Prev   None

Top   ToC   RFC5022 - Page 62   prevText

11. Formal Syntax

The following syntax specification uses XML Schema as described in XML [7].

11.1. Schema

<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="MediaServerControl"> <xs:complexType> <xs:choice> <xs:element name="request"> <xs:complexType> <xs:choice> <xs:element name="configure_conference" type="configure_conferenceRequestType"/> <xs:element name="configure_leg" type="configure_legRequestType"/> <xs:element name="play" type="playRequestType"/> <xs:element name="playcollect" type="playcollectRequestType"/> <xs:element name="playrecord" type="playrecordRequestType"/>
Top   ToC   RFC5022 - Page 63
                 <xs:element name="managecontent"
                   type="managecontentRequestType"/>
                 <xs:element name="faxplay"
                   type="faxRequestType"/>
                 <xs:element name="faxrecord"
                   type="faxRequestType"/>
                 <xs:element name="stop" type="stopRequestType"/>
               </xs:choice>
             </xs:complexType>
           </xs:element>
           <xs:element name="response" type="responseType"/>
           <xs:element name="notification">
             <xs:complexType>
               <xs:choice>
                 <xs:element name="conference"
                   type="conferenceNotificationType"/>
                 <xs:element name="keypress"
                   type="keypressNotificationType"/>
                 <xs:element name="signal"
                   type="signalNotificationType"/>
               </xs:choice>
             </xs:complexType>
           </xs:element>
         </xs:choice>
         <xs:attribute name="version" use="required"/>
       </xs:complexType>
     </xs:element>
     <!-- Definitions for base and concrete MSCML requests -->
     <!-- and embedded types. -->
     <xs:complexType name="base_requestType" abstract="true">
       <xs:attribute name="id" type="xs:string"/>
     </xs:complexType>
     <xs:complexType name="playRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:sequence>
             <xs:element name="prompt" type="promptType"
               minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="prompturl" type="xs:string"/>
           <xs:attribute name="offset" type="xs:string"/>
           <xs:attribute name="promptencoding" type="xs:string"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="configure_conferenceRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
Top   ToC   RFC5022 - Page 64
           <xs:sequence>
             <xs:element name="subscribe"
               type="conference_eventsubscriptionType" minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="reservedtalkers"
             type="xs:positiveInteger"/>
           <xs:attribute name="reserveconfmedia" type="yesnoType"
             default="yes"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="configure_legRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:sequence>
             <xs:element name="inputgain" type="gainType"
               minOccurs="0"/>
             <xs:element name="outputgain" type="gainType"
               minOccurs="0"/>
             <xs:element name="configure_team"
               type="configure_teamType" minOccurs="0"/>
             <xs:element name="subscribe"
               type="leg_eventsubscriptionType" minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="type">
             <xs:simpleType>
               <xs:restriction base="xs:NMTOKEN">
                 <xs:enumeration value="talker"/>
                 <xs:enumeration value="listener"/>
               </xs:restriction>
             </xs:simpleType>
           </xs:attribute>
           <xs:attribute name="mixmode">
             <xs:simpleType>
               <xs:restriction base="xs:NMTOKEN">
                 <xs:enumeration value="full"/>
                 <xs:enumeration value="mute"/>
                 <xs:enumeration value="preferred"/>
                 <xs:enumeration value="parked"/>
                 <xs:enumeration value="private"/>
               </xs:restriction>
             </xs:simpleType>
           </xs:attribute>
           <xs:attribute name="dtmfclamp" type="yesnoType"/>
           <xs:attribute name="toneclamp" type="yesnoType"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
Top   ToC   RFC5022 - Page 65
     <xs:complexType name="configure_teamType">
       <xs:sequence>
         <xs:element name="teammate" type="teammateType" minOccurs="0"
           maxOccurs="unbounded"/>
       </xs:sequence>
       <xs:attribute name="id" type="xs:string"/>
       <xs:attribute name="action" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:string">
             <xs:enumeration value="add"/>
             <xs:enumeration value="delete"/>
             <xs:enumeration value="query"/>
             <xs:enumeration value="set"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
     </xs:complexType>
     <xs:complexType name="teammateType">
       <xs:attribute name="id" type="xs:string" use="required"/>
     </xs:complexType>
     <xs:complexType name="playcollectRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:sequence>
             <xs:element name="prompt" type="promptType"
               minOccurs="0"/>
             <xs:element name="pattern" type="dtmfGrammarType"
               minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="prompturl" type="xs:string"/>
           <xs:attribute name="offset" type="xs:string"/>
           <xs:attribute name="barge" type="yesnoType" default="yes"/>
           <xs:attribute name="promptencoding" type="xs:string"/>
           <xs:attribute name="cleardigits" type="yesnoType"
             default="no"/>
           <xs:attribute name="maxdigits" type="xs:string"/>
           <xs:attribute name="firstdigittimer" type="xs:string"
             default="5000ms"/>
           <xs:attribute name="interdigittimer" type="xs:string"
             default="2000ms"/>
           <xs:attribute name="extradigittimer" type="xs:string"
             default="1000ms"/>
           <xs:attribute name="interdigitcriticaltimer"
             type="xs:string"/>
           <xs:attribute name="skipinterval" type="xs:string"
             default="6s"/>
           <xs:attribute name="ffkey" type="DTMFkeyType"/>
           <xs:attribute name="rwkey" type="DTMFkeyType"/>
Top   ToC   RFC5022 - Page 66
           <xs:attribute name="returnkey" type="DTMFkeyType"
             default="#"/>
           <xs:attribute name="escapekey" type="DTMFkeyType"
             default="*"/>
           <xs:attribute name="maskdigits" type="yesnoType"
             default="no"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="playrecordRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:sequence>
             <xs:element name="prompt" type="promptType"
               minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="prompturl" type="xs:string"/>
           <xs:attribute name="promptencoding" type="xs:string"/>
           <xs:attribute name="offset" type="xs:string" default="0"/>
           <xs:attribute name="barge" type="yesnoType" default="yes"/>
           <xs:attribute name="cleardigits" type="yesnoType"
             default="no"/>
           <xs:attribute name="escapekey" type="xs:string" default="*"/>
           <xs:attribute name="recurl" type="xs:string" use="required"/>
           <xs:attribute name="mode" default="overwrite">
             <xs:simpleType>
               <xs:restriction base="xs:NMTOKEN">
                 <xs:enumeration value="append"/>
                 <xs:enumeration value="overwrite"/>
               </xs:restriction>
             </xs:simpleType>
           </xs:attribute>
           <xs:attribute name="recencoding" type="xs:string"/>
           <xs:attribute name="initsilence" type="xs:string"/>
           <xs:attribute name="endsilence" type="xs:string"/>
           <xs:attribute name="duration" type="xs:string"/>
           <xs:attribute name="beep" type="yesnoType" default="yes"/>
           <xs:attribute name="recstopmask" type="xs:string"
             default="01234567890*#"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="managecontentRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:attribute name="fetchtimeout" type="xs:string"
             default="10000"/>
           <xs:attribute name="mimetype" type="xs:string"/>
Top   ToC   RFC5022 - Page 67
           <xs:attribute name="name" type="xs:string"/>
           <xs:attribute name="httpmethod">
             <xs:simpleType>
               <xs:restriction base="xs:NMTOKEN">
                 <xs:enumeration value="put"/>
                 <xs:enumeration value="post"/>
               </xs:restriction>
             </xs:simpleType>
           </xs:attribute>
           <xs:attribute name="action">
             <xs:simpleType>
               <xs:restriction base="xs:NMTOKEN">
                 <xs:enumeration value="move"/>
                 <xs:enumeration value="delete"/>
               </xs:restriction>
             </xs:simpleType>
           </xs:attribute>
           <xs:attribute name="dest" type="xs:string"/>
           <xs:attribute name="src" type="xs:string" use="required"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="stopRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType"/>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="faxRequestType">
       <xs:complexContent>
         <xs:extension base="base_requestType">
           <xs:sequence>
             <xs:element name="prompt" type="promptType" minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="lclid" type="xs:string"/>
           <xs:attribute name="prompturl" type="xs:string"/>
           <xs:attribute name="recurl" type="xs:string"/>
           <xs:attribute name="rmtid" type="xs:string"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     <xs:complexType name="dtmfGrammarType">
       <xs:choice>
         <xs:element name="regex" type="dtmfPatternType"
           maxOccurs="unbounded"/>
         <xs:element name="mgcpdigitmap" type="dtmfPatternType"/>
         <xs:element name="megacodigitmap" type="dtmfPatternType"/>
       </xs:choice>
     </xs:complexType>
Top   ToC   RFC5022 - Page 68
     <xs:complexType name="dtmfPatternType">
       <xs:attribute name="value" type="xs:string" use="required"/>
       <xs:attribute name="name" type="xs:string"/>
     </xs:complexType>
     <!-- Definitions for base and concrete MSCML responses -->
     <!-- and embedded types. -->
     <xs:complexType name="base_responseType" abstract="true">
       <xs:attribute name="request" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="configure_conference"/>
             <xs:enumeration value="configure_leg"/>
             <xs:enumeration value="play"/>
             <xs:enumeration value="playcollect"/>
             <xs:enumeration value="playrecord"/>
             <xs:enumeration value="managecontent"/>
             <xs:enumeration value="faxplay"/>
             <xs:enumeration value="faxrecord"/>
             <xs:enumeration value="stop"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="id" type="xs:string"/>
       <xs:attribute name="code" type="xs:string" use="required"/>
       <xs:attribute name="text" type="xs:string" use="required"/>
     </xs:complexType>
     <xs:complexType name="responseType">
       <xs:complexContent>
         <xs:extension base="base_responseType">
           <xs:sequence>
             <xs:element name="error_info"
               type="stoponerrorResponseType" minOccurs="0"/>
             <xs:element name="team" type="configure_teamResponseType"
               minOccurs="0"/>
           </xs:sequence>
           <xs:attribute name="reason" type="xs:string"/>
           <xs:attribute name="reclength" type="xs:string"/>
           <xs:attribute name="recduration" type="xs:string"/>
           <xs:attribute name="digits" type="xs:string"/>
           <xs:attribute name="name" type="xs:string"/>
           <xs:attribute name="playduration" type="xs:string"/>
           <xs:attribute name="playoffset" type="xs:string"/>
           <xs:attribute name="faxcode" type="xs:string"/>
           <xs:attribute name="pages_sent" type="xs:string"/>
           <xs:attribute name="pages_recv" type="xs:string"/>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
Top   ToC   RFC5022 - Page 69
     <xs:complexType name="stoponerrorResponseType">
       <xs:attribute name="code" type="xs:string" use="required"/>
       <xs:attribute name="text" type="xs:string" use="required"/>
       <xs:attribute name="context" type="xs:string" use="required"/>
     </xs:complexType>
     <xs:complexType name="configure_teamResponseType">
       <xs:sequence>
         <xs:element name="teammate" type="teammateType" minOccurs="0"
           maxOccurs="unbounded"/>
       </xs:sequence>
       <xs:attribute name="id" type="xs:string" use="required"/>
       <xs:attribute name="numteam" type="xs:integer" use="required"/>
     </xs:complexType>
     <!-- Definitions for MSCML event subscriptions and -->
     <!-- embedded types -->
     <xs:complexType name="conference_eventsubscriptionType">
       <xs:sequence>
         <xs:element name="events">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="activetalkers"
                 type="activetalkersSubscriptionType"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
     <xs:complexType name="activetalkersSubscriptionType">
       <xs:attribute name="report" type="yesnoType" use="required"/>
       <xs:attribute name="interval" type="xs:string" default="60s"/>
     </xs:complexType>
     <xs:complexType name="leg_eventsubscriptionType">
       <xs:sequence>
         <xs:element name="events">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="keypress"
                 type="keypressSubscriptionType" minOccurs="0"
                   maxOccurs="1"/>
               <xs:element name="signal" type="signalSubscriptionType"
                 minOccurs="0" maxOccurs="unbounded"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
     <xs:complexType name="keypressSubscriptionType">
       <xs:attribute name="report" use="required">
Top   ToC   RFC5022 - Page 70
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="standard"/>
             <xs:enumeration value="long"/>
             <xs:enumeration value="both"/>
             <xs:enumeration value="none"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="maskdigits" type="yesnoType" default="no"/>
     </xs:complexType>
     <xs:complexType name="signalSubscriptionType">
       <xs:attribute name="type" type="xs:NMTOKEN" use="required"/>
       <xs:attribute name="report" type="yesnoType" use="required"/>
     </xs:complexType>
     <!-- Definitions for MSCML event notifications and -->
     <!-- embedded types. -->
     <xs:complexType name="conferenceNotificationType">
       <xs:sequence>
         <xs:element name="activetalkers"
           type="activetalkersNotificationType" minOccurs="0"/>
       </xs:sequence>
       <xs:attribute name="uniqueid" type="xs:string" use="required"/>
       <xs:attribute name="numtalkers" type="xs:string"
         use="required"/>
     </xs:complexType>
     <xs:complexType name="activetalkersNotificationType">
       <xs:sequence minOccurs="0">
         <xs:element name="talker" maxOccurs="unbounded">
           <xs:complexType>
             <xs:attribute name="callid" type="xs:string"
              use="required"/>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
     <xs:complexType name="keypressNotificationType">
       <xs:sequence>
         <xs:element name="status" type="statusType"/>
       </xs:sequence>
       <xs:attribute name="digit" type="DTMFkeyType" use="required"/>
       <xs:attribute name="length" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="standard"/>
             <xs:enumeration value="long"/>
           </xs:restriction>
         </xs:simpleType>
Top   ToC   RFC5022 - Page 71
       </xs:attribute>
       <xs:attribute name="method" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="standard"/>
             <xs:enumeration value="long"/>
             <xs:enumeration value="double"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="interdigittime" type="xs:string"
         use="required"/>
     </xs:complexType>
     <xs:complexType name="statusType">
       <xs:attribute name="command" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:string">
             <xs:enumeration value="idle"/>
             <xs:enumeration value="play"/>
             <xs:enumeration value="collect"/>
             <xs:enumeration value="record"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="duration" type="xs:string" use="required"/>
     </xs:complexType>
     <xs:complexType name="signalNotificationType">
       <xs:attribute name="type" use="required" fixed="busy"/>
     </xs:complexType>
     <!-- Definitions for miscellaneous embedded, helper data types -->
     <xs:complexType name="promptType">
       <xs:choice maxOccurs="unbounded">
         <xs:element name="audio" type="promptcontentType"/>
         <xs:element name="variable" type="spokenvariableType"/>
       </xs:choice>
       <xs:attribute name="locale" type="xs:string"/>
       <xs:attribute name="baseurl" type="xs:string"/>
       <xs:attribute name="stoponerror" type="yesnoType" default="no"/>
       <xs:attribute name="gain" type="xs:string" default="0"/>
       <xs:attribute name="gaindelta" type="xs:string" default="0"/>
       <xs:attribute name="rate" type="xs:string" default="0"/>
       <xs:attribute name="ratedelta" type="xs:string" default="0"/>
       <xs:attribute name="repeat" type="xs:string" default="1"/>
       <xs:attribute name="duration" type="xs:string"
         default="infinite"/>
       <xs:attribute name="offset" type="xs:string" default="0"/>
       <xs:attribute name="delay" type="xs:string" default="0"/>
     </xs:complexType>
Top   ToC   RFC5022 - Page 72
     <xs:complexType name="promptcontentType">
       <xs:attribute name="url" type="xs:string" use="required"/>
       <xs:attribute name="encoding" type="xs:string"/>
       <xs:attribute name="gain" type="xs:string" default="0"/>
       <xs:attribute name="gaindelta" type="xs:string" default="0"/>
       <xs:attribute name="rate" type="xs:string" default="0"/>
       <xs:attribute name="ratedelta" type="xs:string" default="0"/>
     </xs:complexType>
     <xs:complexType name="spokenvariableType">
       <xs:attribute name="type" use="required">
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="dat"/>
             <xs:enumeration value="dig"/>
             <xs:enumeration value="dur"/>
             <xs:enumeration value="mth"/>
             <xs:enumeration value="mny"/>
             <xs:enumeration value="num"/>
             <xs:enumeration value="sil"/>
             <xs:enumeration value="str"/>
             <xs:enumeration value="tme"/>
             <xs:enumeration value="wkd"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="subtype">
         <xs:simpleType>
           <xs:restriction base="xs:NMTOKEN">
             <xs:enumeration value="mdy"/>
             <xs:enumeration value="dmy"/>
             <xs:enumeration value="ymd"/>
             <xs:enumeration value="ndn"/>
             <xs:enumeration value="t12"/>
             <xs:enumeration value="t24"/>
             <xs:enumeration value="USD"/>
             <xs:enumeration value="gen"/>
             <xs:enumeration value="ndn"/>
             <xs:enumeration value="crd"/>
             <xs:enumeration value="ord"/>
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
       <xs:attribute name="value" type="xs:string" use="required"/>
     </xs:complexType>
     <xs:simpleType name="yesnoType">
       <xs:restriction base="xs:NMTOKEN">
         <xs:enumeration value="yes"/>
         <xs:enumeration value="no"/>
Top   ToC   RFC5022 - Page 73
         <xs:enumeration value="1"/>
         <xs:enumeration value="0"/>
         <xs:enumeration value="true"/>
         <xs:enumeration value="false"/>
       </xs:restriction>
     </xs:simpleType>
     <xs:simpleType name="DTMFkeyType">
       <xs:restriction base="xs:string">
         <xs:pattern value="[0-9]"/>
         <xs:pattern value="[A-D]"/>
         <xs:pattern value="[a-d]"/>
         <xs:pattern value="#"/>
         <xs:pattern value="\*"/>
       </xs:restriction>
     </xs:simpleType>
     <xs:complexType name="gainType">
       <xs:choice>
         <xs:element name="auto" type="autogainType"/>
         <xs:element name="fixed" type="fixedgainType"/>
       </xs:choice>
     </xs:complexType>
     <xs:complexType name="autogainType">
       <xs:attribute name="startlevel" type="xs:string"/>
       <xs:attribute name="targetlevel" type="xs:string"/>
       <xs:attribute name="silencethreshold" type="xs:string"/>
     </xs:complexType>
     <xs:complexType name="fixedgainType">
       <xs:attribute name="level" type="xs:string"/>
     </xs:complexType>
   </xs:schema>

12. IANA Considerations

12.1. IANA Registration of MIME Media Type application/ mediaservercontrol+xml

MIME media type name: application MIME subtype name: mediaservercontrol+xml Required parameters: none Optional parameters: charset charset This parameter has identical semantics to the charset parameter of the "application/xml" media type, as specified in XML Media Types [8]. Encoding considerations: See RFC 3023 [8]. Interoperability considerations: See RFC 2023 [8] and RFC 5022. Published specification: RFC 5022
Top   ToC   RFC5022 - Page 74
   Applications that use this media type: Multimedia, enhanced
      conferencing and interactive applications.
   Personal and email address for further
      information: eburger@cantata.com [31]
   Intended usage: COMMON

13. Security Considerations

Because media flows through a media server in a conference, the media server itself MUST protect the integrity, confidentiality, and security of the sessions. It should not be possible for a conference participant, on her own behalf, to be able to "tap in" to another conference without proper authorization. Because conferencing is a high-value application, the media server SHOULD implement appropriate security measures. This includes, but is not limited to, access lists for application servers. That is, the media server only allows a select list of application or proxy servers to create conferences, to invite participants to sessions, etc. Note that the mechanisms for such security, like private networks, shared certificates, MAC white/black lists, are beyond the scope of this document. Security concerns are one important reason MSCML limits requests with conference scope to a separate control leg per conference. MSCML uses the simple, proven, Internet-scale security model of SIP to determine if a client is who they say they are (authentication) and if they are allowed to create and manipulate a conference. However, the security model to enable a control leg to manipulate arbitrary conferences on the media server is extremely difficult. Not only would one need to authenticate and authorize the basic conference primitives, but privacy considerations require policies for one client to access another client's conferences, even if the two clients are on the same host. For example, if the media server allowed any control leg to control any conference, an authorized but unrelated client could maliciously attach itself to an existing session and record or tap the conversation without the participant's knowledge or consent. Participants give implicit authorization to their applications by virtue of the INVITE to the application. However, there is no trust, explicit or implicit, between the users of one service and a distinct client of another service. All MSCML messages are sent within an INVITE-created SIP dialog. As a result, it would be difficult for an entity other than the original requestor to interfere with an established MSCML session, as this would require detailed information on the dialog state. This allows
Top   ToC   RFC5022 - Page 75
   multiple applications to utilize the resources of a single media
   server simultaneously without interfering with one another.

   Because of the sensitive nature of collected data, such as credit
   card numbers or other identifying information, the media server MUST
   support sips: and TLS.  Clients, who presumably know the value of the
   information they collect, as well as the privacy expectations of
   their users, are free to use clear text signaling or encrypted secure
   signaling, depending on the application's needs.  Likewise, the media
   server SHOULD support Secure Realtime Transport Protocol (SRTP) [9].
   Again, the clients are free to negotiate the appropriate level of
   media security.

   The media management facilities of MSCML, such as the <managecontent>
   (Section 8) request, assume a trust relationship between the media
   server and file server.  This scenario is similar to the one
   addressed by URLAUTH [20].  Namely, the media server is acting on
   behalf of a given user, yet the media server does not have
   credentials for that user.  One might be tempted to use the user:pass
   facility of the HTTP URI to offer per-user security, but that also
   requires that the media server be secure, as the media server would
   need to know the user credentials in a form that is easily
   compromised (clear text passwords).

   The IETF is investigating methods for providing per-user or per-
   instance authorization of third-party http writing, as is needed for
   other protocols as well, such as WEBDAV [21].  However, until that
   work is completed, media server implementations MUST be prepared to
   authenticate themselves to file and web servers using appropriate
   authentication means.  At a minimum, the media server MUST support
   HTTPS basic authentication.  Implementers should note that the media
   server will need to respond appropriately to whatever authentication
   mechanism the file server requires.

   As this is an XML markup, all the security considerations of RFC 3023
   [8] apply.

14. References

14.1. Normative References

[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [2] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network Media Services with SIP", RFC 4240, December 2005. [3] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000.
Top   ToC   RFC5022 - Page 76
   [4]   Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
         Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
         Session Initiation Protocol", RFC 3261, June 2002.

   [5]   "Network call signalling protocol for the delivery of time-
         critical services over cable television networks using cable
         modems", ITU-T J.162, March 2001.

   [6]   Groves, C., Pantaleo, M., Anderson, T., and T. Taylor, "Gateway
         Control Protocol Version 1", RFC 3525, June 2003.

   [7]   Thompson, H., Beech, D., Maloney, M., and N. Mendelsohn, "XML
         Schema Part 1: Structures", W3C REC REC-xmlschema-1-20010502,
         May 2001.

   [8]   Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types",
         RFC 3023, January 2001.

   [9]   Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
         Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC
         3711, March 2004.

14.2. Informative References

[10] Rosenberg, J., "A Framework for Conferencing with the Session Initiation Protocol (SIP)", RFC 4353, February 2006. [11] Carter, J., Danielsen, P., Hunt, A., Ferrans, J., Lucas, B., Porter, B., Rehor, K., Tryphonas, S., McGlashan, S., and D. Burnett, "Voice Extensible Markup Language (VoiceXML) Version 2.0", W3C REC REC-voicexml20-20040316, March 2004. [12] International Packet Communications Consortium, "IPCC Reference Architecture V2", June 2002. [13] European Telecommunications Standards Institute, "Digital cellular telecommunications system (Phase 2+); Universal Mobile Telecommunications System (UMTS); IP Multimedia Subsystem (IMS); Stage 2 (3GPP TS 23.228 version 7.2.0 Release 7)", December 2005. [14] Hollenbeck, S., Rose, M., and L. Masinter, "Guidelines for the Use of Extensible Markup Language (XML) within IETF Protocols", BCP 70, RFC 3470, January 2003. [15] Jacobs, I., Lie, H., Bos, B., and C. Lilley, "Cascading Style Sheets, level 2 (CSS2) Specification", W3C REC REC-CSS2- 19980512, May 1998.
Top   ToC   RFC5022 - Page 77
   [16]  Rosenberg, J., Schulzrinne, H., and O. Levin, "A Session
         Initiation Protocol (SIP) Event Package for Conference State",
         RFC 4575, August 2006.

   [17]  Cable Television Laboratories, Inc., "Audio Server Protocol",
         January 2005.

   [18]  "Procedures for document facsimile transmission in the general
         switched telephone network", Recommendation T.30, April 1999.

   [19]  "Procedures for real-time Group 3 facsimile communication over
         IP networks", Recommendation T.38, March 2002.

   [20]  Crispin, M., "Internet Message Access Protocol (IMAP) - URLAUTH
         Extension", RFC 4467, May 2006.

   [21]  Dusseault, L., Ed., "HTTP Extensions for Web Distributed
         Authoring and Versioning (WebDAV)", RFC 4918, June 2007.

   [22]  Institute of Electrical and Electronics Engineers, "Information
         Technology - Portable Operating System Interface (POSIX) - Part
         1: Base Definitions, Chapter 9", IEEE Standard 1003.1, June
         2001.

   [23]  Burger, E. and M. Dolly, "A Session Initiation Protocol (SIP)
         Event Package for Key Press Stimulus (KPML)", RFC 4730,
         November 2006.

   [24]  Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, April
         2001.

   [25]  Campbell, B., Ed., Mahy, R., Ed., and C. Jennings, Ed., "The
         Message Session Relay Protocol", Work in Progress, February
         2007.

URIs

[26] <http://www.ietf.org/html.charters/sip-charter.html> [27] <http://www.ietf.org/html.charters/sipping-charter.html> [28] <http://www.ietf.org/html.charters/mmusic.html> [29] <http://www.ietf.org/html.charters/xcon-charter.html> [30] <http://www.3gpp.org/ftp/Specs/html-info/23228.htm> [31] <mailto:eburger@cantata.com>
Top   ToC   RFC5022 - Page 78

Appendix A. Regex Grammar Syntax

The regular expression syntax used in MSCML is a telephony-oriented subset of POSIX Extended Regular Expressions (ERE) [22] termed Digit REGular EXpression (DRegex). This syntax was first described in KPML [23]. DRegex includes ordinary characters, special characters, bracket expressions, and interval expressions. These entities are defined in the list below. . matches digits 0-9, *, #, and A-D (case insensitive) * matches the * character # matches the # character [character selector] matches any character in selector [range1-range2] matches any character in range from range1 to range2, inclusive x matches any digit 0-9 {m} matches m repetitions of the previous pattern {m,} matches m or more repetitions of the previous pattern {,n} matches at most n (including zero) repetitions of the previous pattern {m,n} at least m and at most n repetitions of the previous pattern L the presence of 'L' in any regex expression causes the media server to enable "long" digit detection mode. See Section 7.1 for the definition of "long" digits. Table 7 illustrates DRegex usage through examples. +--------------+--------------------------------------------+ | Example | Description | +--------------+--------------------------------------------+ | 1 | Matches the digit 1 | | [179] | Matches 1, 7, or 9 | | [2-9] | Matches 2, 3, 4, 5, 6, 7, 8, 9 | | [02-46-9A-D] | Matches 0, 2, 3, 4, 6, 7, 8, 9, A, B, C, D | | x | Matches 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | | . | Matches 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,| | | C, D, #, * | | *6[179#] | Matches *61, *67, *69, or *6# | | x{10} | Ten digits (0-9) | | 011x{7,15} | 011 followed by seven to fifteen digits | | L* | Long star | +--------------+--------------------------------------------+ Table 7: DRegex Examples
Top   ToC   RFC5022 - Page 79

Appendix B. Contributors

Jeff Van Dyke and Andy Spitzer did the concept, development, documentation, and execution for MSCML at SnowShore Networks, Inc., which is now part of Cantata Technology, Inc. Andy Spitzer's original work at The Telephone Connection, Inc., influenced the IVR implementation. Mary Ann Leekley implemented the personalized mix feature and several other enhancements. Cliff Schornak of Commetrex and Jeff Van Dyke developed the facsimile service. Jai Cauvet, Rolando Herrero, Srinivas Motamarri, and Ashish Patel contributed greatly by testing MSCML.

Appendix C. Acknowledgements

The following individuals provided valuable assistance in the direction, development, or debugging of MSCML: o Brian Badger and Phil Crable from Verizon Business o Stephane Bastien from BroadSoft o Peter Danielsen of Lucent Technologies o Kevin Flemming, formerly of SnowShore Networks, Inc. o Wesley Hicks and Ravindra Kabre, formerly from Sonus Networks o Jon Hinckley from SkyWave/Sestro o Terence Lobo, formerly of SnowShore Networks, Inc. o Kunal Nawale, formerly of SnowShore Networks, Inc. o Edwina Nowicki, formerly of SnowShore Networks, Inc. o Diana Rawlins and Sharadha Vijay, formerly of WorldCom o Gaurav Srivastva and Subhash Verma from BayPackets o Kevin Summers from Sonus Networks o Tim Wong from at&t The authors would like to thank Cullen Jennings and Dan Wing from Cisco Systems for their helpful review comments. The authors would also like to thank Scotty Farber for applying her technical writing expertise to the documentation of MSCML.
Top   ToC   RFC5022 - Page 80

Authors' Addresses

Jeff Van Dyke Cantata Technology, Inc. 18 Keewaydin Dr. Salem, NH 03079 USA EMail: jvandyke@cantata.com Eric Burger (editor) BEA Systems, Inc. USA Email: eburger@standardstrack.com URI: http://www.standardstrack.com Andy Spitzer Bluesocket Inc. 10 North Avenue Burlington, MA 01803 USA EMail: woof@pingtel.com
Top   ToC   RFC5022 - Page 81
Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78 and at www.rfc-editor.org/copyright.html, and
   except as set forth therein, the authors retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST,
   AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
   THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
   IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
   PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.