view Side-By-Side changes
SIPPING J. Van Dyke Internet-Draft E.Burger (Ed.)Burger, Ed. Expires:January 8,September 10, 2004 A. Spitzer SnowShore Networks, Inc.July 8, 2003March 12, 2004 Media Server Control Markup Language (MSCML) and Protocoldraft-vandyke-mscml-03draft-vandyke-mscml-04 Status of this MemoThis document is an Internet-DraftBy submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, andisany of which I become aware will be disclosed, infull conformanceaccordance withall provisions of Section 10 of RFC2026.RFC 3667. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onJanuary 8,September 10, 2004. Copyright Notice Copyright (C) The Internet Society(2003).(2004). All Rights Reserved. Abstract Media Server Control Markup Language (MSCML) is a markup language used in conjunction with SIP to provide advanced conferencingand IVRfunctions.ThisMSCML presents an application-level model for conference control, as opposed to device-level conference control models. One use of this protocol is for communications between a conference focus and mixer in the IETF SIP Conferencing Framework. Intellectual Property Rights Van Dyke, et al. Expires September 10, 2004 [Page 1] Internet-Draft MSCML March 2004 SnowShore Networks, Inc. is making their intellectual property right interest in MSCML available on a royalty-free basis, per the terms described in SnowShore's IPR disclosure in the online IETF list of claimed rights at <http://www.ietf.org/ietf/IPR/ SNOWSHORE-draft-vandyke-mscml.txt>. Conventions used in this document RFC2119 [1] provides the interpretations for the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" found in this document.Van Dyke, et al. Expires January 8, 2004 [Page 1] Internet-Draft MSCML July 2003Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . .. 34 2. MSCML Approach . . . . . . . . . . . . . . . . . . . . . . ..5 3. Use of SIP Request Methods . . . . . . . . . . . . . . . . .. 65 4. MSCMLUsage andDesign . . . . . . . . . . . . . . . . . . . .8 5. Advanced Conferencing. . . . 7 4.1 Transaction Model . . . . . . . . . . . . . . . .9 6. Interactive Voice Response (IVR). . . . . 7 4.2 XML Usage . . . . . . . . . .14 6.1 Play Audio <play>. . . . . . . . . . . . . . . 8 5. Advanced Conferencing . . . . . . .15 6.2 Collect Digits <playcollect>. . . . . . . . . . . . 9 5.1 Conference Model . . . . .15 6.3 Recording Audio <playrecord>. . . . . . . . . . . . . . . . .17 6.4 Stop Request <stop>9 5.2 Configure Conference Tag . . . . . . . . . . . . . . . . . . 10 5.2.1 Conference Leg Attributes . . .19 6.5 Prompt Block <prompt>. . . . . . . . . . . . . . 11 5.3 Terminating a Conference . . . . . .19 6.6 Recording Fax <faxrecord>. . . . . . . . . . . . 12 5.4 Conference Manipulation . . . . . .20 6.7 Sending Fax <faxplay>. . . . . . . . . . . . 13 6. Interactive Voice Response (IVR) . . . . . . . .22 7. Response Attributes and Return Codes. . . . . . 15 6.1 Play Audio <play> . . . . . . .25 7.1 SIP. . . . . . . . . . . . . . 17 6.2 Collect Digits <playcollect> . . . . . . . . . . . . . . .25 7.2 HTTP. 17 6.3 Recording Audio <playrecord> . . . . . . . . . . . . . . . . 20 6.4 Stop Request <stop> . . . . . . . . . . . .25 7.3 <response> Attributes. . . . . . . . 22 6.5 Prompt Block <prompt> . . . . . . . . . . . .25 8. Formal Syntax. . . . . . . 22 7. Fax Processing . . . . . . . . . . . . . . . . .28 8.1 MSCML DTD. . . . . . 23 7.1 Recording Fax <faxrecord> . . . . . . . . . . . . . . . . . 23 7.2 Sending Fax <faxplay> . . .28 8.2 Schema. . . . . . . . . . . . . . . . 25 8. Response Attributes and Return Codes . . . . . . . . . . . .31 9. IANA Considerations27 8.1 Mechanism . . . . . . . . . . . . . . . . . . . . .40 9.1 IANA Registration of. . . . 27 8.2 <response> Attributes . . . . . . . . . . . . . . . . . . . 27 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . 29 9.1 Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . 41 10.1 IANA Registration of MIME media type application/mediaservercontrol+xml . . . . . . . . . . . . .. 40 10.41 11. Security Considerations . . . . . . . . . . . . . . . . . ..41 Normative References . . . . . . . . . . . . . . . . . . . ..42 Informative References . . . . . . . . . . . . . . . . . . .. 4342 Authors' Addresses . . . . . . . . . . . . . . . . . . . . .. 4443 A. Contributors . . . . . . . . . . . . . . . . . . . . . . . .. 4544 Van Dyke, et al. Expires September 10, 2004 [Page 2] Internet-Draft MSCML March 2004 B. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .. 4644 Intellectual Property and Copyright Statements . . . . . . .. 4745 Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page2]3] Internet-Draft MSCMLJuly 2003March 2004 1. Introduction This document describes the Media Server Control Markup Language (MSCML). This document describes payloads that one can send with a standard SIP INVITE to a media server. Basic Network Media Services with SIP[4][6] describes media server SIP URI formats. Prior to MSCML, there was not a standard way to deliver SIP-based enhanced conferencing. Basic SIP constructs, such as described in Basic Network Media Services with SIP[4],[6], serves simple n-way conferencing well. The SIP URI provides a natural mechanism for identifying a specific SIP conference, while INVITE and BYE methods elegantly implement conference join and leave semantics. However, enhanced conferencing applications also require features such as sizing and resizing, in-conference IVR operations (e.g. recording and playing participant names to the full conference) and conference event reporting. MSCML payloads within standard SIP methods realize these features. The structure and approach of MSCML satisfy the requirements set out in conferencing-framework[5][7] and cc-framework[6].[8]. In particular, MSCML serves as the interface between the conference factory and a centralized conference mixer. In this case, a media server has the role of the conference mixer. There are two broad classes of MSCML functionality. The first class includes primitives for advanced conferencing such as conference configuration, participant leg manipulation and conference event reporting. The second class comprises primitives for interactive voice response (IVR). These include playing audio, collecting digits, and recording audio. The IVR features of MSCMLoriginally evolved simplybegan as an adjunct for conferencing. In many scenarios it was impractical or inconvenient to establish a dialog with a distinct IVR resource and then re-join the conference.However,Over time, many SIP Proxy Servers, Media Gateway Controllers, and SIP-based applications have used MSCMLworks wellfor simple IVR such asprompt-and-collect for SIP Proxy Servers or Media Gateway Controllers. On the other hand,prompt-and-collect. Do note that for complex IVR it may be more appropriate to employ a full IVR markup language such as VoiceXML[7].[9]. In general, a media server offers services to SIP UAC'stosuch as application servers, feature servers, and media gateway controllers. See theISCIPCC Reference Architecture[8][10] for definitions of these terms. It is unlikely, but not prohibited, for end user SIP UAC's to have a direct signaling relationship with a media server. This document describes a working framework and protocol with which Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page3]4] Internet-Draft MSCMLJuly 2003March 2004 there is considerable implementation experience. Application developers and service providers have created several MSCML-based services since the initial version was made available more than a year ago. This experience is highly relevant to the ongoing work of the IETF, particularly theSIP, SIPPING,<http://www.ietf.org/html.charters/ sip-charter.html>, <http://www.ietf.org/html.charters/ sippin-charter.html>, <http://www.ietf.org/html.charters/ mmusic.html>, andMMUSIC<http://www.ietf.org/html.charters/xcon.html> workgroups. Van Dyke, et al. Expires January 8, 2004 [Page 4] Internet-Draft MSCML July 2003groups, as well as the CCXML work in the Voice Browser Work Group of the W3C. 2. MSCML Approach It is critically important to emphasize the goal of MSCML is to provide a development environment that follows the SIP, HTTP, and XML development paradigm. That is, the mixing resource is a server that operates on application level constructs such as call participants. Some developers may desire low-level of control over DSP resources. Examples of such control include path establishment between DSP blocks such as tone detectors, tone generators, or other speech resources. For such users, we STRONGLY suggest using a protocol such as H.248.1[9].[2]. Such control does not fit the SIP model. Itmay beis, of course, possible to transport such low-level instructions in SIP. However, the programming model moves from the client-server peer paradigm of SIP to the master-slave controller model ofH.248.1.H.248.1, in which case H.248.1 is a much more appropriate solution. The MSCML paradigm is important to the developer community, in that developers and operators conceptually write applications about calls, conferences, and call legs. The H.248.1 paradigm is conceptually about resources and plumbing. That is a whole level of implementation details that, for the majority of developers, adds no value.Van Dyke, et al. Expires January 8, 2004 [Page 5] Internet-Draft MSCML July 20033. Use of SIP Request Methods As mentioned above, MSCML payloads may be carried in either SIP INVITE or INFO requests. The initial INVITE, which creates an enhanced conference, MUST include an MSCML payload. The initial INVITE, which joins a participant leg to an enhanced conference, MAY include an MSCML payload. All mid-call MSCML payloads are sent via SIP INFO requests. MSCML responses are transported in the final response to the SIP INVITE containing the matching MSCML request or in a SIP INFO message. The only allowable final response to a SIP INFO containing a message body is a 200 OK, per RFC2976[10].[11]. Therefore, when the Van Dyke, et al. Expires September 10, 2004 [Page 5] Internet-Draft MSCML March 2004 MSCML request is sent via SIP INFO, the MSCML response is carried in a separate INFO request. In general, these responses are asynchronous in nature and require a separate transaction due to timing considerations. There has been considerable debate on the use of the SIP INFO method for any purpose. Our experience is that MSCML would not have been possible without it. When MSCML was implemented the first SIP Event Notification draft had just been published. At that time, use of SUBSCRIBE/NOTIFY within an existing dialog was undefined. This prevented its use in MSCML since all events occurred in an INVITE established dialog. And while SUBSCRIBE/NOTIFY was well suited for reporting conference events its semantics seemed inappropriate for modifying a participant leg or conference setting where the only "event" was the success or failure of the request. Lastly, since SIP INFO was an established RFC it was well supported in all the SIP stack implementations available at that time. We had few if any interoperability issues as a result. As it turns out, using NOTIFY is not appropriate, as the NOTIFY would be in response to an implicit subscription. The issues of implicit subscription have been discussed on the SIP and SIPPING lists. Using SUBSRCIBE is not appropriate for two reasons. The first is semantic. The purpose of SUBSCRIBE is to register interest in User Agent state. However, using SUBSCRIBE for MSCML results in the SUBSCRIBE modifying the User Agent state. The second reason SUBSCRIBE is not appropriate is because MSCML is inherently call-based. The association of a SIP dialog with a call leg means MSCML can be incredibly straightforward. For example, if one used SUBSCRIBE or other SIP method to send commands about some context, one must identify that context somehow. Relating commands to the SIP dialog they arrive on defines the context for free. Moreover, it is conceptually easy for the developer.Van Dyke, et al. Expires January 8, 2004 [Page 6] Internet-Draft MSCML July 2003 WeRecently we haveconsideredre-considered using theMESSAGE method,NOTIFY method for events, as used in, for example, KPML[11]. MESSAGE[12]. NOTIFY is appropriate for KPML as there is usually only a single response to a given KPML document.However, for MSCML, there can be multiple responses to a given request. Also,Moreover, mid-call requests can go in both directions, which is not the case for KPML. Because of the multiple response and peer mid-call request nature of MSCML, we also considered MSRP[12].[13]. MSRP may be the appropriate technology. The main benefit of MSRP is that only proxies interested in seeing MSCML signaling see the MSCML messages. This is in contrast to the current scheme, where the interested proxies, as well as any other proxies that happen to record-route, see the MSCML messages. The trade-off here is that many of the interested proxies Van Dyke, et al. Expires September 10, 2004 [Page 6] Internet-Draft MSCML March 2004 are border proxies. In the interest of interoperability, we chose to continue using INFO. In order to guarantee interoperability with this specification, as well as with SIP User Agents that are unaware of MSCML, SIP UACs that wish to use MSCML services MUST Require the "mscml" service in the initial INVITE. The media server, as a SIP UAS, MUST respond appropriately to the INVITE, as well as advertise its support of MSCML in the response to OPTIONS requests. This alleviates the major issues with using INFO for the transport of application data, namely the User Agent's proper interpretation of what is, by design, a opaque message request. SIP continues to progress incredibly quickly and we will continually reevaluate some of the decisions that resulted in the original design of MSCML. However, we can confidently say that the availability of a widely supported, flexible request method was very important to the development and adoption MSCML.Van Dyke, et al. Expires January 8, 2004 [Page 7] Internet-Draft MSCML July 20034. MSCMLUsage andDesign 4.1 Transaction Model To avoid undue complexity two rules were established regarding MSCML usage. The first is that only one MSCML body may be present in a SIP request. The second is that each MSCML body may contain only one request or response. This greatly simplified transaction management. MSCML syntax does provide for the unique identification of multiple requests in a single body part but this is not currently allowed. Per the guidelines of RFC3470[13],[14], MSCML bodies MUST bewellformedwell formed and valid. MSCML is a direct request-response protocol. There are no provisional responses, only final responses. A request may result in multiple notifications, as in the case of requesting active talker reports. This maps to the three major tag trees for MSCML: <request>, <response>, and <notification>. Figure 1 shows a request body. Depending on the command, one can send the request in an INVITE or an INFO. Figure 2 shows a response body. The SIP INFO method transports response bodies. Figure 3 shows a notification body. The SIP INFO method transports notifications. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page8]7] Internet-Draft MSCMLJuly 2003 5. Advanced Conferencing The advanced conferencing model is a star controller model, with both signaling and media directed to a central location. Figure 1 depicts a typical signaling relationship between end users' UAC's, a conference application server, and a media server. +-------+ | UAC 1 |---\ Public URI +-------------+ +-------+ \ _____________| Application | / / | Server | Not shown: +-------+ / / +-------------+ RTP flows directly | UAC 2 |---/ / | Private between UAC's and +-------+ / | URI Media Server . / +--------------+ : / | | +-------+ / | Media Server | | UAC n |---/ | | +-------+ +--------------+March 2004 <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> ... request body ... </request> </MediaServerControl> Figure 1:Conference Model Each UAC sends an INVITE to a Public Conference URI. Presumably the Application Server publishes this URI, or it is an ad hoc URI.Request <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <response> ... request body ... </response> </MediaServerControl> Figure 2: Response <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <notification> ... notification body ... </notification> </MediaServerControl> Figure 3: Notification 4.2 XML Usage Inany event,theApplication Server generatesphilosophy of XML as aPrivate URI, followingtext-based description language, and not a programing language, MSCML makes therules specifiedchoice of many attribute values for readability byBasic Network Media Services with SIP [4].a human. Thus many attributes that would often be "boolean" instead take "yes" or "no" values. For example, what does 'report="false"' or 'report="1"' mean? However, 'report="yes"' is more clear: I want a report. Thatis,said, some programmers prefer theURI isprecision ofthe form: sip:conf=UniqueID@ms.example.net Where UniqueID isaunique conference identifier,boolean. To satisfy both styles, MSCML defines a XML type, "yn", that takes on the values "yes", "no", andms.example.net isthehost name or IP address ofboolean values, normally "true", "false", "1", and "0". Many attributes in themedia server. There is nothingMSCML schema have default values. In order toprevent the UAC's from contacting the media server directly. However, one would expectlimit demands on theowner ofXML parser, MSCML applies these values at themedia server to restrict who can use media server resources. As for basic conferencing, described by Basic Network Media Services with SIP [4], the first INVITEprotocol, not XML, level. The MSCML schema documents these defaults as XML annotations to themedia serverappropriate attribute. Van Dyke, et al. Expires September 10, 2004 [Page 8] Internet-Draft MSCML March 2004 5. Advanced Conferencing 5.1 Conference Model The advanced conferencing model is a star controller model, with both signaling and media directed to aUniqueID createscentral location. Figure 4 depicts aconference. However, in advanced conferencing, the first INVITE includestypical signaling relationship between end users' UAC's, aMSCML configure_conference payload.conference application server, and a media server. TheMSCML payload conveys extended session parameters (e.g. numberdocument cc-conferencing [7] makes use ofparticipants) that are not readily expressed in SDP but must be known to allocate the appropriate resources.this model. Thefirst dialog established forapplication server is anenhancedinstantiation of the conferencehas several useful properties andfocus. The media server isreferred toan instantiation of the media mixer. Note that user-level constructs, such as event notifications, are in the"Conference Control Leg." The control legpervue of the application server. This isusedwhy, forplay or record audio operations to/fromexample, theentire conference and no RTP is expected onmedia server will notify theConference Control Leg. Therefore,active talker report using MSCML, while the applicationmust send either no SDP or Van Dyke, et al. Expires January 8, 2004 [Page 9] Internet-Draft MSCML July 2003 hold SDP (c=0.0.0.0) inserver should use theinitial INVITE request. In addition,conference package [15] for individual notifications to SIP user agents. Note that thelifetimeuse of the conference package for media server to application server notifications isthe same as thatnot recommended because none ofits control leg. This ensures thattheconference remains in existence even if one or more participant legs unintentionally leaves the conference. The <configure_conference> tag has two attributes that control the resourcesfiltering and membership information is available at the mediaserver sets aside for the conference. The attributes are reservedtalkersserver. +-------+ | UAC 1 |---\ Public URI +-------------+ +-------+ \ _____________| Application | / / | Server | Not shown: +-------+ / / +-------------+ RTP flows directly | UAC 2 |---/ / | Private between UAC's andreserveconfmedia. Reservedtalkers sets the maximum number of talker legs. Reserveconfmedia, if set to "Yes", allocates resources for playing or recording audio+-------+ / | URI Media Server . / +--------------+ : / | | +-------+ / | Media Server | | UAC n |---/ | | +-------+ +--------------+ Figure 4: Conference Model Each UAC sends an INVITE toor froma Public Conference URI. Presumably theentire conference. The default for reserveconfmediaApplication Server publishes this URI, or it is"Yes". The application server can includean ad hoc URI. In anyMSCML command inevent, theinitial INVITE,Application Server generates a Private URI, following the rules specified by Basic Network Media Services with SIP [6]. That is, theexceptionURI is ofasynchronous commands, such as <play> or <record>. The application server must issue asynchronous commands separately (e.g., in INFO messages) to avoid ambiguous responses. For example, to createthe form: sip:conf=UniqueID@ms.example.net Where UniqueID is a unique conferencewith up to 120 active talkersidentifier, and ms.example.net is theability to play audio into the conference or record partshost name orallIP address of theconference,media server. There is nothing to prevent theapplicationUAC's from contacting the media serverspecifies both attributes, as shown in Figure 3. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <configure_conference reservedtalkers="120"/> </request> </MediaServerControl> Figure 3: 120 Speaker MSCML Example Figure 4 shows a conference with up to five active speakers without the capability to play or record audio into the conference. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <configure_conference reservedtalkers="5" reserveconfmedia="no"/> </request> </MediaServerControl> Figure 4: 5 Speaker MSCML Example Once the application server has createddirectly. However, one would expect theConference Control Leg,owner of the media servercan join participantstothe conference. The applicationrestrict who can use media serverdirects the INVITE to the Private Conference URI described above. In the example given, this would beresources. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page10]9] Internet-Draft MSCMLJuly 2003 sip:conf=UniqueID@ms.example.net . Conference legs have a number of parametersMarch 2004 As for basic conferencing, described by Basic Network Media Services with SIP [6], theapplicationfirst INVITE to the media servercan modify. The defaults arewith a UniqueID creates a conference. However, inFigure 5. The following sections will discuss the meaning ofadvanced conferencing, the first INVITE includes a MSCML configure_conference payload. The MSCML payload conveys extended session parameters (e.g. number of participants) that are not readily expressed indetail. Parameter Default Description inputgain auto Use AGCSDP but must be known todetermine input gainallocate the appropriate resources. The first dialog established forleg outputgain auto Use AGCan enhanced conference has several useful properties and is referred todetermine output gain foras the "Conference Control Leg." The control legtype talker Consider this leg's audiois used formixing in the output mix dtmfclamp yes Remove detected DTMF digit fromplay or record audiotoneclamp yes Remove loud single-frequency tone from audio Figure 5: Conference Leg Parameters Ifoperations to/from thedefault parameters are acceptable forentire conference and no RTP is expected on thelegConference Control Leg. Therefore, the applicationserver wishes to enter intomust send either no SDP or hold SDP (c=0.0.0.0) in theconference, then a normal SIPinitial INVITE request. In addition, the lifetime of the conference issufficient. However, iftheapplication server wishes to modifysame as that of its control leg. This ensures that the conference remains in existence even if one or moreofparticipant legs unintentionally leaves theparameters,conference. 5.2 Configure Conference Tag The <configure_conference> tag has two attributes that control theapplicationresources the media servercan include a MSCML body in additionsets aside for the conference. The attributes are reservedtalkers and reserveconfmedia. Reservedtalkers sets the maximum number of talker legs. Reserveconfmedia, if set to "yes", allocates resources for playing or recording audio to or from theSDP body.entire conference. Theapplication server can modifydefault for reserveconfmedia is "yes". When theconference leg parameters by issuingreservedtalkers+1st INVITE arrives at the media server, the media server responds with aSIP INFO486 BUSY HERE. NOTE: It would be symmetric to have a reservedlisteners parameter. However, the practical limitation on theselected dialog representingmedia server is theconference leg. Of course,number of talkers for a mixer to monitor. In either case, the application servercannot modify SDPregulates who gets inan INFO message. To remove a leg fromto theconference,conference by either proxying theapplication server issues a SIP BYE request onINVITEs from theselected dialog representinguser agent clients or metering who it gives the conferenceleg.URI to. The application server canterminate all legsinclude any MSCML command ina conference by issuing a SIP BYE request ontheConference Control Leg. If one or more participants are still in the conference when the media server receives a SIP BYE request on the Conference Control Leg, the media server issues SIP BYE requests on all ofinitial INVITE, with theremaining conference legs to ensure clean upexception ofthe legs.asynchronous commands, such as <play> or <record>. Themediaapplication serverreturns a 200 OK to the SIP BYE request as it sends BYE requests to the other legs. This is because we cannotmust issuea provisional responseasynchronous commands separately (e.g., in INFO messages) to avoid ambiguous responses. For example, to create anon-INVITE request, yet the teardown of the other legs may "take a while". Once theconferencehas begun,with up to 120 active talkers and theapplication server can manipulateability to play audio into the conferenceas a whole by issuing commands on the Conference Leg. For example, the application server can request the media server toor record parts or all of the conference,play a prompt to the conference, changethe application server specifies both attributes, as shown in Figure 6. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page11]10] Internet-Draft MSCMLJuly 2003 input or output gain for the conference as a whole, and report on events. The elements for these commands are <playrecord>, <play>, <inputgain>, <outputgain>, and <subscribe>, respectively. Figure 6 shows two sample commands. The first plays a prompt into the conference. The second records the entire conference to the URI specified by recurl over NFS. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <play prompturl="http://prompts.example.net/us_EN/welcome.au"/> </request> </MediaServerControl>March 2004 <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request><playrecord recurl="file://archive.example.net/conferences/archives/011208.au" beep="no" initsilence="-1" endsilence="-1" /><configure_conference reservedtalkers="120"/> </request> </MediaServerControl> Figure 6:Sample Full Conference Audio Commands The response120 Speaker MSCML Example Figure 7 shows a conference with up tothis last request will be similarfive active speakers without the capability toFigure 7.play or record audio into the conference. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"><response request="playrecord" code="200" text="OK"/><request> <configure_conference reservedtalkers="5" reserveconfmedia="no"/> </request> </MediaServerControl> Figure 7:Sample Change Command Response Later event reporting comes through SIP INFO messages. Figure 8 shows an example report. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <notification> <conference uniqueID="ab34h76z" numtalkers="16" numlisteners="1382"> <activetalkers> <talker callID="myhost4sn123"/> Van Dyke, et al. Expires January 8, 2004 [Page 12] Internet-Draft5 Speaker MSCMLJuly 2003 <talker callID="myhost2sn456"/> <talker callID="myhost12sn78"/> </activetalkers> </conference> </notification> </MediaServerControl> Figure 8: Active Talker EventExampleAnOnce the application servercan modify a leg by issuing an INFO on the dialog associated withhas created theparticipant leg. For example, Figure 9 mutes a conference leg. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <configure_leg mixmode="mute"/> <request> </MediaServerControl> Figure 9: Sample Change Leg Command In Figure 6 we saw a request to play a prompt toConference Control Leg, theentire conference. Weserver canalso request to play a prompt to an individual call leg. If we wantjoin participants toplay a prompt or collect digits only on a single leg, we issuethecommands within the dialog forconference. The application server directs theofINVITE to thedesired conference participant. Van Dyke, et al. Expires January 8, 2004 [Page 13] Internet-Draft MSCML July 2003 6. Interactive Voice Response (IVR)Private Conference URI described above. In theIVR model, the Media Server acts asexample given, this would be sip:conf=UniqueID@ms.example.net . 5.2.1 Conference Leg Attributes Conference legs have amedia processing proxy fornumber of parameters theUAC. This is particularly useful whenapplication server can modify. The defaults are in Table 1. +----------------------+----------------------+---------------------+ | Parameter | Default | Description | +----------------------+----------------------+---------------------+ | type | talker | Consider this leg's | | | | audio for mixing in | | | | theUACoutput mix. | | | | Alternative isa media gateway or other device with limited media processing capability. SIP +--------------+ Service URI|Application|/---------------| Server|/(e.g., RFC3087) +--------------+ /|MSCML / SIP"listener". |Session / +--------------+ +-----+/ RTP| dtmfclamp | yes | Remove detected |UAC |=====================| Media Server|+-----+| |+--------------+ Figure 10: IVR Model The IVR service supports basic Interactive Voice Response functions, playing announcements, collectingDTMFdigits, and recording audio, based on Media Server Control Markup Language (MSCML) directives added to the message body of a SIP request. Figure 10 shows the signaling relationship between a client UAC, and Application Server, anddigit from | | | | audio | | toneclamp | yes | Remove loud | | | | single-frequency | | | | tone from audio | | mixmode | full | Be aMedia Server. Multifunction media servers SHOULD usecandidate for | Van Dyke, et al. Expires September 10, 2004 [Page 11] Internet-Draft MSCML March 2004 | | | theURI conventions describedfull mix. | | | | Alternatives are | | | | "mute" to not allow | | | | audio inBasic Network Media Services with SIP [4]. For review,theIVR service indicator is "ivr": sip:ivr@ms.example.net One may carrymix, | | | | "parked" to remove | | | | any media streams | | | | from therequest payload for IVR in eitherleg, and | | | | "preferred" to give | | | | this stream | | | | preferential | | | | selection in theinitial SIP INVITE or INFO requests. Mid-call requests must use| | | | mix (i.e., even if | | | | not loudest talker, | | | | include media, if | | | | present, from this | | | | leg in theINFO method. The INFO method reduces certain timing issues that occur with re-INVITESmix). | +----------------------+----------------------+---------------------+ Table 1: Conference Leg Parameters In addition to these attributes, there are two tags defined. They are inputgain andalso uses less processing on bothoutputgain. Values for these tags are <auto/>, to use automatic gain control (AGC) to determine input gain for theapplication serverleg or <fixed/>. <auto/> takes the attributes "startlevel", "targetlevel", andMedia Server. The Media Server notifies"silencethreshold". All of theapplication thatparameters are in dB. <fixed> takes thecommand has completed through a <response> message containing final status information and data such as collected DTMF digits.atribute "level", which is in dB. Themedia server does not queue IVR requests.default for both inputgain and outputgain is <auto/> If themedia server receives a request while another is in progress,default parameters are acceptable for themedia server stopsleg thefirst operation and it carries outapplication server wishes to enter into thenew request. The Media Server generatesconference, then a<response> message fornormal SIP INVITE is sufficient. However, if thefirst request and returns any data collected up to that point. If anapplication server wishesVan Dyke, et al. Expires January 8, 2004 [Page 14] Internet-Draft MSCML July 2003tostopmodify one or more of the parameters, the application server can include arequestMSCML body inprogress but does not wishaddition toinitiate another operation, it issues a <stop> request. This also causestheMedia Server to generate a <response> message.SDP body. TheMedia Server treatsapplication server can modify the conference leg parameters by issuing a SIPre-INVITE with hold media (c=0.0.0.0) as an implicit <stop> request. The media server immediately terminatesINFO on therunning <play>, <playcollect> or <playrecord> request, and sendsselected dialog representing the conference leg. Of course, the application server cannot modify SDP in an INFO message. 5.3 Terminating a<response>, indicating "reason=stopped". 6.1 Play Audio <play> TheConference To remove a leg from the conference, the application server issues a<play>SIP BYE requestto play an announcement without interruption and with no digit collection. One use, for example, is to announceon thename of a new participant toselected dialog representing theentire conference.conference leg. The applicationspecifies the announcement to playserver can terminate all legs in a conference by issuing a SIP BYE request on theprompt blockConference Control Leg. If one or Van Dyke, et al. Expires September 10, 2004 [Page 12] Internet-Draft MSCML March 2004 more participants are still in thebody of the request. Attributes include promptencoding (optional), which explicitly specifies the encoding (mu-law or A-law), and id (also optional). ID is an application-defined request identifier that correlatesconference when theasynchronous response with its originalmedia server receives a SIP BYE requestand echoes back to the application inon theMedia Server's response. WhenConference Control Leg, theannouncement has finished playing,media server issues SIP BYE requests on all of theMedia Server sends a <response=> payloadremaining conference legs to ensure clean up of theapplication inlegs. The media server returns a 200 OK to the SIPINFO message. TheBYE request as it sends BYE requests to the other legs. This is because we cannot issue a provisional responsemay carryto a non-INVITE request, yet theid,teardown of thestatus code (e.g., 200),other legs may "take a while". 5.4 Conference Manipulation Once thestatus text (e.g., OK), andconference has begun, thereason (EOF or stopped). 6.2 Collect Digits <playcollect> Theapplicationissuesserver can manipulate the conference as a<playcollect>whole by issuing commands on the Conference Leg. For example, the application server can request the media server tooptionallyrecord the conference, playan announcementa prompt to the conference, change the input or output gain for the conference as a whole, andthen collect digits. This request has multiple attributes, all of whichreport on events. The elements for these commands areoptional.<playrecord>, <play>, <inputgain>, <outputgain>, and <subscribe>, respectively. Figure 8 and Figure 9 show two sample commands. Thepresence or absence of thefirst plays a promptblock controls whether there will be an announcement orinto theresult ofconference. The second records therequest isentire conference tobe digit collection only. Wheneverthemedia server receives a <playcollect> request, it will continuously buffer and examine collected digits. The media server compares previously buffered digitsURI specified by recurl. This file: URI scheme happens to do thereturnkey, escapekey,write over NFS, per configuration at the media server. NOTE: The provisioning of NFS mount points andmaxdigits attributestheir mapping todetermine if any immediate actionthe file: schema isrequired. This providespurely a local matter at thetype-ahead behavior for menu traversal and other types of IVR interactions. Vanmedia server. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <play prompturl="http://prompts.example.net/us_EN/welcome.au"/> </request> </MediaServerControl> Figure 8: Full Conference Audio Command - Play Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page15]13] Internet-Draft MSCMLJuly 2003March 2004 <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <playrecord recurl="file://archive.example.net/conferences/archives/011208.au" beep="no" initsilence="-1" endsilence="-1" /> </request> </MediaServerControl> Figure 9: Full Conference Audio Command - Record The response to this last request will be similar to Figure 10. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <response request="playrecord" code="200" text="OK" reclength="1420374"/> </MediaServerControl> Figure 10: Sample Change Command Response A request for an active talker report is in Figure 11. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <configure_conference> <subscribe> <events> <activetalkers/> </events> </subscribe> </configure_conference> </request> </MediaServerControl> Figure 11: Active Talker Request Later event reporting comes through SIP INFO messages. Figure 12 shows an example report. Van Dyke, et al. Expires September 10, 2004 [Page 14] Internet-Draft MSCML March 2004 <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <notification> <conference uniqueID="ab34h76z" numtalkers="16" numlisteners="1382"> <activetalkers> <talker callID="myhost4sn123"/> <talker callID="myhost2sn456"/> <talker callID="myhost12sn78"/> </activetalkers> </conference> </notification> </MediaServerControl> Figure 12: Active Talker Event Example An applicationmay override type-ahead behaviorserver can modify a leg bysettingissuing an INFO on thecleardigits parameter to "yes", which removes all previously-buffered digits such thatdialog associated with theonly user input considered is what occurs afterparticipant leg. For example, Figure 13 mutes a conference leg. <?xml version="1.0" encoding="utf-8"?> <MediaServerControl version="1.0"> <request> <configure_leg mixmode="mute"/> <request> </MediaServerControl> Figure 13: Sample Change Leg Command In Figure 8 we saw a request to play a prompt to therequest.entire conference. We can also request to play a prompt to an individual call leg. Ifcleardigits is setwe want to"no", digits previously buffered will result in theplay a promptbeing barged immediately. Prompt play would never begin, and digit collection would start immediately. The default for barge is "yes". Ifor collect digits only on a single leg, we issue thebarge attribute is set to "no",commands within the dialog for thecleardigits attribute implicitly has a valueof"yes". This ensures that DTMF input occurring beforethecurrent collection is not left indesired conference participant. Section 6 descibes thebuffer afterinteractive voice response (IVR) services offered. If an IVR command arrives on therequest completes. The application can set two special digits to invoke special processing when detected: o The escapekey, which defaults to *, indicates thatcontrol channel, it takes effect on theuser intendswhole conference. This is a mechanism for playing prompts toterminatethecurrent operation without saving any input collected toentire conference (e.g., announcing new participants). If an IVR command arrives on an individual leg, it only effects thatpoint. Detection terminates the request immediately and generatesleg. This is aresponse. o The returnkey, which defaultsmechanism for interacting with users, such as to#, indicates thecreate "waiting rooms", allow a userhas completed input and wants to return all collected digitstothe application. When the media server detects the returnkey, it immediately terminates collection and returns the collected digitsmute themselves using key presses, allowing a moderator to out-dial, etc. 6. Interactive Voice Response (IVR) In theapplication in the <response> message. Several timer attributes control how longIVR model, the Media Serverwaitsacts as a media processing proxy fordigits in the input sequence. All timer settings are in milliseconds. firstdigittimer controls how longtheMedia Server waits forUAC. This is particularly useful when theinitial DTMF input before terminating collection. interdigittimer controls how long the Media Server waits between DTMF inputs. extradigittimer controls how long the Media Server waits for additional user input after the specified number of digits have been collected. The extradigittimer setting enables the "returnkey" input to be associated with the current collection. For example, if maxdigits is set to 3 and returnkeyUAC isset to #, the user may enter either "x#", "xx#" or "xxx#", where x representsaDTMF digit. If the "returnkey" pattern is detected during the "extradigit"media Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page16]15] Internet-Draft MSCMLJuly 2003 interval, the collected digits are returnedMarch 2004 gateway or other device with limited media processing capability. SIP +--------------+ Service URI | Application | /---------------| Server | /(e.g., RFC3087) +--------------+ / | MSCML / SIP | Session / +--------------+ +-----+/ RTP | | | UAC |=====================| Media Server | +-----+ | | +--------------+ Figure 14: IVR Model The IVR service supports basic Interactive Voice Response functions, playing announcements, collecting DTMF digits, and recording audio, based on Media Server Control Markup Language (MSCML) directives added to theapplicationmessage body of a SIP request. Figure 14 shows the signaling relationship between a client UAC, and Application Server, and a Media Server. Multifunction media servers SHOULD use the"returnkey"URI conventions described in Basic Network Media Services with SIP [6]. For review, the MSCML IVR service indicator isremoved from"ivr": sip:ivr@ms.example.net NOTE: The VoiceXML IVR service indicator is dialog. One may carry thedigit buffer. If this were notrequest payload for IVR in either thecase,initial SIP INVITE or INFO requests. Mid-call requests must use theexample would return "xxx" toINFO method. The INFO method reduces certain timing issues that occur with re-INVITES and also uses less processing on both the application server andleaveMedia Server. The Media Server notifies theterminating "#" inapplication that thedigit buffer to be processed bycommand has completed through a <response> message containing final status information and data such as collected DTMF digits. The media server does not queue IVR requests. If thenext <playcollect> request. This might resultmedia server receives a request while another is in progress, thetermination ofmedia server stops thefollowing prompt; clearly not whatfirst operation and it carries out theuser intended.new request. Theextradigittimer has no effect unless returnkey has been set. When the <playcollect> has finished playing, theMedia Serversendsgenerates a <response>payload tomessage for the first request and returns any data collected up to that point. If an application wishes to stop a request in progress but does not wish to initiate another operation, it issues aSIP INFO<stop> request. This also causes the Media Server to generate a <response> message. Van Dyke, et al. Expires September 10, 2004 [Page 16] Internet-Draft MSCML March 2004 Theresponse may carry the id, the code (e.g., 200), the text(e.g., OK),Media Server treats a SIP re-INVITE with hold media (c=0.0.0.0) as an implicit <stop> request. The media server immediately terminates thereason (match, timeout, returnkey, escapekey,running <play>, <playcollect> orstopped),<playrecord> request, andthe collected digits. 6.3 Recordingsends a <response>, indicating "reason=stopped". 6.1 Play Audio<playrecord><play> The<playrecord>application issues a <play> requestdirects the Media Servertocapture the RTP it receives and deliver itplay an announcement without interruption and with no digit collection. One use, for example, is to announce the name of aURL specifiednew participant to the entire conference. The application specifies the announcement to play by thecontrolling application. This tagprompt block in the body of the request. Attributes include promptencoding (optional), which explicitly specifies the encoding (mu-law, A-law, msgsm, etc.), and id (also optional). ID is an application-defined request identifier that correlates the asynchronous response with its original request and echoes back to the application in the Media Server's response. When the announcement hasmultiple attributes.finished playing, the Media Server sends a <response=> payload to the application in a SIP INFO message. Therequired recurl attribute identifiesresponse may carry theURL target forid, therecorded audio. All other attributesstatus code (e.g., 200), the status text (e.g., OK), and the reason (EOF or stopped). 6.2 Collect Digits <playcollect> The application issues a <playcollect> request to optionally play an announcement and then collect digits. This request has multiple attributes, all of which are optional. The presence or absence of the prompt block controls whether there will be an announcement ornot a prompt plays before recording begins. When the application requeststhemedia server to promptresult of thecaller before recording audio, <playrecord> has two stages. The firstrequest isequivalentto be digit collection only. Whenever the media server receives a <playcollect>operation.request, it will continuously buffer and examine collected digits. Theapplication may setmedia server compares previously buffered digits to theprompt phasereturnkey, escapekey, and maxdigits attributes tobe interruptible by DTMF input (barge)determine if any immediate action is required. This provides the type-ahead behavior for menu traversal andmay also specify an escape key that will terminate the <playrecord> request before the recording phase begins. Detection of the escape key generates a response message, and the operation returns immediately. If anyotherkeys are pressed and if the prompt has been set as interruptible (barge="yes"), then the play stops immediately and the recording phase begins. Any digits collected in the prompt phase, with the exceptiontypes of IVR interactions. The application may override type-ahead behavior by setting therecstopmask, are buffered and returned in the response. If the request proceedscleardigits parameter tothe recording phase, any"yes", which removes all previously-buffered digitsfrom the collect phase are discarded fromsuch that thebuffer to eliminate unintendedonly user input considered is what occurs after Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 17] Internet-Draft MSCMLJuly 2003 termination of the recording. The media server compares digits detected during the recording phase to the digits specified inMarch 2004 therecstopmask to determine if they indicate a recording terminationrequest.The media server ignoresIf cleardigits is set to "no", digitsnot presentpreviously buffered will result in therecstopmaskprompt being barged immediately. Prompt play would never begin, andpasses them into the recording.digit collection would start immediately. The default for barge is "yes". If therecordingbarge attribute isterminated because ofset to "no", the cleardigits attribute implicitly has a value of "yes". This ensures that DTMFinput, the collected digits are returned toinput occurring before theapplicationcurrent collection is not left in the<response>. Once recording has begun, the media server writesbuffer after theaudiorequest completes. The application can set two special strings to invoke special processing when detected: o The escapekey, which defaults to *, indicates that thespecified recurl URL no matter what DTMF events are detected. It is the responsibility of the applicationuser intends toexamineterminate theDTMFcurrent operation without saving any inputreturned in the <response> messagecollected todetermine whetherthat point. Detection terminates theaudio file should be saved or if it should be deletedrequest immediately andpotentially re-recorded. Two attributes control how long the Media Server waits for the start of speechgenerates a response. o The returnkey, which defaults tobegin#, indicates therecordinguser has completed input andthe absence of speechwants toend the recording: initsilence determines how longreturn all collected digits towait for initial speech input before terminating (canceling)therecording. This parameter may take an integer value in milliseconds, or may be set to -1, which directsapplication. When theMedia Server to wait indefinitely. The default is 3000 ms (3 seconds). endsilence determines how longmedia server detects theMedia Server waits after speech has endedreturnkey, it immediately terminates collection and returns the collected digits tostoptherecording. This parameter may take an integer valueapplication inmilliseconds, orthe <response> message. The media server maybe setalso support three additional strings to-1. Withsupport VCR controls while playing avalueprompt. These strings modify the behavior of-1,therecording will continue indefinitely after speech has ended and may terminate due to a DTMF keypress or becauseplaying of themaximum desired duration has been reached. The default value is 4000 ms (4 seconds).prompt block. If theendsilence timer expires,media server does not support VCR controls, it must silently ignore theMedia Server trims the end of the recorded audio by an amount equalrequest. o The skipinterval, which defaults to "6s", indicates how far theendsilence parameter. Additional attributes are: mode whether the recording will overwrite or append. reencoding whether encoding is mu-lawmedia server should skip backwards orA-law. duration timeforwards inms for the entire recording. Van Dyke, et al. Expires January 8, 2004 [Page 18] Internet-Draft MSCML July 2003 beep whether a beep will signify the start of recording. Whentherecording is finished,currently playing object from prompturl. o The ffkey indicates themedia server generates a <response> message and sends ituser wishes tothe applicationskip forward skipinterval ina SIP INFO message. The response contains the id, the code (e.g., 200, 400, 501), the reason (e.g., digit, end_silence, init_silence, max_duration, escapekey, error, or stopped), collected digits, andthereclength (size ofcurrently playing object from prompturl. o The rwkey indicates therecorded fileuser wishes to skip backward skipinterval inbytes). 6.4 Stop Request <stop> The application issues a <stop> request whentheobjectivecurrently playing object form prompturl. Note that it is an error tostop a requesthave the digits mapped to ffkey or rwkey inprogress and not initiate another operation. This request generates a <response> message fromtheMedia Server.digitmap. The VCR controls onlyattribute is id, which is optional. The application-defined request id correlateswork within a single <prompt> block. Skipping-back before theasynchronous response with its original request and echoes back tobegining of theapplicationblock results in playback at theMedia Server's response. The response may carrybeginning of theid,block. Skiping-forward past thecode (e.g., 200), andend of thetext (e.g., OK). Note thatblock results in theMedia Server treats a SIP re-INVITE with hold media (c=0.0.0.0) as an implicit <stop> request. Themedia serverimmediately terminatestreating therunning <play>, <playcollect> or <playrecord> request, and sends a <response>, indicating "reason=stopped". 6.5 Prompt Block <prompt>prompt as played. NOTE: Thisblock in the bodyis only a very rudimentary implementation ofthe <play>, <playcollect>, or <playrecord> request contains one or more references to physical audio files, provisioned sequences, or variables thatVCR controls. Application developers areplayed inSTRONGLY RECOMMENDED to use theorderinterrupt time returned inwhichthe digit report to calculate where to skip. This enables sensible handling of composite voice objects, etc. If an application developer needs real VCR controls, theyappear. Figure 12 shows a sample prompt block. <prompt baseurl="file:////opt/snowshore/prompts/conf/"> <audio url="please_enter.wav"/> <variable type="silence" value="1"/> <audio url="your.raw" encoding="a-law"/> <variable type="silence" value="1"/> <audio url="http://prompts.example.net/pin_number.wav"/> </prompt>are STRONGLY RECOMMENDED to use VoiceXML with VCR Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page19]18] Internet-Draft MSCMLJuly 2003 Figure 12: Active Talker Event Example The baseurl attribute is the base URL prepended to the URLMarch 2004 extensions. Several timer attributeswithincontrol how long the<prompt> block. Each audio element in a <prompt> block refers to an audio file or provisioned sequenceMedia Server waits forthe media server to play. The media server plays audio filesdigits in theorder in which theyinput sequence. All timer settings arelistedinthe block. 6.6 Recording Fax <faxrecord> The <faxrecord> request directsmilliseconds. firstdigittimer controls how long the Media Serverto process a fax in answer mode. The reasonwaits fora separate tag fromthe<playrecord> tag is becauseinitial DTMF input before terminating collection. interdigittimer controls how long the Media Serverneeds to know to processwaits between DTMF inputs. extradigittimer controls how long theT.30 [14] or T.38 [15] fax protocols. This tagMedia Server waits for additional user input after the specified number of digits hasmultiple attributes.been collected. Thelclid attribute is a string that identifies the called station. The lclid attribute is optional. The default is null. The <faxrecord> request operates in one of three modes: receive, poll, and turnaround poll. In receive mode,extradigittimer setting enables theMedia Server receives"returnkey" input to be associated with thefaxcurrent collection. For example, if maxdigits is set to 3 andwrites the fax datareturnkey is set to #, theURI specified by the recurl attribute. In poll mode, the Media Server sends a fax, but asuser may enter either "x#", "xx#" or "xxx#", where x represents apolled (called) device. In turnaround poll mode,DTMF digit. If theMedia Server will record a fax that"returnkey" pattern is detected during theremote machine sends. If"extradigit" interval, theremote machine requests a transmission, thencollected digits are returned to theMedia Server will sendapplication and thefax. The recurl attribute"returnkey" is removed from theURI to recorddigit buffer. If this were not thefax to, if specified. The prompturl attribute iscase, theURIexample would return "xxx" tofetchthefax to transmit, if specified. The rmtid attribute specifiesapplication and leave thecalling station identifier ofterminating "#" in theremote terminal. If specified,digit buffer to be processed by themedia server MUST reject transactions withnext <playcollect> request. This might result in theremote terminal iftermination of theremote terminal's identifier doesfollowing prompt; clearly notmatch rmtid.what the user intended. Thecombination of prompturl and recurl defineextradigittimer has no effect unless returnkey has been set. The <regex> element specifies a digit pattern for themode. See Table 1. Van Dyke,media server to look for. MSCML supports three modes of digit map specification: regular expressions, MGCP [3] digit maps, and H.248.1 [2] digit maps. The type attribute indicates what kind of digit map appears in the expression. regex The default; use regular expression matching. mgcpdigitmap Use digit maps as specified in MGCP [3]. megacodigitmap Use digit maps as specified in H.248.1 [2]. When the <playcollect> has finished playing, the Media Server sends a <response> payload to the application in a SIP INFO message. The response may carry the id, the code (e.g., 200), the text(e.g., OK), the reason (match, timeout, returnkey, escapekey, or stopped), and the collected digits. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page20]19] Internet-Draft MSCMLJuly 2003 +----------------+----------------+----------------+----------------+ | prompturl | recurl | Mode | Operation | +----------------+----------------+----------------+----------------+ | no | no | Invalid | Request fails. | | | | | | | no | yes | Receive | Record fax | | | | | into recurl. | | | | | | | yes | no | Poll | Send fax from | | | | | prompturl. If | | | | | rmtid is | | | | | specified, it | | | | | must match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | | theMarch 2004 6.3 Recording Audio <playrecord> The <playrecord> request| | | | | will fail. | | | | | | | yes | yes | Turnaround | Ifdirects theremote | | | | Poll | terminal | | | | | wishesMedia Server to| | | | | transmit,capture the| | | | | Media Server | | | | | records the | | | | | fax into | | | | | recurl. If the | | | | | remote | | | | | terminal | | | | | wishes to | | | | | receive, the | | | | | Media Server | | | | | sends the fax | | | | | from | | | | | prompturl. If | | | | | rmtid is | | | | | specified, it | | | | | must match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | | the send | | | | | request will | | | | | fail. A | | | | | receive | | | | | operation will | | | | | still succeed, | | | | | however. | Van Dyke, et al. Expires January 8, 2004 [Page 21] Internet-Draft MSCML July 2003 +----------------+----------------+----------------+----------------+ Table 1: Fax Receive Modes The Media Server MUST flush any quarantined digits whenRTP it receivesa <faxrecord> request. 6.7 Sending Fax <faxplay> The <faxplay> request directs the Media Serverand deliver it toprocess a fax in originate mode. The reason foraseparate tag from the <play> tag is becauseURI specified by theMedia Server needs to know to processcontrolling application in theT.30 [14] or T.38 [15] fax protocols.appropriate codec and content encoding. This tag has multiple attributes. Thelclidrequired recurl attributeis a string thatidentifies theMedia Server as the calling station inURI target for theDIS message. The lclid attribute isrecorded audio. All other attributes are optional. Thedefault is null. The <faxplay> request operates in onepresence or absence ofthree modes: send, remote poll, and turnaround poll. In send mode,theMedia Server sendsprompt block controls whether or not a prompt plays before recording begins. When thefax. In remote poll mode,application requests theApplication Server places a call on behalf ofmedia server to prompt theMedia Server.caller before recording audio, <playrecord> has two stages. TheMedia Server requestsfirst is equivalent to afax transmission from the remote fax terminal. In turnaround poll mode,<playcollect> operation. The application may set theMedia Serverprompt phase to be interruptible by DTMF input (barge) and may also specify an escape key that willrecordterminate the <playrecord> request before the recording phase begins. Detection of the escape key generates afax thatresponse message, and theremote machine sends.operation returns immediately. If any other keys are pressed and if theremote machine requests a transmission,prompt has been set as interruptible (barge="yes"), then theMedia Server will sendplay stops immediately and thefax. The recurl attribute isrecording phase begins. Any digits collected in theURI to recordprompt phase, with thefax to, if specified. The Media Server will advertise inexception of theDIS message it can receive fax transmissions. The prompturl attribute isrecstopmask, are buffered and returned in theURI to fetchresponse. If thefaxrequest proceeds totransmit, if specified. The Media Server will advertise intheDIS message it can send fax transmissions. The rmtid attribute specifiesrecording phase, any digits from thecalling station identifier ofcollect phase are discarded from theremote terminal. If specified,buffer to eliminate unintended termination of the recording. The media serverMUST reject transactions withcompares digits detected during theremote terminal ifrecording phase to theremote terminal's identifier does not match rmtid.digits specified in the recstopmask to determine if they indicate a recording termination request. Thecombination of prompturlmedia server ignores digits not present in the recstopmask and passes them into the recording. If the recording is terminated because of a DTMF input, the collected digits are returned to the application in the <response>. Once recording has begun, the media server writes the audio to the specified recurldefineURL no matter what DTMF events are detected. It is themode. See Table 2.responsibility of the application to examine the DTMF input returned in the <response> message to determine whether the audio file should be saved or if it should be deleted and potentially re-recorded. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page22]20] Internet-Draft MSCMLJuly 2003 +----------------+----------------+----------------+----------------+ | prompturl | recurl | Mode | Operation | +----------------+----------------+----------------+----------------+ | no | no | Invalid | Request fails. | | | | | | | yes | no | Send | Send fax from | | | | | prompturl. If | | | | | rmtid is | | | | | specified, it | | | | | must match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | |March 2004 Two attributes control how long the Media Server waits for the start of speech to begin the recording and the absence of speech to end the recording: initsilence determines how long to wait for initial speech input before terminating (canceling) the recording. This parameter may take an integer value in milliseconds, or may be set to -1, which directs the Media Server to wait indefinitely. The default is 3000 ms (3 seconds). endsilence determines how long the Media Server waits after speech has ended to stop the recording. This parameter may take an integer value in milliseconds, or may be set to -1. With a value of -1, the recording will continue indefinitely after speech has ended and may terminate due to a DTMF keypress or because the maximum desired duration has been reached. The default value is 4000 ms (4 seconds). If the endsilence timer expires, the Media Server trims the end of the recorded audio by an amount equal to the endsilence parameter. Additional attributes are: mode whether the recording will overwrite or append. reencoding whether encoding is mu-law, A-law, msgsm, etc. duration time in ms for the entire recording. beep whether a beep will signify the start of recording. When the recording is finished, the media server generates a <response> message and sends it to the application in a SIP INFO message. The response contains the id, the code (e.g., 200, 400, 501), the reason (e.g., digit, end_silence, init_silence, max_duration, escapekey, error, or stopped), collected digits, and the reclength (size of the recorded file in bytes). The recording example (Figure 16) plays a prompt ("SayName.g11") and records it to the recurl in MS-GSM format, wave-encoded. Van Dyke, et al. Expires September 10, 2004 [Page 21] Internet-Draft MSCML March 2004 <playrecord prompturl="http://prompts.example.net/us_EN/SayName.g711" recurl="file://nfs.example.net/names/greet-joij34923119.wav" recencoding="msgsm" initsilence="15s" endsilence="2s" duration="8s"> </playrecord> Figure 16: Recording Example 6.4 Stop Request <stop> The application issues a <stop> request when the objective is to stop a request in progress and not initiate another operation. This request generates a <response> message from the Media Server. The only attribute is id, which is optional. The application-defined request id correlates the asynchronous response with its original request and echoes back to the application in the Media Server's response. The response may carry the id, the code (e.g., 200), and the text (e.g., OK). Note that the Media Server treats a SIP re-INVITE with hold media as an implicit <stop> request. The media server immediately terminates the running <play>, <playcollect> or <playrecord> request, and sends a <response>, indicating "reason=stopped". 6.5 Prompt Block <prompt> This block in the body of the <play>, <playcollect>, or <playrecord> request contains one or more references to physical audio files, provisioned sequences, or variables that are played in thereceive | | | | |order in which they appear. Figure 17 shows a sample prompt block. Van Dyke, et al. Expires September 10, 2004 [Page 22] Internet-Draft MSCML March 2004 <prompt baseurl="file:////opt/snowshore/prompts/conf/"> <audio url="please_enter.wav"/> <variable type="silence" value="1"/> <audio url="your.raw" encoding="a-law"/> <variable type="silence" value="1"/> <audio url="http://prompts.example.net/pin_number.wav"/> </prompt> Figure 17: Active Talker Event Example The baseurl attribute is the base URL prepended to the URL attributes within the <prompt> block. Each audio element in a <prompt> block refers to an audio file or provisioned sequence for the media server to play. The media server plays audio files in the order in which they are listed in the block. 7. Fax Processing 7.1 Recording Fax <faxrecord> The <faxrecord> request directs the Media Server to process a fax in answer mode. The reason for a separate tag from the <playrecord> tag is because the Media Server needs to know to process the T.30 [16] or T.38 [17] fax protocols. This tag has multiple attributes. The lclid attribute is a string that identifies the called station. The lclid attribute is optional. The default is null. The <faxrecord> request operates in one of three modes: receive, poll, and turnaround poll. In receive mode, the Media Server receives the fax and writes the fax data to the URI specified by the recurl attribute. In poll mode, the Media Server sends a fax, but as a polled (called) device. In turnaround poll mode, the Media Server will record a fax that the remote machine sends. If the remote machine requests a transmission, then the Media Server will| | | | | fail. | | | | | | | no | yes | Poll | Sendsend the fax. The recurl attribute is the URI to record the faxfrom | | | | | prompturl, | | | | | assumingto, if specified. The prompturl attribute is the URI to fetch the fax to transmit, if specified. Van Dyke, et al. Expires September 10, 2004 [Page 23] Internet-Draft MSCML March 2004 The rmtid attribute specifies the calling station identifier of the remote terminal. If specified, the media server MUST reject transactions with the| | | | |remote| | | | |terminal if the remote terminal's identifier does not match rmtid. The combination of prompturl and recurl define the mode. See Table 2. +----------------+----------------+----------------+----------------+ | prompturl | recurl | Mode | Operation |specifies it |+----------------+----------------+----------------+----------------+ | no | no | Invalid |can receive aRequest fails. | | no | yes | Receive | Record faxin its DIS | | | | | message. It | || | |the remote | | | | | terminal does | | | | | not support| | into recurl. | | yes |reverse | | |no | Poll |polling, theSend fax from | | | | |request willprompturl. If | | | | |fail. Ifrmtid is | | | | |isspecified, it | | | | |itmust match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | | the request | | | | | will fail. | || | | | |yes | yes | Turnaround | If the remote | | | | Poll | terminal | | | | | wishes to | | | | | transmit, the | | | | | Media Server | | | | | records the | | | | | fax into |Van Dyke, et al. Expires January 8, 2004 [Page 23] Internet-Draft MSCML July 2003| | | | recurl. If the | | | | | remote | | | | | terminal | | | | | wishes to | | | | | receive, the | | | | | Media Server | | | | | sends the fax | | | | | from | | | | | prompturl. If | | | | | rmtid is | | | | | specified, it | | | | | must match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | | the send | | | | | request will | Van Dyke, et al. Expires September 10, 2004 [Page 24] Internet-Draft MSCML March 2004 | | | | fail. A | | | | | receive | | | | | operation will | | | | | still succeed, | | | | | however. | +----------------+----------------+----------------+----------------+ Table 2: FaxSendReceive Modes The Media Server MUST flush any quarantined digits when it receives a<faxplay><faxrecord> request.Van Dyke, et al. Expires January 8, 2004 [Page 24] Internet-Draft MSCML July 2003 7. Response Attributes and Return Codes 7.1 SIP7.2 Sending Fax <faxplay> The <faxplay> request directs the Media Serveracknowledges receipt of an application request by sendingto process aresponse of either 200 OK or 415 BAD MEDIA TYPE. (The latterfax in originate mode. The reason for a separate tag from the <play> tag issent whenbecause theSIP request contains a content type other than "application/sdp"Media Server needs to know to process the T.30 [16] or"application/mediaservercontrol+xml").T.38 [17] fax protocols. This tag has multiple attributes. The<response> messagelclid attribute istransported inaSIP INFO request. If there is an error instring that identifies therequest orMedia Server as therequest cannot be completed,calling station in the<response> messageDIS message. The lclid attribute issent very shortly after receiving the request. If the requestoptional. The default isable to proceed, the <response> contains final status information as listed below. 7.2 HTTPnull. TheMedia Server processes the<faxplay> requestand returns a <response> messageoperates inthe bodyone of three modes: send, remote poll, and turnaround poll. In send mode, thehttp POST. The media server treatsMedia Server sends theresults offax. In remote poll mode, thepost as if a new MSCML file was sent inApplication Server places anew INFO message. 7.3 <response> Attributes If the request specified an ID, the response will echoedcall on behalf of theID.Media Server. The"code" is the result code for the request. It can takeMedia Server requests a fax transmission from thefollowing values. o 200 indicates command completed. o 400 for <playrecord>, <faxrecord>, and <faxplay> indicates command not accepted due to an error. The text attribute describesremote fax terminal. In turnaround poll mode, thecause ofMedia Server will record a fax that theerror. o 501 for <playrecord>, <faxrecord>, and <faxplay> indicates an error becauseremote machine sends. If themedia server does not supportremote machine requests a transmission, then theURL type specified. The "digits" areMedia Server will send thereturned digits for <playcollect> and <playrecord>. Its valuefax. The recurl attribute is thecollected digits,URI to record the fax to, ifany.specified. The"reason"Media Server will advertise in the DIS message it can receive fax transmissions. The prompturl attribute iswhythecommand terminated. For all requests,URI to fetch thereason "stopped" indicates that a <stop> request, another command, or a re-INVITE with hold media stoppedfax to transmit, if specified. The Media Server will advertise in therequest. ForDIS message it can send fax transmissions. The rmtid attribute specifies the<play> request,calling station identifier of the"EOF" reason meansremote terminal. If specified, the media server MUST reject transactions with the remote terminal if the remote terminal's identifier does not match rmtid. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 25] Internet-Draft MSCMLJuly 2003 played out to the end of the file. For the <playcollect> request, a reasonMarch 2004 The combination of"match" means a match was found; "timeout" means no digit was received before the time-out timer expired; "returnkey"prompturl and"escapekey" meansrecurl define thereturn keymode. See Table 3. +----------------+----------------+----------------+----------------+ | prompturl | recurl | Mode | Operation | +----------------+----------------+----------------+----------------+ | no | no | Invalid | Request fails. | | yes | no | Send | Send fax from | | | | | prompturl. If | | | | | rmtid is | | | | | specified, it | | | | | must match | | | | | remote | | | | | terminal's | | | | | identifier, orescape key terminated| | | | | theoperation, respectively; and "interrupted" means anotherreceive | | | | | requestinterrupted the <playcollect> request. For the <playrecord> request, a reason of "digit" means a digit was detected; "end_silence" means the recording terminated because the trailing silence timer expired; "init_silence" means thatwill | | | | | fail. | | novoice was detected; "max_duration" means the recording terminated because the maximum time for recording completed; "escapekey" means the user entered the escape key in either play or record mode, thus terminating the recording; or "error", for a general operation failure. For| yes | Poll | Send fax from | | | | | prompturl, | | | | | assuming the<faxplay> and <faxrecord> requests, a reason of "complete" means successful completion, even if there were bad lines or minor negotiation problems, i.e.,| | | | | remote | | | | | terminal | | | | | specifies it | | | | | can receive aDCN was received; "disconnect" means the session was disconnected; "notfax" means no| | | | | fax in its DISor DCS was received on the connection. The "reclength" is| | | | | message. It | | | | | thelength ofremote | | | | | terminal does | | | | | not support | | | | | reverse | | | | | polling, therecording in bytes for a <playrecord>. The "text"| | | | | request will | | | | | fail. If rmtid | | | | | is specified, | | | | | it must match | | | | | remote | | | | | terminal's | | | | | identifier, or | | | | | thedescriptive text associated with the response code. For the <faxplay> and <faxrecord> requests,request | | | | | will fail. | | yes | yes | Turnaround | If thefaxcode attribute isremote | | | | Poll | terminal | | | | | wishes to | | | | | transmit, thebinary-or of| | | | | Media Server | | | | | records thefollowing bit patterns.| | | | | fax into | Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 26] Internet-Draft MSCMLJuly 2003 +------+--------------------------------------+March 2004 |Mask|description|+------+--------------------------------------+|0recurl. If the |Operation Failed| | | | remote |1|Operation Succeeded| | | terminal | |2|Partial Success| | wishes to | | |4|Image received and placed in recurl| receive, the | | | | | Media Server | | | | | sends the fax | | | |8|Image sentfromprompturl| | | | |16prompturl. If | | | | | rmtiddid notis | | | | | specified, it | | | | | must match | | | | |32remote |Error reading prompturl| | | | terminal's |64|Error writing recurl| | | identifier, or | |128|Negotiation failure on| | the sendphase| | | | |256request will | | | | | fail. A |Negotiation failure on receive phase| | | | receive |512|Reserved| | | operation will | |1024|Irrecoverable IP packet loss| | still succeed, | | |2048|Line errors in received image|+------+--------------------------------------+however. | +----------------+----------------+----------------+----------------+ Table 3: Fax Send Modes The Media Server MUST flush any quarantined digits when it receives a <faxplay> request. 8. Response Attributes and Return Codes 8.1 Mechanism The Media Server acknowledges receipt of an application request by sending a response of either 200 OK or 415 BAD MEDIA TYPE. (The latter is sent when the SIP request contains a content type other than "application/sdp" or "application/mediaservercontrol+xml"). The <response> message is transported in a SIP INFO request. If there is an error in the request or the request cannot be completed, the <response> message is sent very shortly after receiving the request. If the request is able to proceed, the <response> contains final status information as listed below. 8.2 <response> Attributes If the request specified an ID, the response will echoed the ID. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 27] Internet-Draft MSCMLJuly 2003 8. Formal SyntaxMarch 2004 The "code" is the result code for the request. It can take the followingsyntax specification usesvalues. o 200 indicates command completed. o 400 for <playrecord>, <faxrecord>, and <faxplay> indicates command not accepted due to an error. The text attribute describes theaugmented Data Type Definition (DTD) as described in XML [2]. 8.1 MSCML DTD <?xml version="1.0" encoding="UTF-8"?> <!-- =========================================================== --> <!-- MediaServerControl Document Type Description --> <!-- Copyright (c) 2001-2003 SnowShore Networks, Inc. --> <!-- All Rights Reserved. --> <!-- =========================================================== --> <!ELEMENT MediaServerControl (request | response | notification)> <!ATTLIST MediaServerControl version (1.0) #REQUIRED > <!ELEMENT request (configure_conference | configure_leg | play | playcollect | playrecord | stop)> <!ELEMENT configure_conference (inputgain?, outputgain?, subscribe?)> <!ATTLIST configure_conference id CDATA #IMPLIED reservedtalkers CDATA #IMPLIED reserveconfmedia (yes | no) #IMPLIED > <!-- Tagscause of the error. o 501 forgain control --> <!ELEMENT outputgain (auto | fixed)> <!ELEMENT inputgain (auto | fixed)> <!ELEMENT auto EMPTY> <!ATTLIST auto startlevel CDATA #IMPLIED targetlevel CDATA #IMPLIED silencethreshold CDATA #IMPLIED > <!ELEMENT fixed EMPTY> <!ATTLIST fixed level CDATA #IMPLIED > <!ELEMENT subscribe (events)> <!ELEMENT events (activetalkers)> <!ELEMENT activetalkers (talker+)?> <!ATTLIST activetalkers report (yes | no) "no" interval CDATA #IMPLIED > <!-- Acceptable values<playrecord>, <faxrecord>, and <faxplay> indicates an error because the media server does not support the URL type specified. The "digits" are the returned digits forinterval range from 1-60 seconds --> <!ELEMENT talker EMPTY> <!ATTLIST talker Van Dyke, et al. Expires January 8, 2004 [Page 28] Internet-Draft MSCML July 2003 callid CDATA #REQUIRED > <!--<playcollect> and <playrecord>. Its value is the collected digits, if any. Thelist of current talkers"reason" isused only when sending --> <!-- notifications towhy thecalling application. It should never --> <!-- be set when subscribing. --> <!ELEMENT configure_leg (inputgain?, outputgain?)> <!ATTLIST configure_leg id CDATA #IMPLIED type (talker | listener) #IMPLIED mixmode (full | mute | preferred | parked) #IMPLIED dtmfclamp (yes | no) #IMPLIED > <!-- Stopscommand terminated. For all requests, the reason "stopped" indicates that aplay<stop> request, another command, orrecord operation in progress --> <!ELEMENT stop EMPTY> <!-- Plays an audio prompt,a re-INVITE with hold media stopped the request. For the <play> request, the "EOF" reason means the media server played out to the end of the file. For the <playcollect> request, a reason of "match" means a match was found; "timeout" means nobarge-in ordigitcollection. --> <!-- <play/> generates a <response/> message whenwas received before thespecified --> <!-- prompt has finished playingtime-out timer expired; "returnkey" and "escapekey" means the return key orif an error occurs. --> <!ELEMENT play (prompt)?> <!ATTLISTescape key terminated the operation, respectively; and "interrupted" means another request interrupted the <playcollect> request. For the <playrecord> request, a reason of "digit" means a digit was detected; "end_silence" means the recording terminated because the trailing silence timer expired; "init_silence" means that no voice was detected; "max_duration" means the recording terminated because the maximum time for recording completed; "escapekey" means the user entered the escape key in either playid CDATA #IMPLIED prompturl CDATA #IMPLIED promptencoding (ulaw | alaw) #IMPLIED > <!-- Plays an audio prompt, collects DTMF digits and returnsor record mode, thus terminating the--> <!-- digits torecording; or "error", for a general operation failure. For theapplication. May also be used simply to --> <!-- collect digits<faxplay> and <faxrecord> requests, a reason of "complete" means successful completion, even if there were bad lines or minor negotiation problems, i.e., a DCN was received; "disconnect" means the session was disconnected; "notfax" means nosequence is specified. <playcollect/> --> <!-- sends an asynchronous <response/> message whichDIS or DCS was received on the connection. The "reclength" isnormally --> <!-- generated whenthedesired digits have been collected or a --> <!-- timeout has expired. --> <!ELEMENT playcollect (prompt?, pattern?)> <!ATTLIST playcollect id CDATA #IMPLIED prompturl CDATA #IMPLIED barge (yes | no) "yes" promptencoding (ulaw | alaw) #IMPLIED cleardigits CDATA "yes" maxdigits CDATA #IMPLIED firstdigittimer CDATA #IMPLIED interdigittimer CDATA #IMPLIED intdigcrittimer CDATA #IMPLIED extradigittimer CDATA #IMPLIED returnkey CDATA "#" escapekey CDATA "*" > <!-- <playrecord/> takeslength of theaudio fromrecording in bytes for a <playrecord>. The "text" is the descriptive text associatedsession --> <!-- and records it towith thelocationresponse code. For the <faxplay> andformat specified. It --> <!-- generates a <response/> message if<faxrecord> requests, therequestfaxcode attribute isin error, --> <!-- whentherecording session has been interrupted by DTMF, -->binary-or of the following bit patterns. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page29]28] Internet-Draft MSCMLJuly 2003 <!-- the specified duration has been exceeded or a timeout has --> <!-- expired. The request has an optional prompt to be played --> <!-- prior to the start of recording. --> <!ELEMENT playrecord (prompt)?> <!ATTLIST playrecord id CDATA #IMPLIED prompturl CDATA #IMPLIED barge (yesMarch 2004 +------+--------------------------------------+ |no) #IMPLIED cleardigits (yesMask |no) #IMPLIED escapekey CDATA "*" recurl CDATA #REQUIRED mode (appenddescription |overwrite) "overwrite" recencoding (ulaw+------+--------------------------------------+ |alaw) #IMPLIED initsilence CDATA #IMPLIED endsilence CDATA #IMPLIED duration CDATA #IMPLIED beep (yes0 |no) "yes" recstopmask CDATA "01234567890*#" > <!ELEMENT prompt (audioOperation Failed |variable)+> <!ATTLIST prompt locale CDATA #IMPLIED baseurl CDATA #IMPLIED > <!ELEMENT audio EMPTY> <!ATTLIST audio url CDATA #REQUIRED encoding (ulaw|alaw) #IMPLIED > <!-- The encoding attribute is required for files that are not in--> <!-- self-describing .au or .wav format1 | Operation Succeeded | | 2 | Partial Success | | 4 | Image received anddo not have a well --> <!-- known extension (.ulaw). --> <!ELEMENT pattern (regexplaced in recurl |digitmap)+> <!ELEMENT regex EMPTY> <!ATTLIST regex value CDATA #REQUIRED name CDATA #IMPLIED > <!ELEMENT digitmap EMPTY> <!ATTLIST digitmap value CDATA #REQUIRED name CDATA #IMPLIED > <!ELEMENT variable EMPTY> <!ATTLIST variable type (date|digit8 |durationImage sent from prompturl |month|money16 |numberrmtid did not match |silence|string32 |timeError reading prompturl |weekday) #REQUIRED subtype (mdy|dmy64 | Error writing recurl |ymd|ndn128 |t12Negotiation failure on send phase |t24|USD256 |Van Dyke, et al. Expires January 8, 2004 [Page 30] Internet-Draft MSCML July 2003 genNegotiation failure on receive phase |ndn|crd512 |ord) #IMPLIED value CDATA #REQUIRED > <!-- Play fax file --> <!ELEMENT faxplay EMPTY> <!ATTLIST faxplay lclid CDATA "" prompturl CDATA #IMPLIED recurl CDATA #IMPLIED rmtid CDATA #IMPLIED > <!-- Record fax file --> <!ELEMENT faxrecord EMPTY> <!ATTLIST faxrecord lclid CDATA "" prompturl CDATA #IMPLIED recurl CDATA #IMPLIED rmtid CDATA #IMPLIED > <!ELEMENT response EMPTY> <!ATTLIST response request (configure_conferenceReserved |configure_leg|play1024 |playcollectIrrecoverable IP packet loss |playrecord|faxrecord2048 |faxplayLine errors in received image |stop) #REQUIRED id CDATA #IMPLIED code CDATA #REQUIRED text CDATA #REQUIRED reason CDATA #IMPLIED reclength CDATA #IMPLIED patternname CDATA #IMPLIED digits CDATA #IMPLIED faxcode CDATA #IMPLIED pages_sent CDATA #IMPLIED pages_recv CDATA #IMPLIED > <!ELEMENT notification (conference)> <!ELEMENT conference (activetalkers)> <!ATTLIST conference uniqueid CDATA #REQUIRED numtalkers CDATA #REQUIRED > 8.2 Schema This section is informative.+------+--------------------------------------+ 9. Formal Syntax Thenormative definition of the schema isfollowing syntax specification uses theDTDaugmented Data Type Definition (DTD) as described inthe previous section, MSCML DTD (Section 8.1). Van Dyke, et al. Expires January 8, 2004 [Page 31] Internet-Draft MSCML July 2003XML [4]. 9.1 Schema <?xml version="1.0" encoding="UTF-8"?><!-- =========================================================== --> <!-- MediaServerControl<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:annotation> <xs:documentation>MediaServerControl XML Schema--> <!--(MSCML) Copyright (c)2001-20032001-2004, SnowShore Networks, Inc.--> <!--All RightsReserved. --> <!-- =========================================================== --> <!--W3C Schema generatedReserved, except as offered byXMLSPY v5 rel. 2 U --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="MediaServerControl"> <xs:annotation> <xs:documentation> Media Server Control Markup Language (MSCML) </xs:documentation>RFC 3667</xs:documentation> </xs:annotation><xs:complexType> <xs:choice> <xs:element name="request" type="requestType"/> <xs:element name="response" type="responseType"/> <xs:element name="notification" type="notificationType"/> </xs:choice> <xs:attribute name="version" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="1.0"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:complexType name="activetalkersType"> <xs:sequence minOccurs="0"> <xs:element name="talker" type="talkerType" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="report" default="no"> <xs:simpleType><xs:simpleType name="yesno"> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType></xs:attribute> <xs:attribute name="interval" type="xs:string"/> </xs:complexType> <xs:complexType name="audioType"> <xs:attribute name="url" type="xs:string" use="required"/> <xs:attribute name="encoding"><xs:simpleType name="yn"> <xs:annotation> <xs:documentation>MSCML historically only allowed "yes" and "no" for boolean fields, as that made them more readable. The "yn" construction allows for both "yes" and "no" as well as boolean values going forward.</xs:documentation> </xs:annotation> <xs:union memberTypes="xs:boolean yesno"/> Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page32]29] Internet-DraftMSCML July 2003 <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="ulaw"/> <xs:enumeration value="alaw"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> <xs:complexType name="autoType"> <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="conferenceType"> <xs:sequence>MSCML March 2004 </xs:simpleType> <xs:elementname="activetalkers" type="activetalkersType"/> </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="configure_conferenceType">name="MediaServerControl"> <xs:annotation> <xs:documentation>There are three MSCML messages: request, response, and notification.</xs:documentation> </xs:annotation> <xs:complexType> <xs:choice> <xs:element name="request"> <xs:annotation> <xs:documentation>MSCML action request. </xs:documentation> </xs:annotation> <xs:complexType> <xs:choice> <xs:element name="configure_conference"> <xs:annotation> <xs:documentation>Configure conference as an entire object.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:elementname="inputgain" type="inputgainType"ref="inputgain" minOccurs="0"/> <xs:elementname="outputgain" type="outputgainType"ref="outputgain" minOccurs="0"/> <xs:element name="subscribe"type="subscribeType" minOccurs="0"/>minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="events"> <xs:complexType> <xs:sequence> <xs:element ref="activetalkers"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="reservedtalkers"type="xs:string"/>type="xs:string" use="optional"/> <xs:attributename="reserveconfmedia"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:attribute>name="reserveconfmedia" type="yn" use="optional"/> </xs:complexType><xs:complexType name="configure_legType"> <xs:sequence> <xs:element name="inputgain" type="inputgainType" minOccurs="0"/></xs:element> <xs:elementname="outputgain" type="outputgainType" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/>name="configure_leg"> Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page33]30] Internet-Draft MSCMLJuly 2003March 2004 <xs:annotation> <xs:documentation>Configure conference leg. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="inputgain" minOccurs="0"/> <xs:element ref="outputgain" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="optional"/> <xs:attributename="type">name="type" use="optional"> <xs:annotation> <xs:documentation>Default is "talker" </xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="talker"/> <xs:enumeration value="listener"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributename="mixmode">name="mixmode" use="optional"> <xs:annotation> <xs:documentation>Default is "full". </xs:documentation> </xs:annotation> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="full"/> <xs:enumeration value="mute"/> <xs:enumeration value="preferred"/> <xs:enumeration value="parked"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributename="dtmfclamp"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType>name="dtmfclamp" type="yn" use="optional"> <xs:annotation> <xs:documentation>Default is "yes" </xs:documentation> </xs:annotation> </xs:attribute></xs:complexType> <xs:complexType name="digitmapType"> <xs:attribute name="value" type="xs:string" use="required"/> <xs:attribute name="name" type="xs:string"/> </xs:complexType> <xs:complexType name="eventsType"> <xs:sequence> <xs:element name="activetalkers" type="activetalkersType"/> </xs:sequence> </xs:complexType> <xs:complexType name="fixedType"><xs:attributename="level" type="xs:string"/> </xs:complexType> <xs:complexType name="inputgainType"> <xs:choice> <xs:element name="auto" type="autoType"/> <xs:element name="fixed" type="fixedType"/> </xs:choice> </xs:complexType> <xs:complexType name="notificationType"> <xs:sequence> <xs:element name="conference" type="conferenceType"/>name="toneclamp" type="yn" use="optional"> <xs:annotation> <xs:documentation>Default is "yes" Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page34]31] Internet-Draft MSCMLJuly 2003 </xs:sequence> </xs:complexType> <xs:complexType name="outputgainType"> <xs:choice> <xs:element name="auto" type="autoType"/> <xs:element name="fixed" type="fixedType"/> </xs:choice>March 2004 </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType><xs:complexType name="patternType"> <xs:choice maxOccurs="unbounded"> <xs:element name="regex" type="regexType"/></xs:element> <xs:elementname="digitmap" type="digitmapType"/> </xs:choice> </xs:complexType> <xs:complexType name="playType">name="play"> <xs:annotation> <xs:documentation>Plays an audio prompt without barge-in or digit collection. Play implicitly subscribes to a "complete" event which is generated when the specified prompt has finished playing.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence minOccurs="0"> <xs:elementname="prompt" type="promptType"/>ref="prompt"/> </xs:sequence> <xs:attribute name="id"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="prompturl"type="xs:string"/>type="xs:anyURI" use="optional"/> <xs:attributename="promptencoding"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="ulaw"/> <xs:enumeration value="alaw"/> </xs:restriction> </xs:simpleType> </xs:attribute>name="offset" type="xs:string" use="optional"/> <xs:attribute name="promptencoding" type="xs:string" use="optional"/> </xs:complexType><xs:complexType name="playcollectType"> <xs:sequence> <xs:element name="prompt" type="promptType" minOccurs="0"/></xs:element> <xs:elementname="pattern" type="patternType" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:string"/> <xs:attribute name="prompturl" type="xs:string"/> <xs:attribute name="barge" default="yes"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:attribute>name="playcollect"> <xs:annotation> <xs:documentation>Plays an audio prompt, collects DTMF digits, and returns the digits to the application. May also be used to collect digits only if no specified sequence. Playcollect implicitly subscribes to a "complete" event which is normally generated when the desired digits have been collected or a timeout has expired.</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="prompt" minOccurs="0"/> <xs:element name="regex" minOccurs="0"> <xs:complexType> <xs:attributename="promptencoding">name="type" use="optional" default="regex"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"><xs:enumeration value="ulaw"/>Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page35]32] Internet-Draft MSCMLJuly 2003March 2004 <xs:enumeration value="regex"/> <xs:enumerationvalue="alaw"/>value="mgcpdigitmap"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributename="cleardigits"name="value" type="xs:string" use="required"/> <xs:attribute name="id" type="xs:string" use="optional"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:string" use="optional"/> <xs:attribute name="prompturl" type="xs:anyURI" use="optional"/> <xs:attribute name="offset" type="xs:string" use="optional"/> <xs:attribute name="barge" type="yn" use="optional"> <xs:annotation> <xs:documentation>Default is "yes". </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="promptencoding" type="xs:string"default="yes"/>use="optional"/> <xs:attribute name="cleardigits" type="yn" use="optional"> <xs:annotation> <xs:documentation>Default is "yes". </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="maxdigits"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="firstdigittimer"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="interdigittimer"type="xs:string"/> <xs:attribute name="intdigcrittimer" type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="extradigittimer"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="skipinterval" type="xs:string" use="optional" default="6s"/> <xs:attribute name="ffkey" type="xs:string" use="optional"/> <xs:attribute name="rwkey" type="xs:string" use="optional"/> Van Dyke, et al. Expires September 10, 2004 [Page 33] Internet-Draft MSCML March 2004 <xs:attribute name="returnkey" type="xs:string" use="optional" default="#"/> <xs:attribute name="escapekey" type="xs:string" use="optional" default="*"/> </xs:complexType><xs:complexType name="faxplayType"/> <xs:complexType name="faxrecordType"/> <xs:complexType name="playrecordType"></xs:element> <xs:element name="playrecord"> <xs:annotation> <xs:documentation>Playrecord takes the audio from the associated session and records it to the location and in the format specified. It generates a "response" message if the request is in error, when the recording session has been interrupted by DTMF the specified duration has been exceeded or a timeout has expired. The request has an optional prompt to be played prior to the start of recording. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence minOccurs="0"> <xs:elementname="prompt" type="promptType"/>ref="prompt"/> </xs:sequence> <xs:attribute name="id"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="prompturl"type="xs:string"/>type="xs:anyURI" use="optional"/> <xs:attributename="barge"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:attribute>name="offset" type="xs:string" use="optional"/> <xs:attributename="cleardigits"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType> </xs:attribute>name="barge" type="yn" use="optional"/> <xs:attribute name="cleardigits" type="yn" use="optional"/> <xs:attribute name="escapekey" type="xs:string" use="optional" default="*"/> <xs:attribute name="recurl" type="xs:string" use="required"/> <xs:attribute name="mode"default="overwrite">use="optional"> <xs:annotation> <xs:documentation>Default is "overwrite". </xs:documentation> </xs:annotation> <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">Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page36]34] Internet-Draft MSCMLJuly 2003 <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="ulaw"/> <xs:enumeration value="alaw"/> </xs:restriction> </xs:simpleType>March 2004 </xs:attribute> <xs:attribute name="recencoding" type="xs:string" use="optional"/> <xs:attribute name="initsilence"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="endsilence"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="duration"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="beep"default="yes"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="yes"/> <xs:enumeration value="no"/> </xs:restriction> </xs:simpleType>type="yn" use="optional"> <xs:annotation> <xs:documentation>Default is "yes". </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="recstopmask" type="xs:string" use="optional" default="01234567890*#"/> </xs:complexType><xs:complexType name="promptType"> <xs:choice maxOccurs="unbounded"> <xs:element name="audio" type="audioType"/></xs:element> <xs:elementname="variable" type="variableType"/> </xs:choice>name="faxplay"> <xs:annotation> <xs:documentation>Send (or reverse poll receive) a fax.</xs:documentation> </xs:annotation> <xs:complexType> <xs:attributename="locale" type="xs:string"/>name="lclid" type="xs:string" use="optional" default='""'/> <xs:attributename="baseurl" type="xs:string"/> </xs:complexType> <xs:complexType name="regexType">name="prompturl" type="xs:anyURI" use="optional"/> <xs:attributename="value" type="xs:string" use="required"/>name="recurl" type="xs:anyURI" use="optional"/> <xs:attributename="name" type="xs:string"/>name="rmtid" type="xs:string" use="optional"/> </xs:complexType><xs:complexType name="requestType"> <xs:choice> <xs:element name="configure_conference" type="configure_conferenceType"/> <xs:element name="configure_leg" type="configure_legType"/> <xs:element name="play" type="playType"/> <xs:element name="playcollect" type="playcollectType"/> <xs:element name="playrecord" type="playrecordType"/> <xs:element name="faxrecord" type="faxrecordType"/> <xs:element name="faxplay" type="faxplayType"/></xs:element> <xs:elementref="stop"/> </xs:choice> </xs:complexType> <xs:complexType name="responseType">name="faxrecord"> <xs:annotation> <xs:documentation>Receive (or reverse poll send) a fax.</xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="lclid" type="xs:string" use="optional" default='""'/> <xs:attributename="request" use="required">name="prompturl" type="xs:anyURI" use="optional"/> <xs:attribute name="recurl" type="xs:anyURI" use="optional"/> Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page37]35] Internet-Draft MSCMLJuly 2003March 2004 <xs:attribute name="rmtid" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <xs:element name="stop"> <xs:annotation> <xs:documentation>Stops a play, playcollect, or playrecord operation.</xs:documentation> </xs:annotation> <xs:complexType/> </xs:element> </xs:choice> </xs:complexType> </xs:element> <xs:element name="response"> <xs:annotation> <xs:documentation>Response to MSCML "request". </xs:documentation> </xs:annotation> <xs:complexType> <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:enumerationvalue="faxrecord"/> <xs:enumerationvalue="faxplay"/> <xs:enumeration value="faxrecord"/> <xs:enumeration value="stop"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="id"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="code" type="xs:string" use="required"/> <xs:attributename="reason"name="text" type="xs:string" use="required"/> <xs:attributename="text"name="reason" type="xs:string"use="required"/>use="optional"/> <xs:attributename="patternname" type="xs:string"/>name="reclength" type="xs:string" use="optional"/> <xs:attribute name="digits"type="xs:string"/>type="xs:string" use="optional"/> <xs:attributename="reclength" type="xs:string"/>name="playduration" type="xs:string" use="optional"> Van Dyke, et al. Expires September 10, 2004 [Page 36] Internet-Draft MSCML March 2004 <xs:annotation> <xs:documentation>How far into the object the play/playrecord/playcollect got in milliseconds. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="faxcode"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="pages_sent"type="xs:string"/>type="xs:string" use="optional"/> <xs:attribute name="pages_recv"type="xs:string"/>type="xs:string" use="optional"/> </xs:complexType><xs:element name="stop"> <xs:complexType/></xs:element><xs:complexType name="subscribeType"><xs:element name="notification"> <xs:annotation> <xs:documentation>Mid-session MSCML event notification. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="conference"> <xs:complexType> <xs:sequence> <xs:elementname="events" type="eventsType"/>ref="activetalkers"/> </xs:sequence> <xs:attribute name="uniqueid" type="xs:string" use="required"> <xs:annotation> <xs:documentation>The right-hand-side of the left-hand-side of the conference SIP Request-URI, e.g., the unique conference identifier.</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="numtalkers" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> <xs:attribute name="version" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="activetalkers"> <xs:annotation> Van Dyke, et al. Expires September 10, 2004 [Page 37] Internet-Draft MSCML March 2004 <xs:documentation>As part of a request, this element requests periodic lists of active talkers. As part of a notification, the talker elements indicate who is talking. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence minOccurs="0"> <xs:element name="talker" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>The talker element only makes sense as part of a notification. MSCML ignores talker elements in requests.</xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="callid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="report" type="yn" use="optional"> <xs:annotation> <xs:documentation>The default is no reporting (report="no").</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="interval" type="xs:string" use="optional"> <xs:annotation> <xs:documentation>Acceptable values for interval are 1 to 60 (seconds).</xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType><xs:complexType name="talkerType"></xs:element> <xs:element name="prompt"> <xs:annotation> <xs:documentation>Note that only one of "gain_level" or "gain_delta" attributes can appear in a prompt tag. </xs:documentation> </xs:annotation> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="audio"> <xs:annotation> <xs:documentation>The "encoding" attribute is required for files that are not in .au or .wav format. </xs:documentation> </xs:annotation> Van Dyke, et al. Expires September 10, 2004 [Page 38] Internet-Draft MSCML March 2004 <xs:complexType> <xs:attribute name="url" type="xs:anyURI" use="required"/> <xs:attributename="callid"name="encoding" type="xs:string"use="required"/>use="optional"/> </xs:complexType><xs:complexType name="variableType"></xs:element> <xs:element name="variable"> <xs:complexType> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="date"/> <xs:enumeration value="digit"/> <xs:enumeration value="duration"/> <xs:enumeration value="month"/> <xs:enumeration value="money"/> <xs:enumeration value="number"/> <xs:enumeration value="silence"/> <xs:enumeration value="string"/> <xs:enumeration value="time"/>Van Dyke, et al. Expires January 8, 2004 [Page 38] Internet-Draft MSCML July 2003<xs:enumeration value="weekday"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributename="subtype">name="subtype" use="optional"> <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:schema></xs:element> </xs:choice> <xs:attribute name="locale" type="xs:string" Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 39] Internet-Draft MSCMLJuly 2003 9.March 2004 use="optional"/> <xs:attribute name="baseurl" type="xs:string" use="optional"/> <xs:attribute name="gain_level" type="xs:string" use="optional"> <xs:annotation> <xs:documentation>Range from -18dB to +12db, default is 0. </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="gain_delta" type="xs:string" use="optional"> <xs:annotation> <xs:documentation>Range from -18dB to +18db, default is 0. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="inputgain"> <xs:complexType> <xs:choice> <xs:element ref="auto"/> <xs:element ref="fixed"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="outputgain"> <xs:complexType> <xs:choice> <xs:element ref="auto"/> <xs:element ref="fixed"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="auto"> <xs:complexType> <xs:attribute name="startlevel" type="xs:string" use="optional"/> <xs:attribute name="targetlevel" type="xs:string" use="optional"/> <xs:attribute name="silencethreshold" type="xs:string" use="optional"/> </xs:complexType> </xs:element> <xs:element name="fixed"> <xs:complexType> <xs:attribute name="level" type="xs:string" use="optional"/> Van Dyke, et al. Expires September 10, 2004 [Page 40] Internet-Draft MSCML March 2004 </xs:complexType> </xs:element> </xs:schema> 10. IANA Considerations9.110.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[3].[5]. Encoding considerations: See RFC3023[3].[5]. Interoperability considerations: See RFC2023[3][5] and this document. Published specification: This document. Applications which use this media type: Multimedia, enhanced conferencing and interactive applications. Intended usage: COMMONVan Dyke, et al. Expires January 8, 2004 [Page 40] Internet-Draft MSCML July 2003 10.11. 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 not limited to, access lists for application servers. That is, only a select list of application or proxy servers is allowed to create conferences, 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. As an XML markup, all of the security considerations of RFC3023[3] apply.[5] Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page 41] Internet-Draft MSCMLJuly 2003March 2004 apply. Normative References [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [2] Groves, C., Pantaleo, M., Anderson, T. and T. Taylor, "Gateway Control Protocol Version 1", RFC 3525, June 2003. [3] "Network call signalling protocol for the delivery of time-critical services over cable television networks using cable modems", ITU-T J.162, March 2001. [4] Thompson, H., Beech, D., Maloney, M. and N. Mendelsohn, "XML Schema Part 1: Structures", W3C REC REC-xmlschema-1-20010502, May 2001.[3][5] Murata, M., St. Laurent, S. and D. Kohn, "XML Media Types", RFC 3023, January 2001.Van Dyke, et al. Expires January 8, 2004 [Page 42] Internet-Draft MSCML July 2003Informative References[4][6] Van Dyke, J., Burger (Ed.), E. and A. Spitzer, "Basic Network Media Services with SIP", draft-burger-sipping-netann-06 (work in progress), January 2003.[5][7] Johnston, A. and O. Levin, "Session Initiation Protocol Call Control - Conferencing for User Agents",draft-ietf-sipping-cc-conferencing-00draft-ietf-sipping-cc-conferencing-02 (work in progress),AprilOctober 2003.[6][8] Mahy, R., "A Call Control and Multi-party usage framework for the Session Initiation Protocol (SIP)", draft-ietf-sipping-cc-framework-02 (work in progress), March 2003.[7][9] McGlashan, S., Burnett, D., Danielsen, P., Ferrans, J., Hunt, A., Karam, G., Ladd, D., Lucas, B., Porter, B., Rehor, K. and S. Tryphonas, "Voice Extensible Markup Language (VoiceXML) Version 2.0", W3C LastCall WD-voicexml20-20020424, April 2002.[8][10] ISC, "ISC Reference Architecture V1.2", June 2002.[9] Groves, C., Pantaleo, M., Anderson, T. and T. Taylor, "Gateway Control Protocol Version 1", RFC 3525, July 2003. [10][11] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000.[11][12] Burger,E.,E. and M. Dolly, "KeypadMarkup LanguageStimulus Protocol (KPML)",draft-burger-sipping-kpml-02draft-IETF-sipping-kpml-01 (work in progress),JulyOctober 2003.[12]Van Dyke, et al. Expires September 10, 2004 [Page 42] Internet-Draft MSCML March 2004 [13] Campbell, B., "Instant Message Sessions in SIMPLE", draft-ietf-simple-message-sessions-00 (work in progress), May 2003.[13][14] Hollenbeck, S., Rose, M. and L. Masinter, "Guidelines for the Use of Extensible Markup Lanugage (XML) within IETF Protocols", BCP 70, RFC 3470, January 2003.[14][15] Rosenberg, J. and H. Schulzrinne, "A Session Initiation Protocol (SIP) Event Package for Conference State", draft-ietf-sipping-conference-package-00 (work in progress), June 2002. [16] "Procedures for document facsimile transmission in the general switched telephone network", Recommendation T.30, April 1999.[15][17] "Procedures for real-time Group 3 facsimile communication over IP networks", Recommendation T.38, March 2002.Van Dyke, et al. Expires January 8, 2004 [Page 43] Internet-Draft MSCML July 2003[18] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, April 2001. Authors' Addresses Jeff Van Dyke SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA EMail: jvandyke@snowshore.com Eric Burger (editor) SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA EMail: e.burger@ieee.org Van Dyke, et al. Expires September 10, 2004 [Page 43] Internet-Draft MSCML March 2004 Andy Spitzer SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA EMail: woof@snowshore.comVan Dyke, et al. Expires January 8, 2004 [Page 44] Internet-Draft MSCML July 2003Appendix A. Contributors Jeff Van Dyke, Andy Spitzer, and Terence Lobo at SnowShore Networks, Inc. did the concept, development, documentation, and execution for MSCML. The IVR implementation was influenced by original work by Andy Spitzer while he was at The Telephone Connection, Inc. Cliff Schornak of Commetrex and Jeff Van Dyke developed the facsimile service. Terence Lobo, Srinivas Motamarri, Haj Elfadil, and Edwina Nowicki contributed in being the first to eat what got cooked up.Van Dyke, et al. Expires January 8, 2004 [Page 45] Internet-Draft MSCML July 2003Appendix B. Acknowledgements The following individuals significantly assisted in the development, direction, or, most importantly, debugging of MSCML: o Gaurav Srivastva and Subhash Verma from BayPackets o Jon Hinckley from SkyWave/Sestro o Wesley Hicks, Ravindra Kabre, Kevin Summers from Sonus Networks o Diana Rawlins and Sharadha Vijay from WorldCom o Tim Wong from Z-Tel o Stephane Bastien from BroadSoft o Kevin Flemming for his feedback on the semantics of creation versus configuration for conferencing. The authors would like to thank Scotty Farber, technical writer extraordinaire, who turned our techno-geek into English. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page46]44] Internet-Draft MSCMLJuly 2003March 2004 Intellectual Property Statement The IETF takes no position regarding the validity or scope of anyintellectual propertyIntellectual 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;neithernor does it represent that it has made any independent effort to identify any such rights. Information on the IETF's procedures with respect to rights instandards-track and standards-related documentationIETF Documents can be found inBCP-11.BCP 78 and BCP 79. Copies ofclaims of rightsIPR disclosures madeavailable for publicationto 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 byimplementorsimplementers or users of this specification can be obtained from the IETFSecretariat.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 rightswhichthat may cover technology that may be required topracticeimplement this standard. Please address the information to the IETFExecutive Director.at ietf-ipr@ietf.org. The IETF has been notified of intellectual property rights claimed in regard to some or all of the specification contained in this document. For more information consult the online list of claimed rights.Note that SnowShore Networks, Inc. is making their intellectual property right interest in MSCML available on a royalty-free basis. The full text of the disclosure is at http://www.ietf.org/ietf/IPR/SNOWSHORE-draft-vandyke-mscml.txt . Van Dyke, et al. Expires January 8, 2004 [Page 47] Full Copyright Statement Copyright (C) The Internet Society (2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purposeDisclaimer ofdeveloping Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.Validity This document and the information contained hereinisare provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCEDISCLAIMSDISCLAIM 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. Copyright Statement Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Van Dyke, et al. Expires September 10, 2004 [Page 45] Internet-Draft MSCML March 2004 Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Van Dyke, et al. ExpiresJanuary 8,September 10, 2004 [Page48]46] ----