summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc6231.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6231.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6231.txt')
-rw-r--r--doc/rfc/rfc6231.txt7507
1 files changed, 7507 insertions, 0 deletions
diff --git a/doc/rfc/rfc6231.txt b/doc/rfc/rfc6231.txt
new file mode 100644
index 0000000..f3faaf8
--- /dev/null
+++ b/doc/rfc/rfc6231.txt
@@ -0,0 +1,7507 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) S. McGlashan
+Request for Comments: 6231 Hewlett-Packard
+Category: Standards Track T. Melanchuk
+ISSN: 2070-1721 Rainwillow
+ C. Boulton
+ NS-Technologies
+ May 2011
+
+
+ An Interactive Voice Response (IVR) Control Package
+ for the Media Control Channel Framework
+
+Abstract
+
+ This document defines a Media Control Channel Framework Package for
+ Interactive Voice Response (IVR) dialog interaction on media
+ connections and conferences. The package defines dialog management
+ request elements for preparing, starting, and terminating dialog
+ interactions, as well as associated responses and notifications.
+ Dialog interactions are specified in a dialog language. This package
+ defines a lightweight IVR dialog language (supporting prompt
+ playback, runtime controls, Dual-Tone Multi-Frequency (DTMF)
+ collection, and media recording) and allows other dialog languages to
+ be used. The package also defines elements for auditing package
+ capabilities and IVR dialogs.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc6231.
+
+Copyright Notice
+
+ Copyright (c) 2011 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+
+
+
+McGlashan, et al. Standards Track [Page 1]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5
+ 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 8
+ 3. Control Package Definition . . . . . . . . . . . . . . . . . 9
+ 3.1. Control Package Name . . . . . . . . . . . . . . . . . . 9
+ 3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 9
+ 3.3. Common XML Support . . . . . . . . . . . . . . . . . . . 10
+ 3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . 10
+ 3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 10
+ 3.6. Audit . . . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 11
+ 4. Element Definitions . . . . . . . . . . . . . . . . . . . . . 11
+ 4.1. <mscivr> . . . . . . . . . . . . . . . . . . . . . . . . 12
+ 4.2. Dialog Management Elements . . . . . . . . . . . . . . . 14
+ 4.2.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 18
+ 4.2.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 20
+ 4.2.2.1. <subscribe> . . . . . . . . . . . . . . . . . . . 24
+ 4.2.2.1.1. <dtmfsub> . . . . . . . . . . . . . . . . . . 25
+ 4.2.2.2. <stream> . . . . . . . . . . . . . . . . . . . . 26
+ 4.2.2.2.1. <region> . . . . . . . . . . . . . . . . . . 27
+ 4.2.2.2.2. <priority> . . . . . . . . . . . . . . . . . 27
+ 4.2.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 28
+ 4.2.4. <response> . . . . . . . . . . . . . . . . . . . . . 28
+ 4.2.5. <event> . . . . . . . . . . . . . . . . . . . . . . . 30
+ 4.2.5.1. <dialogexit> . . . . . . . . . . . . . . . . . . 30
+ 4.2.5.2. <dtmfnotify> . . . . . . . . . . . . . . . . . . 32
+ 4.2.6. <params> . . . . . . . . . . . . . . . . . . . . . . 33
+ 4.2.6.1. <param> . . . . . . . . . . . . . . . . . . . . . 33
+
+
+
+McGlashan, et al. Standards Track [Page 2]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 4.3. IVR Dialog Elements . . . . . . . . . . . . . . . . . . . 34
+ 4.3.1. <dialog> . . . . . . . . . . . . . . . . . . . . . . 35
+ 4.3.1.1. <prompt> . . . . . . . . . . . . . . . . . . . . 38
+ 4.3.1.1.1. <variable> . . . . . . . . . . . . . . . . . 39
+ 4.3.1.1.1.1. Date Type . . . . . . . . . . . . . . . . 40
+ 4.3.1.1.1.2. Time Type . . . . . . . . . . . . . . . . 41
+ 4.3.1.1.1.3. Digits Type . . . . . . . . . . . . . . . 42
+ 4.3.1.1.2. <dtmf> . . . . . . . . . . . . . . . . . . . 42
+ 4.3.1.1.3. <par> . . . . . . . . . . . . . . . . . . . . 43
+ 4.3.1.1.3.1. <seq> . . . . . . . . . . . . . . . . . . 45
+ 4.3.1.2. <control> . . . . . . . . . . . . . . . . . . . . 46
+ 4.3.1.3. <collect> . . . . . . . . . . . . . . . . . . . . 49
+ 4.3.1.3.1. <grammar> . . . . . . . . . . . . . . . . . . 52
+ 4.3.1.4. <record> . . . . . . . . . . . . . . . . . . . . 53
+ 4.3.1.5. <media> . . . . . . . . . . . . . . . . . . . . . 57
+ 4.3.2. Exit Information . . . . . . . . . . . . . . . . . . 59
+ 4.3.2.1. <promptinfo> . . . . . . . . . . . . . . . . . . 59
+ 4.3.2.2. <controlinfo> . . . . . . . . . . . . . . . . . . 59
+ 4.3.2.2.1. <controlmatch> . . . . . . . . . . . . . . . 59
+ 4.3.2.3. <collectinfo> . . . . . . . . . . . . . . . . . . 60
+ 4.3.2.4. <recordinfo> . . . . . . . . . . . . . . . . . . 60
+ 4.3.2.4.1. <mediainfo> . . . . . . . . . . . . . . . . . 61
+ 4.4. Audit Elements . . . . . . . . . . . . . . . . . . . . . 61
+ 4.4.1. <audit> . . . . . . . . . . . . . . . . . . . . . . . 61
+ 4.4.2. <auditresponse> . . . . . . . . . . . . . . . . . . . 63
+ 4.4.2.1. <codecs> . . . . . . . . . . . . . . . . . . . . 65
+ 4.4.2.1.1. <codec> . . . . . . . . . . . . . . . . . . . 65
+ 4.4.2.2. <capabilities> . . . . . . . . . . . . . . . . . 66
+ 4.4.2.2.1. <dialoglanguages> . . . . . . . . . . . . . . 68
+ 4.4.2.2.2. <grammartypes> . . . . . . . . . . . . . . . 68
+ 4.4.2.2.3. <recordtypes> . . . . . . . . . . . . . . . . 68
+ 4.4.2.2.4. <prompttypes> . . . . . . . . . . . . . . . . 68
+ 4.4.2.2.5. <variables> . . . . . . . . . . . . . . . . . 69
+ 4.4.2.2.5.1. <variabletype> . . . . . . . . . . . . . 69
+ 4.4.2.2.6. <maxpreparedduration> . . . . . . . . . . . . 70
+ 4.4.2.2.7. <maxrecordduration> . . . . . . . . . . . . . 70
+ 4.4.2.3. <dialogs> . . . . . . . . . . . . . . . . . . . . 70
+ 4.4.2.3.1. <dialogaudit> . . . . . . . . . . . . . . . . 71
+ 4.5. Response Status Codes . . . . . . . . . . . . . . . . . . 71
+ 4.6. Type Definitions . . . . . . . . . . . . . . . . . . . . 77
+ 4.6.1. Boolean . . . . . . . . . . . . . . . . . . . . . . . 77
+ 4.6.2. DTMFChar . . . . . . . . . . . . . . . . . . . . . . 77
+ 4.6.3. DTMFString . . . . . . . . . . . . . . . . . . . . . 77
+ 4.6.4. Non-Negative Integer . . . . . . . . . . . . . . . . 77
+ 4.6.5. Positive Integer . . . . . . . . . . . . . . . . . . 77
+ 4.6.6. String . . . . . . . . . . . . . . . . . . . . . . . 78
+ 4.6.7. Time Designation . . . . . . . . . . . . . . . . . . 78
+ 4.6.8. Percentage . . . . . . . . . . . . . . . . . . . . . 78
+
+
+
+McGlashan, et al. Standards Track [Page 3]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 4.6.9. URI . . . . . . . . . . . . . . . . . . . . . . . . . 78
+ 4.6.10. MIME Media Type . . . . . . . . . . . . . . . . . . . 78
+ 4.6.11. Language Identifier . . . . . . . . . . . . . . . . . 78
+ 4.6.12. DateTime . . . . . . . . . . . . . . . . . . . . . . 79
+ 5. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 79
+ 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 105
+ 6.1. AS-MS Dialog Interaction Examples . . . . . . . . . . . . 105
+ 6.1.1. Starting an IVR Dialog . . . . . . . . . . . . . . . 105
+ 6.1.2. IVR Dialog Fails to Start . . . . . . . . . . . . . . 106
+ 6.1.3. Preparing and Starting an IVR Dialog . . . . . . . . 107
+ 6.1.4. Terminating a Dialog . . . . . . . . . . . . . . . . 108
+ 6.2. IVR Dialog Examples . . . . . . . . . . . . . . . . . . . 108
+ 6.2.1. Playing Announcements . . . . . . . . . . . . . . . . 109
+ 6.2.2. Prompt and Collect . . . . . . . . . . . . . . . . . 109
+ 6.2.3. Prompt and Record . . . . . . . . . . . . . . . . . . 111
+ 6.2.4. Runtime Controls . . . . . . . . . . . . . . . . . . 112
+ 6.2.5. Subscriptions and Notifications . . . . . . . . . . . 113
+ 6.2.6. Dialog Repetition until DTMF Collection Complete . . 113
+ 6.3. Other Dialog Languages . . . . . . . . . . . . . . . . . 114
+ 6.4. Foreign Namespace Attributes and Elements . . . . . . . . 115
+ 7. Security Considerations . . . . . . . . . . . . . . . . . . . 116
+ 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 119
+ 8.1. Control Package Registration . . . . . . . . . . . . . . 119
+ 8.2. URN Sub-Namespace Registration . . . . . . . . . . . . . 120
+ 8.3. XML Schema Registration . . . . . . . . . . . . . . . . . 120
+ 8.4. MIME Media Type Registration for
+ application/msc-ivr+xml . . . . . . . . . . . . . . . . . 120
+ 8.5. IVR Prompt Variable Type Registration Information . . . . 121
+ 9. Using VoiceXML as a Dialog Language . . . . . . . . . . . . . 122
+ 9.1. Preparing a VoiceXML Dialog . . . . . . . . . . . . . . . 122
+ 9.2. Starting a VoiceXML Dialog . . . . . . . . . . . . . . . 123
+ 9.2.1. Session Protocol Information . . . . . . . . . . . . 124
+ 9.2.2. Session Media Stream Information . . . . . . . . . . 125
+ 9.2.3. Session Parameter Information . . . . . . . . . . . . 127
+ 9.3. Terminating a VoiceXML Dialog . . . . . . . . . . . . . . 128
+ 9.4. Exiting a VoiceXML Dialog . . . . . . . . . . . . . . . . 128
+ 9.5. Call Transfer . . . . . . . . . . . . . . . . . . . . . . 129
+ 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 130
+ 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 130
+ 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 130
+ 12.1. Normative References . . . . . . . . . . . . . . . . . . 130
+ 12.2. Informative References . . . . . . . . . . . . . . . . . 132
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 4]
+
+RFC 6231 IVR Control Package May 2011
+
+
+1. Introduction
+
+ The Media Control Channel Framework [RFC6230] provides a generic
+ approach for establishment and reporting capabilities of remotely
+ initiated commands. The Channel Framework -- an equivalent term for
+ the Media Control Channel Framework -- utilizes many functions
+ provided by the Session Initiation Protocol (SIP) [RFC3261] for the
+ rendezvous and establishment of a reliable channel for control
+ interactions. The Control Framework also introduces the concept of a
+ Control Package. A Control Package is an explicit usage of the
+ Control Framework for a particular interaction set. This document
+ defines a Control Package for Interactive Voice Response (IVR)
+ dialogs on media connections and conferences. The term 'dialog' in
+ this document refers to an IVR dialog and is completely unrelated to
+ the notion of a SIP dialog. The term 'IVR' is used in its inclusive
+ sense, allowing media other than voice for dialog interaction.
+
+ The package defines dialog management request elements for preparing,
+ starting, and terminating dialog interactions, as well as associated
+ responses and notifications. Dialog interactions are specified using
+ a dialog language where the language specifies a well-defined syntax
+ and semantics for permitted operations (play a prompt, record input
+ from the user, etc.). This package defines a lightweight IVR dialog
+ language (supporting prompt playback, runtime controls, DTMF
+ collection, and media recording) and allows other dialog languages to
+ be used. These dialog languages are specified inside dialog
+ management elements for preparing and starting dialog interactions.
+ The package also defines elements for auditing package capabilities
+ and IVR dialogs.
+
+ This package has been designed to satisfy IVR requirements documented
+ in "Media Server Control Protocol Requirements" [RFC5167] -- more
+ specifically, REQ-MCP-28, REQ-MCP-29, and REQ-MCP-30. It achieves
+ this by building upon two major approaches to IVR dialog design.
+ These approaches address a wide range of IVR use cases and are used
+ in many applications that are extensively deployed today.
+
+ First, the package is designed to provide the major IVR functionality
+ of SIP media server languages such as netann [RFC4240], Media Server
+ Control Markup Language (MSCML) [RFC5022], and Media Server Markup
+ Language (MSML) [RFC5707], which themselves build upon more
+ traditional non-SIP languages ([H.248.9], [RFC2897]). A key
+ differentiator is that this package provides IVR functionality using
+ the Channel Framework.
+
+ Second, its design is aligned with key concepts of the web model as
+ defined in W3C Voice Browser languages. The key dialog management
+ mechanism is closely aligned with Call Control XML (CCXML) [CCXML10].
+
+
+
+McGlashan, et al. Standards Track [Page 5]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The dialog functionality defined in this package can be largely seen
+ as a subset of VoiceXML ([VXML20], [VXML21]): where possible, basic
+ prompting, DTMF collection, and media recording features are
+ incorporated, but not any advanced VoiceXML constructs (such as
+ <form>, its interpretation algorithm, or a dynamic data model). As
+ W3C develops VoiceXML 3.0 [VXML30], we expect to see further
+ alignment, especially in providing a set of basic independent
+ primitive elements (such as prompt, collect, record, and runtime
+ controls) that can be reused in different dialog languages.
+
+ By reusing and building upon design patterns from these approaches to
+ IVR languages, this package is intended to provide a foundation that
+ is familiar to current IVR developers and sufficient for most IVR
+ applications, as well as a path to other languages that address more
+ advanced applications.
+
+ This Control Package defines a lightweight IVR dialog language. The
+ scope of this dialog language is the following IVR functionality:
+
+ o playing one or more media resources as a prompt to the user
+
+ o runtime controls (including VCR controls like speed and volume)
+
+ o collecting DTMF input from the user according to a grammar
+
+ o recording user media input
+
+ Out of scope for this dialog language are more advanced functions
+ including ASR (Automatic Speech Recognition), TTS (Text-to-Speech),
+ fax, automatic prompt recovery ('media fallback'), and media
+ transformation. Such functionality can be addressed by other dialog
+ languages (such as VoiceXML) used with this package, extensions to
+ this package (addition of foreign elements or attributes from another
+ namespace), or other Control Packages.
+
+ The functionality of this package is defined by messages, containing
+ XML [XML] elements, transported using the Media Control Channel
+ Framework. The XML elements can be divided into three types: dialog
+ management elements; a dialog element that defines a lightweight IVR
+ dialog language used with dialog management elements; and finally,
+ elements for auditing package capabilities as well as dialogs managed
+ by the package.
+
+ Dialog management elements are designed to manage the general
+ lifecycle of a dialog. Elements are provided for preparing a dialog,
+ starting the dialog on a conference or connection, and terminating
+ execution of a dialog. Each of these elements is contained in a
+ Media Control Channel Framework CONTROL message sent to the media
+
+
+
+McGlashan, et al. Standards Track [Page 6]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ server. When the appropriate action has been executed, the media
+ server sends a REPORT message (or a 200 response to the CONTROL
+ message if it can execute in time) with a response element indicating
+ whether or not the operation was successful (e.g., if the dialog
+ cannot be started, then the error is reported in this response).
+ Once a dialog has been successfully started, the media server can
+ send further event notifications in a framework CONTROL message.
+ This package defines two event notifications: a DTMF event indicating
+ the DTMF activity, and a dialogexit event indicating that the dialog
+ has exited. If the dialog has executed successfully, the dialogexit
+ event includes information collected during the dialog. If an error
+ occurs during execution (e.g., a media resource failed to play, no
+ recording resource available, etc.), then error information is
+ reported in the dialogexit event. Once a dialogexit event is sent,
+ the dialog lifecycle is terminated.
+
+ The dialog management elements for preparing and starting a dialog
+ specify the dialog using a dialog language. A dialog language has
+ well-defined syntax and semantics for defined dialog operations.
+ Typically, dialog languages are written in XML where the root element
+ has a designated XML namespace and, when used as standalone
+ documents, have an associated MIME media type. For example, VoiceXML
+ is an XML dialog language with the root element <vxml> with the
+ designated namespace 'http://www.w3.org/2001/vxml' and standalone
+ documents are associated with the MIME media type 'application/
+ voicexml+xml' [RFC4267].
+
+ This Control Package defines its own lightweight IVR dialog language.
+ The language has a root element (<dialog>) with the same designated
+ namespace as used for other elements defined in this package (see
+ Section 8.2). The root element contains child elements for playing
+ prompts to the user, specifying runtime controls, collecting DTMF
+ input from the user, and recording media input from the user. The
+ child elements can co-occur so as to provide 'play announcement',
+ 'prompt and collect', as well as 'prompt and record' functionality.
+
+ The dialog management elements for preparing and starting a dialog
+ can specify the dialog language either by including inline a fragment
+ with the root element or by referencing an external dialog document.
+ The dialog language defined in this package is specified inline.
+ Other dialog languages, such as VoiceXML, can be used by referencing
+ an external dialog document.
+
+ The document is organized as follows. Section 3 describes how this
+ Control Package fulfills the requirements for a Media Control Channel
+ Framework Control Package. Section 4 describes the syntax and
+ semantics of defined elements, including dialog management
+ (Section 4.2), the IVR dialog element (Section 4.3), and audit
+
+
+
+McGlashan, et al. Standards Track [Page 7]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ elements (Section 4.4). Section 5 describes an XML schema for these
+ elements and provides extensibility by allowing attributes and
+ elements from other namespaces. Section 6 provides examples of
+ package usage. Section 7 describes important security considerations
+ for use of this Control Package. Section 8 provides information on
+ IANA registration of this Control Package, including its name, XML
+ namespace, and MIME media type. It also establishes a registry for
+ prompt variables. Finally, Section 9 provides additional information
+ on using VoiceXML when supported as an external dialog language.
+
+2. Conventions and Terminology
+
+ In this document, BCP 14 [RFC2119] defines the key words "MUST",
+ "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
+ "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". In
+ addition, BCP 15 indicates requirement levels for compliant
+ implementations.
+
+ The following additional terms are defined for use in this document:
+
+ Dialog: A dialog performs media interaction with a user following
+ the concept of an IVR (Interactive Voice Response) dialog (this
+ sense of 'dialog' is completely unrelated to a SIP dialog). A
+ dialog is specified as inline XML or via a URI reference to an
+ external dialog document. Traditional IVR dialogs typically
+ feature capabilities such as playing audio prompts, collecting
+ DTMF input, and recording audio input from the user. More
+ inclusive definitions include support for other media types,
+ runtime controls, synthesized speech, recording and playback of
+ video, recognition of spoken input, and mixed initiative
+ conversations.
+
+ Application Server: A SIP [RFC3261] application server (AS) hosts
+ and executes services such as interactive media and conferencing
+ in an operator's network. An AS influences and impacts the SIP
+ session, in particular by terminating SIP sessions on a media
+ server, which is under its control.
+
+ Media Server: A media server (MS) processes media streams on behalf
+ of an AS by offering functionality such as interactive media,
+ conferencing, and transcoding to the end user. Interactive media
+ functionality is realized by way of dialogs that are initiated by
+ the application server.
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 8]
+
+RFC 6231 IVR Control Package May 2011
+
+
+3. Control Package Definition
+
+ This section fulfills the mandatory requirement for information that
+ MUST be specified during the definition of a Control Framework
+ Package, as detailed in Section 7 of [RFC6230].
+
+3.1. Control Package Name
+
+ The Control Framework requires a Control Package to specify and
+ register a unique name.
+
+ The name of this Control Package is "msc-ivr/1.0" (Media Server
+ Control - Interactive Voice Response - version 1.0). Its IANA
+ registration is specified in Section 8.1.
+
+ Since this is the initial ("1.0") version of the Control Package,
+ there are no backwards-compatibility issues to address.
+
+3.2. Framework Message Usage
+
+ The Control Framework requires a Control Package to explicitly detail
+ the CONTROL messages that can be used as well as provide an
+ indication of directionality between entities. This will include
+ which role type is allowed to initiate a request type.
+
+ This package specifies Control and response messages in terms of XML
+ elements defined in Section 4, where the message bodies have the MIME
+ media type defined in Section 8.4. These elements describe requests,
+ responses, and notifications and all are contained within a root
+ <mscivr> element (Section 4.1).
+
+ In this package, the MS operates as a Control Server in receiving
+ requests from, and sending responses to, the AS (operating as Control
+ Client). Dialog management requests and responses are defined in
+ Section 4.2. Audit requests and responses are defined in
+ Section 4.4. Dialog management and audit responses are carried in a
+ framework 200 response or REPORT message bodies. This package's
+ response codes are defined in Section 4.5.
+
+ Note that package responses are different from framework response
+ codes. Framework error response codes (see Section 7 of [RFC6230])
+ are used when the request or event notification is invalid; for
+ example, a request is invalid XML (400), or not understood (500).
+
+ The MS also operates as a Control Client in sending event
+ notification to the AS (Control Server). Event notifications
+ (Section 4.2.5) are carried in CONTROL message bodies. The AS MUST
+ respond with a Control Framework 200 response.
+
+
+
+McGlashan, et al. Standards Track [Page 9]
+
+RFC 6231 IVR Control Package May 2011
+
+
+3.3. Common XML Support
+
+ The Control Framework requires a Control Package definition to
+ specify if the attributes for media dialog or conference references
+ are required.
+
+ This package requires that the XML schema in Section A.1 of [RFC6230]
+ MUST be supported for media dialogs and conferences.
+
+ The package uses "connectionid" and "conferenceid" attributes for
+ various element definitions (Section 4). The XML schema (Section 5)
+ imports the definitions of these attributes from the framework
+ schema.
+
+3.4. CONTROL Message Body
+
+ The Control Framework requires a Control Package to define the
+ control body that can be contained within a CONTROL command request
+ and to indicate the location of detailed syntax definitions and
+ semantics for the appropriate body types.
+
+ When operating as Control Server, the MS receives Control message
+ bodies with the MIME media type defined in Section 8.4 and containing
+ an <mscivr> element (Section 4.1) with either a dialog management or
+ audit request child element.
+
+ The following dialog management request elements are carried in
+ CONTROL message bodies to the MS: <dialogprepare> (Section 4.2.1),
+ <dialogstart> (Section 4.2.2), and <dialogterminate> (Section 4.2.3)
+ elements.
+
+ The <audit> request element (Section 4.4.1) is also carried in
+ CONTROL message bodies.
+
+ When operating as Control Client, the MS sends CONTROL messages with
+ the MIME media type defined in Section 8.4 and a body containing an
+ <mscivr> element (Section 4.1) with a notification <event> child
+ element (Section 4.2.5).
+
+3.5. REPORT Message Body
+
+ The Control Framework requires a Control Package definition to define
+ the REPORT body that can be contained within a REPORT command
+ request, or that no report package body is required. This section
+ indicates the location of detailed syntax definitions and semantics
+ for the appropriate body types.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 10]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ When operating as Control Server, the MS sends REPORT bodies with the
+ MIME media type defined in Section 8.4 and containing a <mscivr>
+ element (Section 4.1) with a response child element. The response
+ element for dialog management requests is a <response> element
+ (Section 4.2.4). The response element for an audit request is an
+ <auditresponse> element (Section 4.4.2).
+
+3.6. Audit
+
+ The Control Framework encourages Control Packages to specify whether
+ auditing is available, how it is triggered, as well as the query/
+ response formats.
+
+ This Control Package supports auditing of package capabilities and
+ dialogs on the MS. An audit request is carried in a CONTROL message
+ (see Section 3.4) and an audit response in a REPORT message (or a 200
+ response to the CONTROL if it can execute the audit in time) (see
+ Section 3.5).
+
+ The syntax and semantics of audit request and response elements are
+ defined in Section 4.4.
+
+3.7. Examples
+
+ The Control Framework recommends Control Packages to provide a range
+ of message flows that represent common flows using the package and
+ this framework document.
+
+ This Control Package provides examples of such message flows in
+ Section 6.
+
+4. Element Definitions
+
+ This section defines the XML elements for this package. The elements
+ are defined in the XML namespace specified in Section 8.2.
+
+ The root element is <mscivr> (Section 4.1). All other XML elements
+ (requests, responses, and notification elements) are contained within
+ it. Child elements describe dialog management (Section 4.2) and
+ audit (Section 4.4) functionality. The IVR dialog element (contained
+ within dialog management elements) is defined in Section 4.3.
+ Response status codes are defined in Section 4.5 and type definitions
+ in Section 4.6.
+
+ Implementation of this Control Package MUST address the Security
+ Considerations described in Section 7.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 11]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Implementation of this Control Package MUST adhere to the syntax and
+ semantics of XML elements defined in this section and the schema
+ (Section 5). Since XML schema is unable to support some types of
+ syntactic constraints (such as attribute and element co-occurrence),
+ some elements in this package specify additional syntactic
+ constraints in their textual definition. If there is a difference in
+ constraints between the XML schema and the textual description of
+ elements in this section, the textual definition takes priority.
+
+ The XML schema supports extensibility by allowing attributes and
+ elements from other namespaces. Implementations MAY support
+ additional capabilities by means of attributes and elements from
+ other (foreign) namespaces. Attributes and elements from foreign
+ namespaces are not described in this section.
+
+ Some elements in this Control Package contain attributes whose value
+ is a URI. These elements include: <dialogprepare> (Section 4.2.1),
+ <dialogstart> (Section 4.2.2), <media> (Section 4.3.1.5), <grammar>
+ (Section 4.3.1.3.1), and <record> (Section 4.3.1.4). The MS MUST
+ support both HTTP [RFC2616] and HTTPS [RFC2818] protocol schemes for
+ fetching and uploading resources, and the MS MAY support other
+ schemes. The implementation SHOULD support storage of authentication
+ information as part of its configuration, including security
+ certificates for use with HTTPS. If the implementation wants to
+ support user authentication, user certifications and passwords can
+ also be stored as part of its configuration or the implementation can
+ extend the schema (adding, for example, an http-password attribute in
+ its own namespace) and then map user authentication information onto
+ the appropriate headers following the HTTP authentication model
+ [RFC2616].
+
+ Some elements in this Control Package contain attributes whose value
+ is descriptive text primarily for diagnostic use. The implementation
+ can indicate the language used in the descriptive text by means of a
+ 'desclang' attribute ([RFC2277], [RFC5646]). The desclang attribute
+ can appear on the root element as well as selected subordinate
+ elements (see Section 4.1). The desclang attribute value on the root
+ element applies to all desclang attributes in subordinate elements
+ unless the subordinate element has an explicit desclang attribute
+ that overrides it.
+
+ Usage examples are provided in Section 6.
+
+4.1. <mscivr>
+
+ The <mscivr> element has the following attributes (in addition to
+ standard XML namespace attributes such as xmlns):
+
+
+
+
+McGlashan, et al. Standards Track [Page 12]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ version: a string specifying the mscivr package version. The value
+ is fixed as '1.0' for this version of the package. The attribute
+ is mandatory.
+
+ desclang: specifies the language used in descriptive text attributes
+ of subordinate elements (unless the subordinate element provides a
+ desclang attribute that overrides the value for its descriptive
+ text attributes). The descriptive text attributes on subordinate
+ elements include: the reason attribute on <response>
+ (Section 4.2.4), <dialogexit> (Section 4.2.5.1), and
+ <auditresponse> (Section 4.4.2); desc attribute on <variabletype>
+ and <format> (Section 4.4.2.2.5.1). A valid value is a language
+ identifier (Section 4.6.11). The attribute is optional. The
+ default value is i-default (BCP 47 [RFC5646]).
+
+ The <mscivr> element has the following defined child elements, only
+ one of which can occur:
+
+ 1. dialog management elements defined in Section 4.2:
+
+ <dialogprepare> prepare a dialog. See Section 4.2.1.
+
+ <dialogstart> start a dialog. See Section 4.2.2.
+
+ <dialogterminate> terminate a dialog. See Section 4.2.3.
+
+ <response> response to a dialog request. See Section 4.2.4.
+
+ <event> dialog or subscription notification. See Section 4.2.5.
+
+ 2. audit elements defined in Section 4.4:
+
+ <audit> audit package capabilities and managed dialogs. See
+ Section 4.4.1.
+
+ <auditresponse> response to an audit request. See
+ Section 4.4.2.
+
+ For example, a request to the MS to start an IVR dialog playing a
+ prompt:
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 13]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="ssd3r3:sds345b">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/welcome.wav"/>
+ </prompt>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ and a response from the MS that the dialog started successfully:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="200" dialogid="d1"/>
+ </mscivr>
+
+ and finally a notification from the MS indicating that the dialog
+ exited upon completion of playing the prompt:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"
+ desclang="en">
+ <event dialogid="d1">
+ <dialogexit status="1" reason="successful completion of the dialog">
+ <promptinfo termmode="completed"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+ The language of the descriptive text in the reason attribute of
+ <dialogexit> is explicitly indicated by the desclang attribute of the
+ <mscivr> root element.
+
+4.2. Dialog Management Elements
+
+ This section defines the dialog management XML elements for this
+ Control Package. These elements are divided into requests,
+ responses, and notifications.
+
+ Request elements are sent to the MS to request a specific dialog
+ operation to be executed. The following request elements are
+ defined:
+
+ <dialogprepare>: prepare a dialog for later execution
+
+ <dialogstart>: start a (prepared) dialog on a connection or
+ conference
+
+ <dialogterminate>: terminate a dialog
+
+
+
+McGlashan, et al. Standards Track [Page 14]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Responses from the MS describe the status of the requested operation.
+ Responses are specified in a <response> element (Section 4.2.4) that
+ includes a mandatory attribute describing the status in terms of a
+ numeric code. Response status codes are defined in Section 4.5. The
+ MS MUST respond to a request message with a response message. If the
+ MS is not able to process the request and carry out the dialog
+ operation, the request has failed and the MS MUST indicate the class
+ of failure using an appropriate 4xx response code. Unless an error
+ response code is specified for a class of error within this section,
+ implementations follow Section 4.5 in determining the appropriate
+ status code for the response.
+
+ Notifications are sent from the MS to provide updates on the status
+ of a dialog or operations defined within the dialog. Notifications
+ are specified in an <event> element (Section 4.2.5).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 15]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ +---------+
+ | IDLE |
+ +---------+
+ | |
+ | |
+ <dialogprepare>/| |<dialogstart>/
+ | |
+ +---------+ | | +---------+
+ +-----<--| |<--------+ +------------>| |+------>-+
+ | +-<----|PREPARING| |STARTING | |
+ | | | | ----------->| |---->--+ |
+ | | +---------+ / +---------+ | |
+ | | | / | | |
+ | | |/200 response / /200 response| | |
+ | | | / | | |
+ | | | / | | |
+ | | | / | | |
+ V V v /<dialogstart>/ v | |
+ | | +---------+ / +---------+ | |
+ | | | |--------+ +----| | | |
+ | | |PREPARED |---------+ | | STARTED | | |
+ | | | | | +--->| | | |
+ | | | |--------+| <dialogterminate>/| | | |
+ | | +---------+ || 200 response +---------+ | |
+ | | || | | |
+ | | /dialogexit notification|| | | |
+ | | (timeout) || | | |
+ | | || | | |
+ | | || | | |
+ | | || | | |
+ | | ||<dialogterminate>/ | | |
+ | | || 200 response | | |
+ | | || + |/dialogexit | |
+ | | || /dialogexit | notification | |
+ | | || notification | | |
+ | | || | | |
+ | | vv | | |
+ | | /ERROR response +-----------+ | | |
+ | +---------------------->| |<----------+ /ERROR response| |
+ +------------------------>|TERMINATED |<---------------------------+ |
+ <dialogterminate>/ | |<-----------------------------+
+ 410 response +-----------+ <dialogterminate>/410 response
+
+ Figure 1: Dialog Lifecycle
+
+ The MS implementation MUST adhere to the dialog lifecycle shown in
+ Figure 1, where each dialog has the following states:
+
+
+
+
+McGlashan, et al. Standards Track [Page 16]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ IDLE: the dialog is uninitialized.
+
+ PREPARING: the dialog is being prepared. The dialog is assigned a
+ valid dialog identifier (see below). If an error occurs, the
+ dialog transitions to the TERMINATED state and the MS MUST send a
+ response indicating the error. If the dialog is terminated before
+ preparation is complete, the dialog transitions to the TERMINATED
+ state and the MS MUST send a 410 response (Section 4.5) for the
+ prepare request.
+
+ PREPARED: the dialog has been successfully prepared and the MS MUST
+ send a 200 response indicating the prepare operation was
+ successful. If the dialog is terminated, then the MS MUST send a
+ 200 response, the dialog transitions to the TERMINATED state and
+ the MS MUST send a dialogexit notification event (see
+ Section 4.2.5.1). If the duration the dialog remains in the
+ PREPARED state exceeds the maximum preparation duration, the
+ dialog transitions to the TERMINATED state and the MS MUST send a
+ dialogexit notification with the appropriate error status code
+ (see Section 4.2.5.1). A maximum preparation duration of 300s is
+ RECOMMENDED.
+
+ STARTING: the dialog is being started. If the dialog has not
+ already been prepared, it is first prepared and assigned a valid
+ dialog identifier (see below). If an error occurs the dialog
+ transitions to the TERMINATED state and the MS MUST send a
+ response indicating the error. If the dialog is terminated, the
+ dialog transitions to the TERMINATED state and the MS MUST send a
+ 410 response (Section 4.5) for the start request.
+
+ STARTED: the dialog has been successfully started and is now active.
+ The MS MUST send a 200 response indicating the start operation was
+ successful. If any dialog events occur that were subscribed to,
+ the MS MUST send a notifications when the dialog event occurs.
+ When the dialog exits (due to normal termination, an error, or a
+ terminate request), the MS MUST send a dialogexit notification
+ event (see Section 4.2.5.1) and the dialog transitions to the
+ TERMINATED state.
+
+ TERMINATED: the dialog is terminated and its dialog identifier is no
+ longer valid. Dialog notifications MUST NOT be sent for this
+ dialog.
+
+ Each dialog has a valid identifier until it transitions to a
+ TERMINATED state. The dialog identifier is assigned by the MS unless
+ the <dialogprepare> or <dialogstart> request already specifies a
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 17]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ identifier (dialogid) that is not associated with any other dialog on
+ the MS. Once a dialog is in a TERMINATED state, its dialog
+ identifier is no longer valid and can be reused for another dialog.
+
+ The identifier is used to reference the dialog in subsequent
+ requests, responses, and notifications. In a <dialogstart> request,
+ the dialog identifier can be specified in the prepareddialogid
+ attribute indicating the prepared dialog to start. In
+ <dialogterminate> and <audit> requests, the dialog identifier is
+ specified in the dialogid attribute, indicating which dialog is to be
+ terminated or audited, respectively. If these requests specify a
+ dialog identifier already associated with another dialog on the MS,
+ the MS sends a response with a 405 status code (see Section 4.5) and
+ the same dialogid as in the request. The MS MUST specify a dialog
+ identifier in notifications associated with the dialog. The MS MUST
+ specify a dialog identifier in responses unless it is a response to a
+ syntactically invalid request.
+
+ For a given dialog, the <dialogprepare> or <dialogstart> request
+ elements specify the dialog content to execute either by including
+ inline a <dialog> element (the dialog language defined in this
+ package; see Section 4.3) or by referencing an external dialog
+ document (a dialog language defined outside this package). When
+ referencing an external dialog document, the request element contains
+ a URI reference to the remote document (specifying the dialog
+ definition) and, optionally, a type attribute indicating the MIME
+ media type associated with the dialog document. Consequently, the
+ dialog language associated with a dialog on the MS is identified
+ either inline by a <dialog> child element or by a src attribute
+ referencing a document containing the dialog language. The MS MUST
+ support inline the IVR dialog language defined in Section 4.3. The
+ MS MAY support other dialog languages by reference.
+
+4.2.1. <dialogprepare>
+
+ The <dialogprepare> request is sent to the MS to request preparation
+ of a dialog. Dialog preparation consists of (a) retrieving an
+ external dialog document and/or external resources referenced within
+ an inline <dialog> element and (b) validating the dialog document
+ syntactically and semantically.
+
+ A prepared dialog is executed when the MS receives a <dialogstart>
+ request referencing the prepared dialog identifier (see
+ Section 4.2.2).
+
+ The <dialogprepare> element has the following attributes:
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 18]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ src: specifies the location of an external dialog document to
+ prepare. A valid value is a URI (see Section 4.6.9). The MS MUST
+ support both HTTP [RFC2616] and HTTPS [RFC2818] schemes and the MS
+ MAY support other schemes. If the URI scheme is unsupported, the
+ MS sends a <response> with a 420 status code (Section 4.5). If
+ the document cannot be retrieved within the timeout interval, the
+ MS sends a <response> with a 409 status code. If the document
+ contains a type of dialog language that the MS does not support,
+ the MS sends a <response> with a 421 status code. The attribute
+ is optional. There is no default value.
+
+ type: specifies the type of the external dialog document indicated
+ in the 'src' attribute. A valid value is a MIME media type (see
+ Section 4.6.10). If the URI scheme used in the src attribute
+ defines a mechanism for establishing the authoritative MIME media
+ type of the media resource, the value returned by that mechanism
+ takes precedence over this attribute. The attribute is optional.
+ There is no default value.
+
+ maxage: Used to set the max-age value of the 'Cache-Control' header
+ in conjunction with an external dialog document fetched using
+ HTTP, as per [RFC2616]. A valid value is a non-negative integer
+ (see Section 4.6.4). The attribute is optional. There is no
+ default value.
+
+ maxstale: Used to set the max-stale value of the 'Cache-Control'
+ header in conjunction with an external dialog document fetched
+ using HTTP, as per [RFC2616]. A valid value is a non-negative
+ integer (see Section 4.6.4). The attribute is optional. There is
+ no default value.
+
+ fetchtimeout: the maximum timeout interval to wait when fetching an
+ external dialog document. A valid value is a Time Designation
+ (see Section 4.6.7). The attribute is optional. The default
+ value is 30s.
+
+ dialogid: string indicating a unique name for the dialog. If a
+ dialog with the same name already exists on the MS, the MS sends a
+ <response> with a 405 status code (Section 4.5). If this
+ attribute is not specified, the MS MUST create a unique name for
+ the dialog (see Section 4.2 for dialog identifier assignment).
+ The attribute is optional. There is no default value.
+
+ The <dialogprepare> element has the following sequence of child
+ elements:
+
+ <dialog> an IVR dialog (Section 4.3) to prepare. The element is
+ optional.
+
+
+
+McGlashan, et al. Standards Track [Page 19]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <params>: specifies input parameters (Section 4.2.6) for dialog
+ languages defined outside this specification. The element is
+ optional. If a parameter is not supported by the MS for the
+ external dialog language, the MS sends a <response> with a 427
+ status code (Section 4.5).
+
+ The dialog to prepare can be specified either inline with a <dialog>
+ child element or externally (for dialog languages defined outside
+ this specification) using the src attribute. It is a syntax error if
+ both an inline <dialog> element and a src attribute are specified and
+ the MS sends a <response> with a 400 status code (see Section 4.5).
+ The type, maxage, maxstale, and fetchtimeout attributes are only
+ relevant when a dialog is specified as an external document.
+
+ For example, a <dialogprepare> request to prepare an inline IVR
+ dialog with a single prompt:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogprepare>
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/welcome.wav"/>
+ </prompt>
+ </dialog>
+ </dialogprepare>
+ </mscivr>
+
+ In this example, a request with a specified dialogid to prepare a
+ VoiceXML dialog document located externally:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogprepare dialogid="d2" type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s"/>
+ </mscivr>
+
+ Since MS support for dialog languages other than the IVR dialog
+ language defined in this package is optional, if the MS does not
+ support the dialog language, it would send a response with the status
+ code 421 (Section 4.5). Further information on using VoiceXML can be
+ found in Section 9.
+
+4.2.2. <dialogstart>
+
+ The <dialogstart> element is sent to the MS to start a dialog. If
+ the dialog has not been prepared, the dialog is prepared (retrieving
+ external document and/or external resources referenced within
+ <dialog> element and the dialog document validated syntactically and
+
+
+
+McGlashan, et al. Standards Track [Page 20]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ semantically). Media processors (e.g., DTMF and prompt queue) are
+ activated and associated with the specified connection or conference.
+
+ The <dialogstart> element has the following attributes:
+
+ src: specifies the location of an external dialog document to start.
+ A valid value is a URI (see Section 4.6.9). The MS MUST support
+ both HTTP [RFC2616] and HTTPS [RFC2818] schemes and the MS MAY
+ support other schemes. If the URI scheme is unsupported, the MS
+ sends a <response> with a 420 status code (Section 4.5). If the
+ document cannot be retrieved with the timeout interval, the MS
+ sends a <response> with a 409 status code. If the document
+ contains a type of dialog language that the MS does not support,
+ the MS sends a <response> with a 421 status code. The attribute
+ is optional. There is no default value.
+
+ type: specifies the type of the external dialog document indicated
+ in the 'src' attribute. A valid value is a MIME media type (see
+ Section 4.6.10). If the URI scheme used in the src attribute
+ defines a mechanism for establishing the authoritative MIME media
+ type of the media resource, the value returned by that mechanism
+ takes precedence over this attribute. The attribute is optional.
+ There is no default value.
+
+ maxage: Used to set the max-age value of the 'Cache-Control' header
+ in conjunction with an external dialog document fetched using
+ HTTP, as per [RFC2616]. A valid value is a non-negative integer
+ (see Section 4.6.4). The attribute is optional. There is no
+ default value.
+
+ maxstale: Used to set the max-stale value of the 'Cache-Control'
+ header in conjunction with an external dialog document fetched
+ using HTTP, as per [RFC2616]. A valid value is a non-negative
+ integer (see Section 4.6.4). The attribute is optional. There is
+ no default value.
+
+ fetchtimeout: the maximum timeout interval to wait when fetching an
+ external dialog document. A valid value is a Time Designation
+ (see Section 4.6.7). The attribute is optional. The default
+ value is 30s.
+
+ dialogid: string indicating a unique name for the dialog. If a
+ dialog with the same name already exists on the MS, the MS sends a
+ <response> with a 405 status code (Section 4.5). If neither the
+ dialogid attribute nor the prepareddialogid attribute is
+ specified, the MS MUST create a unique name for the dialog (see
+ Section 4.2 for dialog identifier assignment). The attribute is
+ optional. There is no default value.
+
+
+
+McGlashan, et al. Standards Track [Page 21]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ prepareddialogid: string identifying a dialog previously prepared
+ using a dialogprepare (Section 4.2.1) request. If neither the
+ dialogid attribute nor the prepareddialogid attribute is
+ specified, the MS MUST create a unique name for the dialog (see
+ Section 4.2 for dialog identifier assignment). The attribute is
+ optional. There is no default value.
+
+ connectionid: string identifying the SIP dialog connection on which
+ this dialog is to be started (see Appendix A.1 of [RFC6230]). The
+ attribute is optional. There is no default value.
+
+ conferenceid: string identifying the conference on which this dialog
+ is to be started (see Appendix A.1 of [RFC6230]). The attribute
+ is optional. There is no default value.
+
+ Exactly one of the connectionid or conferenceid attributes MUST be
+ specified. If both the connectionid and conferenceid attributes are
+ specified or neither is specified, it is a syntax error and the MS
+ sends a <response> with a 400 status code (Section 4.5).
+
+ It is an error if the connection or conference referenced by a
+ specific connectionid or conferenceid attribute is not available on
+ the MS at the time the <dialogstart> request is executed. If an
+ invalid connectionid is specified, the MS sends a <response> with a
+ 407 status code (Section 4.5). If an invalid conferenceid is
+ specified, the MS sends a <response> with a 408 status code.
+
+ The <dialogstart> element has the following sequence of child
+ elements:
+
+ <dialog>: specifies an IVR dialog (Section 4.3) to execute. The
+ element is optional.
+
+ <subscribe>: specifies subscriptions to dialog events
+ (Section 4.2.2.1). The element is optional.
+
+ <params>: specifies input parameters (Section 4.2.6) for dialog
+ languages defined outside this specification. The element is
+ optional. If a parameter is not supported by the MS for the
+ external dialog language, the MS sends a <response> with a 427
+ status code (Section 4.5).
+
+ <stream>: determines the media stream(s) associated with the
+ connection or conference on which the dialog is executed
+ (Section 4.2.2.2). The <stream> element is optional. Multiple
+ <stream> elements can be specified.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 22]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The dialog to start can be specified either (a) inline with a
+ <dialog> child element, (b) externally using the src attribute (for
+ dialog languages defined outside this specification), or (c) by
+ referencing a previously prepared dialog using the prepareddialogid
+ attribute. If exactly one of the src attribute, the
+ prepareddialogid, or a <dialog> child element is not specified, it is
+ a syntax error and the MS sends a <response> with a 400 status code
+ (Section 4.5). If the prepareddialogid and dialogid attributes are
+ specified, it is also a syntax error and the MS sends a <response>
+ with a 400 status code. The type, maxage, maxstale, and fetchtimeout
+ attributes are only relevant when a dialog is specified as an
+ external document.
+
+ The <stream> element provides explicit control over which media
+ streams on the connection or conference are used during dialog
+ execution. For example, if a connection supports both audio and
+ video streams, a <stream> element could be used to indicate that only
+ the audio stream is used in receive mode. In cases where there are
+ multiple media streams of the same type for a dialog, the AS MUST use
+ <stream> elements to explicitly specify the configuration. If no
+ <stream> elements are specified, then the default media configuration
+ is that defined for the connection or conference.
+
+ If a <stream> element is in conflict (a) with another <stream>
+ element, (b) with specified connection or conference media
+ capabilities, or (c) with a Session Description Protocol (SDP) label
+ value as part of the connectionid (see Appendix A.1 of [RFC6230]),
+ then the MS sends a <response> with a 411 status code (Section 4.5).
+ If the media stream configuration is not supported by the MS, then
+ the MS sends a <response> with a 428 status code (Section 4.5).
+
+ The MS MAY support multiple, simultaneous dialogs being started on
+ the same connection or conference. For example, the same connection
+ can receive different media streams (e.g., audio and video) from
+ different dialogs, or receive (and implicitly mix where appropriate)
+ the same type of media streams from different dialogs. If the MS
+ does not support starting another dialog on the same connection or
+ conference, it sends a <response> with a 432 status code
+ (Section 4.5) when it receives the second (or subsequent) dialog
+ request.
+
+ For example, a request to start an ivr dialog on a connection
+ subscribing to DTMF notifications:
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 23]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="connection1">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/getpin.wav"/>
+ </prompt>
+ <collect maxdigits="2"/>
+ </dialog>
+ <subscribe>
+ <dtmfsub matchmode="all"/>
+ </subscribe>
+ </dialogstart>
+ </mscivr>
+
+ In this example, the dialog is started on a conference where the
+ conference only receives an audio media stream from the dialog:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart conferenceid="conference1">
+ <dialog>
+ <record maxtime="384000s"/>
+ </dialog>
+ <stream media="audio" direction="recvonly"/>
+ </dialogstart>
+ </mscivr>
+
+4.2.2.1. <subscribe>
+
+ The <subscribe> element allows the AS to subscribe to, and be
+ notified of, specific events that occur during execution of the
+ dialog. Notifications of dialog events are delivered using the
+ <event> element (see Section 4.2.5).
+
+ The <subscribe> element has no attributes.
+
+ The <subscribe> element has the following sequence of child elements
+ (0 or more occurrences):
+
+ <dtmfsub>: Subscription to DTMF input during the dialog
+ (Section 4.2.2.1.1). The element is optional.
+
+ If a request has a <subscribe> with no child elements, the MS treats
+ the request as if no <subscribe> element were specified.
+
+ The MS MUST support <dtmfsub> subscription for the IVR dialog
+ language defined in this specification (Section 4.3). It MAY support
+ other dialog subscriptions (specified using attributes and child
+ elements from a foreign namespace). If the MS does not support a
+
+
+
+McGlashan, et al. Standards Track [Page 24]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ subscription specified in a foreign namespace, the MS sends a
+ response with a 431 status code (see Section 4.5).
+
+4.2.2.1.1. <dtmfsub>
+
+ The <dtmfsub> element has the following attributes:
+
+ matchmode: controls which DTMF input is subscribed to. Valid values
+ are "all" - notify all DTMF key presses received during the
+ dialog; "collect" - notify only DTMF input matched by the collect
+ operation (Section 4.3.1.3); and "control" - notify only DTMF
+ input matched by the runtime control operation (Section 4.3.1.2).
+ The attribute is optional. The default value is "all".
+
+ The <dtmfsub> element has no child elements.
+
+ DTMF notifications are delivered in the <dtmfnotify> element
+ (Section 4.2.5.2).
+
+ For example, the AS wishes to subscribe to DTMF key press matching a
+ runtime control:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart dialogid="d3" connectionid="connection1">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/getpin.wav"/>
+ </prompt>
+ <control ffkey="2" rwkey="3"/>
+ </dialog>
+ <subscribe>
+ <dtmfsub matchmode="control"/>
+ </subscribe>
+ </dialogstart>
+ </mscivr>
+
+ Each time a '2' or '3' DTMF input is received, the MS sends a
+ notification event:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="d3">
+ <dtmfnotify matchmode="collect" dtmf="2"
+ timestamp="2008-05-12T12:13:14Z"/>
+ </event>
+ </mscivr>
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 25]
+
+RFC 6231 IVR Control Package May 2011
+
+
+4.2.2.2. <stream>
+
+ The <stream> element has the following attributes:
+
+ media: a string indicating the type of media associated with the
+ stream. A valid value is a MIME type-name as defined in Section
+ 4.2 of [RFC4288]. The following values MUST be used for common
+ types of media: "audio" for audio media, and "video" for video
+ media. See [IANA] for registered MIME type names. The attribute
+ is mandatory.
+
+ label: a string indicating the SDP label associated with a media
+ stream [RFC4574]. The attribute is optional.
+
+ direction: a string indicating the direction of the media flow
+ relative to the endpoint conference or connection. Defined values
+ are "sendrecv" (the endpoint can send media to, and receive media
+ from, the dialog), "sendonly" (the endpoint can only send media to
+ the dialog), "recvonly" (the endpoint can only receive media from
+ the dialog), and "inactive" (stream is not to be used). The
+ default value is "sendrecv". The attribute is optional.
+
+ The <stream> element has the following sequence of child elements:
+
+ <region>: an element to specify the area within a mixer video layout
+ where a media stream is displayed (Section 4.2.2.2.1). The
+ element is optional.
+
+ <priority>: an element to configure priority associated with the
+ stream in the conference mix (Section 4.2.2.2.2). The element is
+ optional.
+
+ If conferenceid is not specified or if the "media" attribute does not
+ have the value of "video", then the MS ignores the <region> and
+ <priority> elements.
+
+ For example, assume a User Agent connection with multiple audio and
+ video streams associated with the user and a separate web camera. In
+ this case, the dialog could be started to record only the audio and
+ video streams associated with the user:
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 26]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="connection1">
+ <dialog>
+ <record maxtime="384000s"/>
+ </dialog>
+ <stream media="audio" label="camaudio" direction="inactive"/>
+ <stream media="video" label="camvideo" direction="inactive"/>
+ <stream media="audio" label="useraudio" direction="sendonly"/>
+ <stream media="video" label="uservideo" direction="sendonly"/>
+ </dialogstart>
+ </mscivr>
+
+ Using the <region> element, the dialog can be started on a conference
+ mixer so that the video output from the dialog is directed to a
+ specific area within a video layout. For example:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart conferenceid="conference1">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/presentation.3gp"/>
+ </prompt>
+ </dialog>
+ <stream media="video" direction="recvonly">
+ <region>1</region>
+ </stream>
+ </dialogstart>
+ </mscivr>
+
+4.2.2.2.1. <region>
+
+ The <region> element is used to specify a named area within a
+ presentation layout where a video media stream is displayed. The MS
+ could, for example, play video media into an area of a video layout
+ where the layout and its named regions are specified using the Mixer
+ Control Package [MIXER-CP].
+
+ The <region> element has no attributes and its content model
+ specifies the name of the region.
+
+ If the region name is invalid, then the MS reports a 416 status code
+ (Section 4.5) in the response to the request element containing the
+ <region> element.
+
+4.2.2.2.2. <priority>
+
+ The <priority> element is used to explicitly specify the priority of
+ the dialog for presentation in a conference mix.
+
+
+
+McGlashan, et al. Standards Track [Page 27]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The <priority> element has no attributes and its content model
+ specifies a positive integer (see Section 4.6.5). The lower the
+ value, the higher the priority.
+
+4.2.3. <dialogterminate>
+
+ A dialog can be terminated by sending a <dialogterminate> request
+ element to the MS.
+
+ The <dialogterminate> element has the following attributes:
+
+ dialogid: string identifying the dialog to terminate. If the
+ specified dialog identifier is invalid, the MS sends a response
+ with a 405 status code (Section 4.5). The attribute is mandatory.
+
+ immediate: indicates whether or not a dialog in the STARTED state is
+ to be terminated immediately (in other states, termination is
+ always immediate). A valid value is a boolean (see
+ Section 4.6.1). A value of true indicates that the dialog is
+ terminated immediately and the MS MUST send a dialogexit
+ notification (Section 4.2.5.1) without report information. A
+ value of false indicates that the dialog terminates after the
+ current iteration and the MS MUST send a dialogexit notification
+ with report information. The attribute is optional. The default
+ value is false.
+
+ The MS MUST reply to the <dialogterminate> request with a <response>
+ element (Section 4.2.4), reporting whether or not the dialog was
+ terminated successfully.
+
+ For example, immediately terminating a STARTED dialog with dialogid
+ "d4":
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogterminate dialogid="d4" immediate="true"/>
+ </mscivr>
+
+ If the dialog is terminated successfully, then the response to the
+ dialogterminate request would be:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="200" dialogid="d4"/>
+ </mscivr>
+
+4.2.4. <response>
+
+ Responses to dialog management requests are specified with a
+ <response> element.
+
+
+
+McGlashan, et al. Standards Track [Page 28]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The <response> element has following attributes:
+
+ status: numeric code indicating the response status. Valid values
+ are defined in Section 4.5. The attribute is mandatory.
+
+ reason: string specifying a reason for the response status. The
+ attribute is optional. There is no default value.
+
+ desclang: specifies the language used in the value of the reason
+ attribute. A valid value is a language identifier
+ (Section 4.6.11). The attribute is optional. If not specified,
+ the value of the desclang attribute on <mscivr> (Section 4.1)
+ applies.
+
+ dialogid: string identifying the dialog. If the request specifies a
+ dialogid, then that value is used. Otherwise, with
+ <dialogprepare> and <dialogstart> requests, the dialogid generated
+ by the MS is used. If there is no available dialogid because the
+ request is syntactically invalid (e.g., a <dialogterminate>
+ request with no dialogid attribute specified), then the value is
+ the empty string. The attribute is mandatory.
+
+ connectionid: string identifying the SIP dialog connection
+ associated with the dialog (see Appendix A.1 of [RFC6230]). The
+ attribute is optional. There is no default value.
+
+ conferenceid: string identifying the conference associated with the
+ dialog (see Appendix A.1 of [RFC6230]). The attribute is
+ optional. There is no default value.
+
+ For example, a response when a dialog was prepared successfully:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="200" dialogid="d5"/>
+ </mscivr>
+
+ The response if dialog preparation failed due to an unsupported
+ dialog language:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="421" dialogid="d5"
+ reason="Unsupported dialog language: application/voicexml+xml"/>
+ </mscivr>
+
+ In this example, a <dialogterminate> request does not specify a
+ dialogid:
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 29]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogterminate/>
+ </mscivr>
+
+ The response status indicates a 400 (Syntax error) status code and
+ the dialogid attribute has an empty string value:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="400" dialogid=" "
+ reason="Attribute required: dialogid"/>
+ </mscivr>
+
+4.2.5. <event>
+
+ When a dialog generates a notification event, the MS sends the event
+ using an <event> element.
+
+ The <event> element has the following attributes:
+
+ dialogid: string identifying the dialog that generated the event.
+ The attribute is mandatory.
+
+ The <event> element has the following child elements, only one of
+ which can occur:
+
+ <dialogexit>: indicates that the dialog has exited
+ (Section 4.2.5.1).
+
+ <dtmfnotify>: indicates that a DTMF key press occurred
+ (Section 4.2.5.2).
+
+4.2.5.1. <dialogexit>
+
+ The <dialogexit> event indicates that a prepared or active dialog has
+ exited because it is complete, it has been terminated, or an error
+ occurred during execution (for example, a media resource cannot be
+ played). This event MUST be sent by the MS when the dialog exits.
+
+ The <dialogexit> element has the following attributes:
+
+ status: a status code indicating the status of the dialog when it
+ exits. A valid value is a non-negative integer (see
+ Section 4.6.4). The MS MUST support the following values:
+
+ 0 indicates the dialog has been terminated by a <dialogterminate>
+ request.
+
+ 1 indicates successful completion of the dialog.
+
+
+
+McGlashan, et al. Standards Track [Page 30]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 2 indicates the dialog terminated because the connection or
+ conference associated with the dialog has terminated.
+
+ 3 indicates the dialog terminated due to exceeding its maximum
+ duration.
+
+ 4 indicates the dialog terminated due to an execution error.
+
+ All other valid but undefined values are reserved for future use,
+ where new status codes are assigned using the Standards Action
+ process defined in [RFC5226]. The AS MUST treat any status code
+ it does not recognize as being equivalent to 4 (dialog execution
+ error). The attribute is mandatory.
+
+ reason: a textual description that the MS SHOULD use to provide a
+ reason for the status code, e.g., details about an error. A valid
+ value is a string (see Section 4.6.6). The attribute is optional.
+ There is no default value.
+
+ desclang: specifies the language used in the value of the reason
+ attribute. A valid value is a language identifier
+ (Section 4.6.11). The attribute is optional. If not specified,
+ the value of the desclang attribute on <mscivr> (Section 4.1)
+ applies.
+
+ The <dialogexit> element has the following sequence of child
+ elements:
+
+ <promptinfo>: report information (Section 4.3.2.1) about the prompt
+ execution in an IVR <dialog>. The element is optional.
+
+ <controlinfo>: reports information (Section 4.3.2.2) about the
+ control execution in an IVR <dialog>. The element is optional.
+
+ <collectinfo>: reports information (Section 4.3.2.3) about the
+ collect execution in an IVR <dialog>. The element is optional.
+
+ <recordinfo>: reports information (Section 4.3.2.4) about the record
+ execution in an IVR <dialog>. The element is optional.
+
+ <params>: reports exit parameters (Section 4.2.6) for a dialog
+ language defined outside this specification. The element is
+ optional.
+
+ For example, when an active <dialog> exits normally, the MS sends a
+ dialogexit <event> reporting information:
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 31]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="d6">
+ <dialogexit status="1">
+ <collectinfo dtmf="1234" termmode="match"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+4.2.5.2. <dtmfnotify>
+
+ The <dtmfnotify> element provides a notification of DTMF input
+ received during the active dialog as requested by a <dtmfsub>
+ subscription (Section 4.2.2.1).
+
+ The <dtmfnotify> element has the following attributes:
+
+ matchmode: indicates the matching mode specified in the subscription
+ request. Valid values are as follows:
+
+ "all" - all DTMF key presses notified individually;
+
+ "collect" - only DTMF input matched by the collect operation
+ notified; and
+
+ "control" - only DTMF input matched by the control operation
+ notified.
+
+ The attribute is optional. The default value is "all".
+
+ dtmf: DTMF key presses received according to the matchmode. A valid
+ value is a DTMF string (see Section 4.6.3) with no space between
+ characters. The attribute is mandatory.
+
+ timestamp: indicates the time (on the MS) at which the last key
+ press occurred according to the matchmode. A valid value is a
+ dateTime expression (Section 4.6.12). The attribute is mandatory.
+
+ For example, a notification of DTMF input matched during the collect
+ operation:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="d3">
+ <dtmfnotify matchmode="collect" dtmf="3123"
+ timestamp="2008-05-12T12:13:14Z"/>
+ </event>
+ </mscivr>
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 32]
+
+RFC 6231 IVR Control Package May 2011
+
+
+4.2.6. <params>
+
+ The <params> element is a container for <param> elements
+ (Section 4.2.6.1).
+
+ The <params> element has no attributes, but the following child
+ elements are defined (0 or more):
+
+ <param>: specifies a parameter name and value (Section 4.2.6.1).
+
+ For example, usage with a dialog language defined outside this
+ specification to send additional parameters into the dialog:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart type="application/x-dialog"
+ src="nfs://nas01/dialog4" connectionid="c1">
+ <params>
+ <param name="mode">playannouncement</param>
+ <param name="prompt1">nfs://nas01/media1.3gp</param>
+ <param name="prompt2">nfs://nas01/media2.3gp</param>
+ </params>
+ </dialogstart>
+ </mscivr>
+
+4.2.6.1. <param>
+
+ The <param> element describes a parameter name and value.
+
+ The <param> element has the following attributes:
+
+ name: a string indicating the name of the parameter. The attribute
+ is mandatory.
+
+ type: specifies a type indicating how the inline value of the
+ parameter is to be interpreted. A valid value is a MIME media
+ type (see Section 4.6.10). The attribute is optional. The
+ default value is "text/plain".
+
+ encoding: specifies a content-transfer-encoding schema applied to
+ the inline value of the parameter on top of the MIME media type
+ specified with the type attribute. A valid value is a content-
+ transfer-encoding schema as defined by the "mechanism" token in
+ Section 6.1 of [RFC2045]. The attribute is optional. There is no
+ default value.
+
+ The <param> element content model is the value of the parameter.
+ Note that a value that contains XML characters (e.g., "<") needs to
+ be escaped following standard XML conventions.
+
+
+
+McGlashan, et al. Standards Track [Page 33]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ For example, usage with a dialog language defined outside this
+ specification to receive parameters from the dialog when it exits:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="d6">
+ <dialogexit status="1">
+ <params>
+ <param name="mode">recording</param>
+ <param name="recording1" type="audio/x-wav" encoding="base64">
+ <![CDATA[
+ R0lGODlhZABqALMAAFrMYr/BvlKOVJKOg2xZUKmenMfDw8tgWJpV
+ ]]>
+ </param>
+ </params>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+4.3. IVR Dialog Elements
+
+ This section describes the IVR dialog language defined as part of
+ this specification. The MS MUST support this dialog language.
+
+ The <dialog> element is an execution container for operations of
+ playing prompts (Section 4.3.1.1), runtime controls
+ (Section 4.3.1.2), collecting DTMF (Section 4.3.1.3), and recording
+ user input (Section 4.3.1.4). Results of the dialog execution
+ (Section 4.3.2) are reported in a dialogexit notification event.
+
+ Using these elements, three common dialog models are supported:
+
+ playannouncements: only a <prompt> element is specified in the
+ container. The prompt media resources are played in sequence.
+
+ promptandcollect: a <collect> element is specified and, optionally,
+ a <prompt> element. If a <prompt> element is specified and
+ bargein is enabled, playing of the prompt is terminated when
+ bargein occurs, and DTMF collection is initiated; otherwise, the
+ prompt is played to completion before DTMF collection is
+ initiated. If no prompt element is specified, DTMF collection is
+ initiated immediately.
+
+ promptandrecord: a <record> element is specified and, optionally, a
+ <prompt> element. If a <prompt> element is specified and bargein
+ is enabled, playing of the prompt is terminated when bargein
+ occurs, and recording is initiated; otherwise, the prompt is
+ played to completion before recording is initiated. If no prompt
+ element is specified, recording is initiated immediately.
+
+
+
+McGlashan, et al. Standards Track [Page 34]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ In addition, this dialog language supports runtime ('VCR') controls
+ enabling a user to control prompt playback using DTMF.
+
+ Each of the core elements -- <prompt>, <control>, <collect>, and
+ <record> -- are specified so that their execution and reporting is
+ largely self-contained. This facilitates their reuse in other dialog
+ container elements. Note that DTMF and bargein behavior affects
+ multiple elements and is addressed in the relevant element
+ definitions.
+
+ Execution results are reported in the <dialogexit> notification event
+ with child elements defined in Section 4.3.2. If the dialog
+ terminated normally (i.e., not due to an error or to a
+ <dialogterminate> request), then the MS MUST report the results for
+ the operations specified in the dialog:
+
+ <prompt>: <promptinfo> (see Section 4.3.2.1) with at least the
+ termmode attribute specified.
+
+ <control>: <controlinfo> (see Section 4.3.2.2) if any runtime
+ controls are matched.
+
+ <collect>: <collectinfo> (see Section 4.3.2.3) with the dtmf and
+ termmode attributes specified.
+
+ <record>: <recordinfo> (see Section 4.3.2.4) with at least the
+ termmode attribute and one <mediainfo> element specified.
+
+ The media format requirements for IVR dialogs are undefined. This
+ package is agnostic to the media types and codecs for media resources
+ and recording that need to be supported by an implementation. For
+ example, an MS implementation might only support audio and in
+ particular the 'audio/basic' codec for media playback and recording.
+ However, when executing a dialog, if an MS encounters a media type or
+ codec that it cannot process, the MS MUST stop further processing and
+ report the error using the dialogexit notification.
+
+4.3.1. <dialog>
+
+ An IVR dialog to play prompts to the user, allow runtime controls,
+ collect DTMF, or record input. The dialog is specified using a
+ <dialog> element.
+
+ A <dialog> element has the following attributes:
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 35]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ repeatCount: number of times the dialog is to be executed. A valid
+ value is a non-negative integer (see Section 4.6.4). A value of 0
+ indicates that the dialog is repeated until halted by other means.
+ The attribute is optional. The default value is 1.
+
+ repeatDur: maximum duration for dialog execution. A valid value is
+ a time designation (see Section 4.6.7). If no value is specified,
+ then there is no limit on the duration of the dialog. The
+ attribute is optional. There is no default value.
+
+ repeatUntilComplete: indicates whether the MS terminates dialog
+ execution when an input operation is completed successfully. A
+ valid value is a boolean (see Section 4.6.1). A value of true
+ indicates that dialog execution is terminated when an input
+ operation associated with its child elements is completed
+ successfully (see execution model below for precise conditions).
+ A value of false indicates that dialog execution is terminated by
+ other means. The attribute is optional. The default value is
+ false.
+
+ The repeatDur attribute takes priority over the repeatCount attribute
+ in determining maximum duration of the dialog. See 'repeatCount' and
+ 'repeatDur' in the Synchronized Multimedia Integration Language
+ (SMIL) [W3C.REC-SMIL2-20051213] for further information. In the
+ situation where a dialog is repeated more than once, only the results
+ of operations in the last dialog iteration are reported.
+
+ The <dialog> element has the following sequence of child elements (at
+ least one, any order):
+
+ <prompt>: defines media resources to play in sequence (see
+ Section 4.3.1.1). The element is optional.
+
+ <control>: defines how DTMF is used for runtime controls (see
+ Section 4.3.1.2). The element is optional.
+
+ <collect>: defines how DTMF is collected (see Section 4.3.1.3). The
+ element is optional.
+
+ <record>: defines how recording takes place (see Section 4.3.1.4).
+ The element is optional.
+
+ Although the behavior when both <collect> and <record> elements are
+ specified in a request is not defined in this Control Package, the MS
+ MAY support this configuration. If the MS does not support this
+ configuration, the MS sends a <response> with a 433 status code.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 36]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The MS has the following execution model for the IVR dialog after
+ initialization (initialization errors are reported by the MS in the
+ response):
+
+ 1. If an error occurs during execution, then the MS terminates the
+ dialog and reports the error in the <dialogexit> event by setting
+ the status attribute (see Section 4.3.2). Details about the
+ error are specified in the reason attribute.
+
+ 2. The MS initializes a counter to 0.
+
+ 3. The MS starts a duration timer for the value of the repeatDur
+ attribute. If the timer expires before the dialog is complete,
+ then the MS terminates the dialog and sends a dialogexit whose
+ status attribute is set to 3 (see Section 4.2.5.1). The MS MAY
+ report information in the dialogexit gathered in the last
+ execution cycle (if any).
+
+ 4. The MS initiates a dialog execution cycle. Each cycle executes
+ the operations associated with the child elements of the dialog.
+ If a <prompt> element is specified, then execute the element's
+ prompt playing operation and activate any controls (if the
+ <control> element is specified). If no <prompt> is specified or
+ when a specified <prompt> terminates, then start the collect
+ operation or the record operation if the <collect> or <record>
+ elements, respectively, are specified. If subscriptions are
+ specified for the dialog, then the MS sends a notification event
+ when the specified event occurs. If execution of a child element
+ results in an error, the MS terminates dialog execution (and
+ stops other child element operations) and the MS sends a
+ dialogexit status event, reporting any information gathered.
+
+ 5. If the dialog execution cycle completes successfully, then the MS
+ increments the counter by one. The MS terminates dialog
+ execution if either of the following conditions is true:
+
+ * the value of the repeatCount attribute is greater than zero,
+ and the counter is equal to the value of the repeatCount
+ attribute.
+
+ * the value of the repeatUntilComplete attribute is true and one
+ of the following conditions is true:
+
+ + <collect> reports termination status of 'match' or
+ 'stopped'.
+
+ + <record> reports termination status of 'stopped', 'dtmf',
+ 'maxtime', or 'finalsilence'.
+
+
+
+McGlashan, et al. Standards Track [Page 37]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ When the MS terminates dialog execution, it sends a dialogexit
+ (with a status of 1) reporting operation information collected in
+ the last dialog execution cycle only. Otherwise, another dialog
+ execution cycle is initiated.
+
+4.3.1.1. <prompt>
+
+ The <prompt> element specifies a sequence of media resources to play
+ back in document order.
+
+ A <prompt> element has the following attributes:
+
+ xml:base: A string declaring the base URI from which relative URIs
+ in child elements are resolved prior to fetching. A valid value
+ is a URI (see Section 4.6.9). The attribute is optional. There
+ is no default value.
+
+ bargein: Indicates whether user input stops prompt playback unless
+ the input is associated with a specified runtime <control>
+ operation (input matching control operations never interrupts
+ prompt playback). A valid value is a boolean (see Section 4.6.1).
+ A value of true indicates that bargein is permitted and prompt
+ playback is stopped. A value of false indicates that bargein is
+ not permitted: user input does not terminate prompt playback. The
+ attribute is optional. The default value is true.
+
+ The <prompt> element has the following child elements (at least one,
+ any order, multiple occurrences of elements permitted):
+
+ <media>: specifies a media resource (see Section 4.3.1.5) to play.
+ The element is optional.
+
+ <variable>: specifies a variable media announcement (see
+ Section 4.3.1.1.1) to play. The element is optional.
+
+ <dtmf>: generates one or more DTMF tones (see Section 4.3.1.1.2) to
+ play. The element is optional.
+
+ <par>: specifies media resources to play in parallel (see
+ Section 4.3.1.1.3). The element is optional.
+
+ If the MS does not support the configuration required for prompt
+ playback to the output media streams and a more specific error code
+ is not defined for its child elements, the MS sends a <response> with
+ a 429 status code (Section 4.5). The MS MAY support transcoding
+ between the media resource format and the output stream format.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 38]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The MS has the following execution model for prompt playing after
+ initialization:
+
+ 1. The MS initiates prompt playback playing its child elements
+ (<media>, <variable>, <dtmf>, and <par>) one after another in
+ document order.
+
+ 2. If any error (including fetching and rendering errors) occurs
+ during prompt execution, then the MS terminates playback and
+ reports its error status to the dialog container (see
+ Section 4.3) with a <promptinfo> (see Section 4.3.2.1) where the
+ termmode attribute is set to stopped and any additional
+ information is set.
+
+ 3. If DTMF input is received and the value of the bargein attribute
+ is true, then the MS terminates prompt playback and reports its
+ execution status to the dialog container (see Section 4.3) with a
+ <promptinfo> (see Section 4.3.2.1) where the termmode attribute
+ is set to bargein and any additional information is set.
+
+ 4. If prompt playback is stopped by the dialog container, then the
+ MS reports its execution status to the dialog container (see
+ Section 4.3) with a <promptinfo> (see Section 4.3.2.1) where the
+ termmode attribute is set to stopped and any additional
+ information is set.
+
+ 5. If prompt playback completes successfully, then the MS reports
+ its execution status to the dialog container (see Section 4.3)
+ with a <promptinfo> (see Section 4.3.2.1) where the termmode
+ attribute is set to completed and any additional information is
+ set.
+
+4.3.1.1.1. <variable>
+
+ The <variable> element specifies variable announcements using
+ predefined media resources. Each variable has at least a type (e.g.,
+ date) and a value (e.g., 2008-02-25). The value is rendered
+ according to the prompt variable type (e.g., 2008-02-25 is rendered
+ as the date 25th February 2008). The precise mechanism for
+ generating variable announcements (including the location of
+ associated media resources) is implementation specific.
+
+ A <variable> element has the following attributes:
+
+ type: specifies the type of prompt variable to render. This
+ specification defines three values -- date (Section 4.3.1.1.1.1),
+ time (Section 4.3.1.1.1.2), and digits (Section 4.3.1.1.1.3). All
+ other valid but undefined values are reserved for future use,
+
+
+
+McGlashan, et al. Standards Track [Page 39]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ where new values are assigned as described in Section 8.5. A
+ valid value is a string (see Section 4.6.6). The attribute is
+ mandatory.
+
+ value: specifies a string to be rendered according to the prompt
+ variable type. A valid value is a string (see Section 4.6.6).
+ The attribute is mandatory.
+
+ format: specifies format information that the prompt variable type
+ uses to render the value attribute. A valid value is a string
+ (see Section 4.6.6). The attribute is optional. There is no
+ default value.
+
+ gender: specifies the gender that the prompt variable type uses to
+ render the value attribute. Valid values are "male" or "female".
+ The attribute is optional. There is no default value.
+
+ xml:lang: specifies the language that the prompt variable type uses
+ to render the value attribute. A valid value is a language
+ identifier (see Section 4.6.11). The attribute is optional.
+ There is no default value.
+
+ The <variable> element has no children.
+
+ This specification is agnostic to the type and codec of media
+ resources into which variables are rendered as well as the rendering
+ mechanism itself. For example, an MS implementation supporting audio
+ rendering could map the <variable> into one or more audio media
+ resources.
+
+ This package is agnostic to which <variable> types are supported by
+ an implementation. If a <variable> element configuration specified
+ in a request is not supported by the MS, the MS sends a <response>
+ with a 425 status code (Section 4.5).
+
+4.3.1.1.1.1. Date Type
+
+ The date variable type provides a mechanism for dynamically rendering
+ a date prompt.
+
+ The <variable> type attribute MUST have the value "date".
+
+ The <variable> format attribute MUST be one of the following values
+ and comply with its rendering of the value attribute:
+
+ mdy indicating that the <variable> value attribute is to be rendered
+ as sequence composed of month, then day, then year.
+
+
+
+
+McGlashan, et al. Standards Track [Page 40]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ ymd indicating that the <variable> value attribute is to be rendered
+ as sequence composed of year, then month, then day.
+
+ dym indicating that the <variable> value attribute is to be rendered
+ as sequence composed of day, then year, then month.
+
+ dm indicating that the <variable> value attribute is to be rendered
+ as sequence composed of day then month.
+
+ The <variable> value attribute MUST comply with a lexical
+ representation of date where
+
+ yyyy '-' mm '-' dd
+
+ as defined in Section 3.2.9 of [XMLSchema:Part2].
+
+ For example,
+
+ <variable type="date" format="dmy" value="2010-11-25"
+ xml:lang="en" gender="male"/>
+
+ describes a variable date prompt where the date can be rendered in
+ audio as "twenty-fifth of November two thousand and ten" using a list
+ of <media> resources:
+
+ <media loc="nfs://voicebase/en/male/25th.wav"/>
+ <media loc="nfs://voicebase/en/male/of.wav"/>
+ <media loc="nfs://voicebase/en/male/november.wav"/>
+ <media loc="nfs://voicebase/en/male/2000.wav"/>
+ <media loc="nfs://voicebase/en/male/and.wav"/>
+ <media loc="nfs://voicebase/en/male/10.wav"/>
+
+4.3.1.1.1.2. Time Type
+
+ The time variable type provides a mechanism for dynamically rendering
+ a time prompt.
+
+ The <variable> type attribute MUST have the value "time".
+
+ The <variable> format attribute MUST be one of the following values
+ and comply with its rendering of the value attribute:
+
+ t12 indicating that the <variable> value attribute is to be rendered
+ as a time in traditional 12-hour format using am or pm (for
+ example, "twenty-five minutes past 2 pm" for "14:25").
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 41]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ t24 indicating that the <variable> value attribute is to be rendered
+ as a time in 24-hour format (for example, "fourteen twenty-five"
+ for "14:25").
+
+ The <variable> value attribute MUST comply with a lexical
+ representation of time where
+
+ hh ':' mm ( ':' ss )?
+
+ as defined in Section 3.2.8 of [XMLSchema:Part2].
+
+4.3.1.1.1.3. Digits Type
+
+ The digits variable type provides a mechanism for dynamically
+ rendering a digit sequence.
+
+ The <variable> type attribute MUST have the value "digits".
+
+ The <variable> format attribute MUST be one of the following values
+ and comply with its rendering of the value attribute:
+
+ gen indicating that the <variable> value attribute is to be rendered
+ as a general digit string (for example, "one two three" for
+ "123").
+
+ crn indicating that the <variable> value attribute is to be rendered
+ as a cardinal number (for example, "one hundred and twenty-
+ three" for "123").
+
+ ord indicating that the <variable> value attribute is to be rendered
+ as an ordinal number (for example, "one hundred and twenty-
+ third" for "123").
+
+ The <variable> value attribute MUST comply with the lexical
+ representation
+
+ d+
+
+ i.e., one or more digits.
+
+4.3.1.1.2. <dtmf>
+
+ The <dtmf> element specifies a sequence of DTMF tones for output.
+
+ DTMF tones could be generated using <media> resources where the
+ output is transported as RTP audio packets. However, <media>
+ resources are not sufficient for cases where DTMF tones are to be
+ transported as DTMF RTP [RFC4733] or in event packages.
+
+
+
+McGlashan, et al. Standards Track [Page 42]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ A <dtmf> element has the following attributes:
+
+ digits: specifies the DTMF sequence to output. A valid value is a
+ DTMF string (see Section 4.6.3). The attribute is mandatory.
+
+ level: used to define the power level for which the DTMF tones will
+ be generated. Values are expressed in dBm0. A valid value is an
+ integer in the range of 0 to -96 (dBm0). Larger negative values
+ express lower power levels. Note that values lower than -55 dBm0
+ will be rejected by most receivers (TR-TSY-000181, ITU-T Q.24A).
+ The attribute is optional. The default value is -6 (dBm0).
+
+ duration: specifies the duration for which each DTMF tone is
+ generated. A valid value is a time designation (see
+ Section 4.6.7). The MS MAY round the value if it only supports
+ discrete durations. The attribute is optional. The default value
+ is 100 ms.
+
+ interval: specifies the duration of a silence interval following
+ each generated DTMF tone. A valid value is a time designation
+ (see Section 4.6.7). The MS MAY round the value if it only
+ supports discrete durations. The attribute is optional. The
+ default value is 100 ms.
+
+ The <dtmf> element has no children.
+
+ If a <dtmf> element configuration is not supported, the MS sends a
+ <response> with a 426 status code (Section 4.5).
+
+4.3.1.1.3. <par>
+
+ The <par> element allows media resources to be played in parallel.
+ Each of its child elements specifies a media resource (or a sequence
+ of media resources using the <seq> element). When playback of the
+ <par> element is initiated, the MS begins playback of all its child
+ elements at the same time. This element is modeled after the <par>
+ element in SMIL [W3C.REC-SMIL2-20051213].
+
+ The <par> element has the following attributes:
+
+ endsync: indicates when playback of the element is complete. Valid
+ values are "first" (indicates that the element is complete when
+ any child element reports that it is complete) and "last"
+ (indicates it is complete when every child elements are complete).
+ The attribute is optional. The default value is "last".
+
+ If the value is "first", then playback of other child elements is
+ stopped when one child element reports it is complete.
+
+
+
+McGlashan, et al. Standards Track [Page 43]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The <par> element has the following child elements (at least one, any
+ order, multiple occurrences of each element permitted):
+
+ <seq>: specifies a sequence of media resources to play in parallel
+ with other <par> child elements (see Section 4.3.1.1.3.1). The
+ element is optional.
+
+ <media>: specifies a media resource (see Section 4.3.1.5) to play.
+ The MS is responsible for assigning the appropriate media
+ stream(s) when more than one is available. The element is
+ optional.
+
+ <variable>: specifies a variable media announcement (see
+ Section 4.3.1.1.1) to play. The element is optional.
+
+ <dtmf>: generates one or more DTMF tones (see Section 4.3.1.1.2) to
+ play. The element is optional.
+
+ It is RECOMMENDED that a <par> element contains only one <media>
+ element of the same media type (i.e., same type-name as defined in
+ Section 4.6.10). If a <par> element configuration is not supported,
+ the MS sends a <response> with a 435 status code (Section 4.5).
+
+ Runtime <control>s (Section 4.3.1.2) apply to each child element
+ playing in parallel. For example, pause and resume controls cause
+ all child elements to be paused and resumed, respectively.
+
+ If the <par> element is stopped by the prompt container (e.g.,
+ bargein or dialog termination), then playback of all child elements
+ is stopped. The playback duration (Section 4.3.2.1) reported for the
+ <par> element is the duration of parallel playback, not the
+ cumulative duration of each child element played in parallel.
+
+ For example, a request to playback audio and video media in parallel:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 44]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="c1">
+ <dialog>
+ <prompt>
+ <par>
+ <media type="audio/x-wav"
+ loc="http://www.example.com/media/comments.wav"/>
+ <media type="video/3gpp;codecs='s263'"
+ loc="http://www.example.com/media/camera.3gp"/>
+ </par>
+ </prompt>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ When the <prompt> element is executed, it begins playback of its
+ child element in document-order sequence. In this case, there is
+ only one child element, a <par> element itself containing audio and
+ video <media> child elements. Consequently, playback of both audio
+ and video media resources is initiated at the same time. Since the
+ endsync attribute is not specified, the default value "last" applies.
+ The <par> element playback is complete when the media resource with
+ the longest duration is complete.
+
+4.3.1.1.3.1. <seq>
+
+ The <seq> element specifies media resources to be played back in
+ sequence. This allows a sequence of media resources to be played at
+ the same time as other children of a <par> element are played in
+ parallel, for example, a sequence of audio resources while a video
+ resource is played in parallel. This element is modeled after the
+ <seq> element in SMIL [W3C.REC-SMIL2-20051213].
+
+ The <seq> element has no attributes.
+
+ The <seq> element has the following child elements (at least one, any
+ order, multiple occurrences of each element permitted):
+
+ <media>: specifies a media resource (see Section 4.3.1.5) to play.
+ The element is optional.
+
+ <variable>: specifies a variable media announcement (see
+ Section 4.3.1.1.1) to play. The element is optional.
+
+ <dtmf>: generates one or more DTMF tones (see Section 4.3.1.1.2) to
+ play. The element is optional.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 45]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Playback of a <seq> element is complete when all child elements in
+ the sequence are complete. If the <seq> element is stopped by the
+ <par> container, then playback of the current child element is
+ stopped (remaining child elements in the sequence are not played).
+
+ For example, a request to play a sequence of audio resources in
+ parallel with a video media:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="c1">
+ <dialog>
+ <prompt>
+ <par endsync="first">
+ <seq>
+ <media type="audio/x-wav"
+ loc="http://www.example.com/media/date.wav"/>
+ <media type="audio/x-wav"
+ loc="http://www.example.com/media/intro.wav"/>
+ <media type="audio/x-wav"
+ loc="http://www.example.com/media/main.wav"/>
+ <media type="audio/x-wav"
+ loc="http://www.example.com/media/end.wav"/>
+ </seq>
+ <media type="video/3gpp;codecs='s263'"
+ loc="rtsp://www.example.com/media/camera.3gp"/>
+ </par>
+ </prompt>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ When the <prompt> element is executed, it begins playback of the
+ <par> element containing a <seq> element and a video <media> element.
+ The <seq> element itself contains a sequence of audio <media>
+ elements. Consequently, playback of the video media resource is
+ initiated at the same time as playback of the sequence of the audio
+ media resources is initiated. Each audio resource is played back
+ after the previous one completes. Since the endsync attribute is set
+ to "first", the <par> element playback is complete when either all
+ the audio resources in <seq> have been played to completion or the
+ video <media> is complete, whichever occurs first.
+
+4.3.1.2. <control>
+
+ The <control> element defines how DTMF input is mapped to runtime
+ controls, including prompt playback controls.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 46]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ DTMF input matching these controls MUST NOT cause prompt playback to
+ be interrupted (i.e., no prompt bargein), but causes the appropriate
+ operation to be applied, for example, speeding up prompt playback.
+
+ DTMF input matching these controls has priority over <collect> input
+ for the duration of prompt playback. If an incoming DTMF character
+ matches a specified runtime control, then the DTMF character is
+ consumed: it is not added to the digit buffer and so is not available
+ to the <collect> operation. Once prompt playback is complete,
+ runtime controls are no longer active.
+
+ The <control> element has the following attributes:
+
+ gotostartkey: maps a DTMF key to skip directly to the start of the
+ prompt. A valid value is a DTMF character (see Section 4.6.2).
+ The attribute is optional. There is no default value.
+
+ gotoendkey: maps a DTMF key to skip directly to the end of the
+ prompt. A valid value is a DTMF character (see Section 4.6.2).
+ The attribute is optional. There is no default value.
+
+ skipinterval: indicates how far an MS skips backwards or forwards
+ through prompt playback when the rewind (rwkey) of fast forward
+ key (ffkey) is pressed. A valid value is a Time Designation (see
+ Section 4.6.7). The attribute is optional. The default value is
+ 6s.
+
+ ffkey: maps a DTMF key to a fast forward operation equal to the
+ value of 'skipinterval'. A valid value is a DTMF character (see
+ Section 4.6.2). The attribute is optional. There is no default
+ value.
+
+ rwkey: maps a DTMF key to a rewind operation equal to the value of
+ 'skipinterval'. A valid value is a DTMF character (see
+ Section 4.6.2). The attribute is optional. There is no default
+ value.
+
+ pauseinterval: indicates how long an MS pauses prompt playback when
+ the pausekey is pressed. A valid value is a Time Designation (see
+ Section 4.6.7). The attribute is optional. The default value is
+ 10s.
+
+ pausekey: maps a DTMF key to a pause operation equal to the value of
+ 'pauseinterval'. A valid value is a DTMF character (see
+ Section 4.6.2). The attribute is optional. There is no default
+ value.
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 47]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ resumekey: maps a DTMF key to a resume operation. A valid value is
+ a DTMF character (see Section 4.6.2). The attribute is optional.
+ There is no default value.
+
+ volumeinterval: indicates the increase or decrease in playback
+ volume (relative to the current volume) when the volupkey or
+ voldnkey is pressed. A valid value is a percentage (see
+ Section 4.6.8). The attribute is optional. The default value is
+ 10%.
+
+ volupkey: maps a DTMF key to a volume increase operation equal to
+ the value of 'volumeinterval'. A valid value is a DTMF character
+ (see Section 4.6.2). The attribute is optional. There is no
+ default value.
+
+ voldnkey: maps a DTMF key to a volume decrease operation equal to
+ the value of 'volumeinterval'. A valid value is a DTMF character
+ (see Section 4.6.2). The attribute is optional. There is no
+ default value.
+
+ speedinterval: indicates the increase or decrease in playback speed
+ (relative to the current speed) when the speedupkey or speeddnkey
+ is pressed. A valid value is a percentage (see Section 4.6.8).
+ The attribute is optional. The default value is 10%.
+
+ speedupkey: maps a DTMF key to a speed increase operation equal to
+ the value of the speedinterval attribute. A valid value is a DTMF
+ character (see Section 4.6.2). The attribute is optional. There
+ is no default value.
+
+ speeddnkey: maps a DTMF key to a speed decrease operation equal to
+ the value of the speedinterval attribute. A valid value is a DTMF
+ character (see Section 4.6.2). The attribute is optional. There
+ is no default value.
+
+ external: allows one or more DTMF keys to be declared as external
+ controls (for example, video camera controls); the MS can send
+ notifications when a matching key is activated using <dtmfnotify>
+ (Section 4.2.5.2). A valid value is a DTMF string (see
+ Section 4.6.3). The attribute is optional. There is no default
+ value.
+
+ If the same DTMF is specified in more than one DTMF key control
+ attribute -- except the pausekey and resumekey attributes -- the MS
+ sends a <response> with a 413 status code (Section 4.5).
+
+ The MS has the following execution model for runtime control after
+ initialization:
+
+
+
+McGlashan, et al. Standards Track [Page 48]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 1. If an error occurs during execution, then the MS terminates
+ runtime control and the error is reported to the dialog
+ container. The MS MAY report controls executed successfully
+ before the error in <controlinfo> (see Section 4.3.2.2).
+
+ 2. Runtime controls are active only during prompt playback (if no
+ <prompt> element is specified, then runtime controls are
+ ignored). If DTMF input matches any specified keys (for example,
+ the ffkey), then the MS applies the appropriate operation
+ immediately. If a seek operation (ffkey, rwkey) attempts to go
+ beyond the beginning or end of the prompt queue, then the MS
+ automatically truncates it to the prompt queue beginning or end,
+ respectively. If a volume operation (voldnkey, volupkey)
+ attempts to go beyond the minimum or maximum volume supported by
+ the platform, then the MS automatically limits the operation to
+ minimum or maximum supported volume, respectively. If a speed
+ operation (speeddnkey, speedupkey) attempts to go beyond the
+ minimum or maximum playback speed supported by the platform, then
+ the MS automatically limits the operation to minimum or maximum
+ supported speed, respectively. If the pause operation attempts
+ to pause output when it is already paused, then the operation is
+ ignored. If the resume operation attempts to resume when the
+ prompts are not paused, then the operation is ignored. If a
+ seek, volume, or speed operation is applied when output is
+ paused, then the MS also resumes output automatically.
+
+ 3. If DTMF control subscription has been specified for the dialog,
+ then each DTMF match of a control operation is reported in a
+ <dtmfnotify> notification event (Section 4.2.5.2).
+
+ 4. When the dialog exits, all control matches are reported in a
+ <controlinfo> element (Section 4.3.2.2).
+
+4.3.1.3. <collect>
+
+ The <collect> element defines how DTMF input is collected.
+
+ The <collect> element has the following attributes:
+
+ cleardigitbuffer: indicates whether the digit buffer is to be
+ cleared. A valid value is a boolean (see Section 4.6.1). A value
+ of true indicates that the digit buffer is to be cleared. A value
+ of false indicates that the digit buffer is not to be cleared.
+ The attribute is optional. The default value is true.
+
+ timeout: indicates the maximum time to wait for user input to begin.
+ A valid value is a Time Designation (see Section 4.6.7). The
+ attribute is optional. The default value is 5s.
+
+
+
+McGlashan, et al. Standards Track [Page 49]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ interdigittimeout: indicates the maximum time to wait for another
+ DTMF when the collected input is incomplete with respect to the
+ grammar. A valid value is a Time Designation (see Section 4.6.7).
+ The attribute is optional. The default value is 2s.
+
+ termtimeout: indicates the maximum time to wait for the termchar
+ character when the collected input is complete with respect to the
+ grammar. A valid value is a Time Designation (see Section 4.6.7).
+ The attribute is optional. The default value is 0s (no delay).
+
+ escapekey: specifies a DTMF key that indicates collected grammar
+ matches are discarded and the DTMF collection is to be re-
+ initiated. A valid value is a DTMF character (see Section 4.6.2).
+ The attribute is optional. There is no default value.
+
+ termchar: specifies a DTMF character for terminating DTMF input
+ collection using the internal grammar. It is ignored when a
+ custom grammar is specified. A valid value is a DTMF character
+ (see Section 4.6.2). To disable termination by a conventional
+ DTMF character, set the parameter to an unconventional character
+ like 'A'. The attribute is optional. The default value is '#'.
+
+ maxdigits: The maximum number of digits to collect using an internal
+ digits (0-9 only) grammar. It is ignored when a custom grammar is
+ specified. A valid value is a positive integer (see
+ Section 4.6.5). The attribute is optional. The default value is
+ 5.
+
+ The following matching priority is defined for incoming DTMF:
+ termchar attribute, escapekey attribute, and then as part of a
+ grammar. For example, if "1" is defined as the escapekey attribute
+ and as part of a grammar, then its interpretation as an escapekey
+ takes priority.
+
+ The <collect> element has the following child element:
+
+ <grammar>: indicates a custom grammar format (see
+ Section 4.3.1.3.1). The element is optional.
+
+ The custom grammar takes priority over the internal grammar. If a
+ <grammar> element is specified, the MS MUST use it for DTMF
+ collection.
+
+ The MS has the following execution model for DTMF collection after
+ initialization:
+
+ 1. The DTMF collection buffer MUST NOT receive DTMF input matching
+ <control> operations (see Section 4.3.1.2).
+
+
+
+McGlashan, et al. Standards Track [Page 50]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 2. If an error occurs during execution, then the MS terminates
+ collection and reports the error to the dialog container (see
+ Section 4.3). The MS MAY report DTMF collected before the error
+ in <collectinfo> (see Section 4.3.2.3).
+
+ 3. The MS clears the digit buffer if the value of the
+ cleardigitbuffer attribute is true.
+
+ 4. The MS activates an initial timer with the duration of the value
+ of the timeout attribute. If the initial timer expires before
+ any DTMF input is received, then collection execution terminates,
+ the <collectinfo> (see Section 4.3.2.3) has the termmode
+ attribute set to noinput and the execution status is reported to
+ the dialog container.
+
+ 5. When the first DTMF collect input is received, the initial timer
+ is canceled and DTMF collection begins. Each DTMF input is
+ collected unless it matches the value of the escapekey attribute
+ or the termchar attribute when the internal grammar is used.
+ Collected input is matched against the grammar to determine if it
+ is valid and, if valid, whether collection is complete. Valid
+ DTMF patterns are either a simple digit string where the maximum
+ length is determined by the maxdigits attribute and that can be
+ optionally terminated by the character in the termchar attribute,
+ or a custom DTMF grammar specified with the <grammar> element.
+
+ 6. After escapekey input, or a valid input that does not complete
+ the grammar, the MS activates a timer for the value of the
+ interdigittimeout attribute or the termtimeout attribute. The MS
+ only uses the termtimeout value when the grammar does not allow
+ any additional input; otherwise, the MS uses the
+ interdigittimeout.
+
+ 7. If DTMF collect input matches the value of the escapekey
+ attribute, then the MS re-initializes DTMF collection: i.e., the
+ MS discards collected DTMFs already matched against the grammar,
+ and the MS attempts to match incoming DTMF (including any pending
+ in the digit buffer) as described in Step 5 above.
+
+ 8. If the collect input is not valid with respect to the grammar or
+ an interdigittimeout timer expires, the MS terminates collection
+ execution and reports execution status to the dialog container
+ with a <collectinfo> (see Section 4.3.2.3) where the termmode
+ attribute is set to nomatch.
+
+ 9. If the collect input completes the grammar or if a termtimeout
+ timer expires, then the MS terminates collection execution and
+ reports execution status to the dialog container with
+
+
+
+McGlashan, et al. Standards Track [Page 51]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <collectinfo> (see Section 4.3.2.3) where the termmode attribute
+ is set to match.
+
+4.3.1.3.1. <grammar>
+
+ The <grammar> element allows a custom grammar, inline or external, to
+ be specified. Custom grammars permit the full range of DTMF
+ characters including '*' and '#' to be specified for DTMF pattern
+ matching.
+
+ The <grammar> element has the following attributes:
+
+ src: specifies the location of an external grammar document. A
+ valid value is a URI (see Section 4.6.9). The MS MUST support
+ both HTTP [RFC2616] and HTTPS [RFC2818] schemes and the MS MAY
+ support other schemes. If the URI scheme is unsupported, the MS
+ sends a <response> with a 420 status code (Section 4.5). If the
+ resource cannot be retrieved within the timeout interval, the MS
+ sends a <response> with a 409 status code. If the grammar format
+ is not supported, the MS sends a <response> with a 424 status
+ code. The attribute is optional. There is no default value.
+
+ type: identifies the preferred type of the grammar document
+ identified by the src attribute. A valid value is a MIME media
+ type (see Section 4.6.10). If the URI scheme used in the src
+ attribute defines a mechanism for establishing the authoritative
+ MIME media type of the media resource, the value returned by that
+ mechanism takes precedence over this attribute. The attribute is
+ optional. There is no default value.
+
+ fetchtimeout: the maximum interval to wait when fetching a grammar
+ resource. A valid value is a Time Designation (see
+ Section 4.6.7). The attribute is optional. The default value is
+ 30s.
+
+ The <grammar> element allows inline grammars to be specified. XML
+ grammar formats MUST use a namespace other than the one used in this
+ specification. Non-XML grammar formats MAY use a CDATA section.
+
+ The MS MUST support the Speech Recognition Grammar Specification
+ [SRGS] XML grammar format ("application/srgs+xml") and MS MAY support
+ the Key Press Markup Language (KPML) [RFC4730] or other grammar
+ formats. If the grammar format is not supported by the MS, then the
+ MS sends a <response> with a 424 status code (Section 4.5).
+
+ For example, the following fragment shows DTMF collection with an
+ inline SRGS grammar:
+
+
+
+
+McGlashan, et al. Standards Track [Page 52]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <collect cleardigitbuffer="false" timeout="20s"
+ interdigittimeout="1s">
+ <grammar>
+ <grammar xmlns="http://www.w3.org/2001/06/grammar"
+ version="1.0" mode="dtmf">
+ <rule id="digit">
+ <one-of>
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ </one-of>
+ </rule>
+
+ <rule id="pin" scope="public">
+ <one-of>
+ <item>
+ <item repeat="4">
+ <ruleref uri="#digit"/>
+ </item>#</item>
+ <item>* 9</item>
+ </one-of>
+ </rule>
+
+ </grammar>
+ </grammar>
+ </collect>
+
+ The same grammar could also be referenced externally (and take
+ advantage of HTTP caching):
+
+ <collect cleardigitbuffer="false" timeout="20s">
+ <grammar type="application/srgs+xml"
+ src="http://example.org/pin.grxml"/>
+ </collect>
+
+4.3.1.4. <record>
+
+ The <record> element specifies how media input is recorded.
+
+ The <record> element has the following attributes:
+
+
+
+
+McGlashan, et al. Standards Track [Page 53]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ timeout: indicates the time to wait for user input to begin. A
+ valid value is a Time Designation (see Section 4.6.7). The
+ attribute is optional. The default value is 5s.
+
+ vadinitial: controls whether Voice Activity Detection (VAD) is used
+ to initiate the recording operation. A valid value is a boolean
+ (see Section 4.6.1). A value of true indicates the MS MUST
+ initiate recording if the VAD detects voice on the configured
+ inbound audio streams. A value of false indicates that the MS
+ MUST NOT initiate recording using VAD. The attribute is optional.
+ The default value is false.
+
+ vadfinal: controls whether VAD is used to terminate the recording
+ operation. A valid value is a boolean (see Section 4.6.1). A
+ value of true indicates the MS MUST terminate recording if the VAD
+ detects a period of silence (whose duration is specified by the
+ finalsilence attribute) on configured inbound audio streams. A
+ value of false indicates that the MS MUST NOT terminate recording
+ using VAD. The attribute is optional. The default value is
+ false.
+
+ dtmfterm: indicates whether the recording operation is terminated by
+ DTMF input. A valid value is a boolean (see Section 4.6.1). A
+ value of true indicates that recording is terminated by DTMF
+ input. A value of false indicates that recording is not
+ terminated by DTMF input. The attribute is optional. The default
+ value is true.
+
+ maxtime: indicates the maximum duration of the recording. A valid
+ value is a Time Designation (see Section 4.6.7). The attribute is
+ optional. The default value is 15s.
+
+ beep: indicates whether a 'beep' is to be played immediately prior
+ to initiation of the recording operation. A valid value is a
+ boolean (see Section 4.6.1). The attribute is optional. The
+ default value is false.
+
+ finalsilence: indicates the interval of silence that indicates the
+ end of voice input. This interval is not part of the recording
+ itself. This parameter is ignored if the vadfinal attribute has
+ the value false. A valid value is a Time Designation (see
+ Section 4.6.7). The attribute is optional. The default value is
+ 5s.
+
+ append: indicates whether recorded data is appended or not to a
+ recording location if a resource already exists. A valid value is
+ a boolean (see Section 4.6.1). A value of true indicates that
+ recorded data is appended to the existing resource at a recording
+
+
+
+McGlashan, et al. Standards Track [Page 54]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ location. A value of false indicates that recorded data is to
+ overwrite the existing resource. The attribute is optional. The
+ default value is false.
+
+ When a recording location is specified using the HTTP or HTTPS
+ protocol, the recording operation SHOULD be performed using the
+ HTTP GET and PUT methods, unless the HTTP server provides a
+ special interface for recording uploads and appends (e.g., using
+ POST). When the append attribute has the value false, the
+ recording data is uploaded to the specified location using HTTP
+ PUT and replaces any data at that location on the HTTP origin
+ server. When append has the value true, the existing data (if
+ any) is first downloaded from the specified location using HTTP
+ GET, then the recording data is appended to the existing recording
+ (note that this might require codec conversion and modification to
+ the existing data), then the combined recording is uploaded to the
+ specified location using HTTP PUT. HTTP errors are handled as
+ described in [RFC2616].
+
+ When the recording location is specified using protocols other
+ than HTTP or HTTPS, the mapping of the append operation onto the
+ upload protocol scheme is implementation specific.
+
+ If either the vadinitial or vadfinal attribute is set to true and the
+ MS does not support VAD, the MS sends a <response> with a 434 status
+ code (Section 4.5).
+
+ The <record> element has the following child element (0 or more
+ occurrences):
+
+ <media>: specifies the location and type of the media resource for
+ uploading recorded data (see Section 4.3.1.5). The MS MUST
+ support both HTTP [RFC2616] and HTTPS [RFC2818] schemes for
+ uploading recorded data and the MS MAY support other schemes. The
+ MS uploads recorded data to this resource as soon as possible
+ after recording is complete. The element is optional.
+
+ If multiple <media> elements are specified, then media input is to be
+ recorded in parallel to multiple resource locations.
+
+ If no <media> child element is specified, the MS MUST record media
+ input but the recording location and the recording format are
+ implementation specific (e.g., the MS records audio in the WAV format
+ to a local disk accessible by HTTP). The recording location and
+ format are reported in <recordinfo> (Section 4.3.2.4) when the dialog
+ terminates. The recording MUST be available from this location until
+ the connection or conference associated with the dialog on the MS
+ terminates.
+
+
+
+McGlashan, et al. Standards Track [Page 55]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ If the MS does not support the configuration required for recording
+ from the input media streams to one or more <media> elements and a
+ more specific error code is not defined for its child elements, the
+ MS sends a <response> with a 423 status code (Section 4.5).
+
+ Note that an MS MAY support uploading recorded data to recording
+ locations at the same time the recording operation takes place. Such
+ implementations need to be aware of the requirements of certain
+ recording formats (e.g., WAV) for metadata at the beginning of the
+ uploaded file, that the finalsilence interval is not part of the
+ recording and how these requirements interact with the URI scheme.
+
+ The MS has the following execution model for recording after
+ initialization:
+
+ 1. If an error occurs during execution (e.g., authentication or
+ communication error when trying to upload to a recording
+ location), then the MS terminates record execution and reports
+ the error to the dialog container (see Section 4.3). The MS MAY
+ report data recorded before the error in <recordinfo> (see
+ Section 4.3.2.4).
+
+ 2. If DTMF input (not matching a <control> operation) is received
+ during prompt playback and the prompt bargein attribute is set to
+ true, then the MS activates the record execution. Otherwise, the
+ MS activates it after the completion of prompt playback.
+
+ 3. If a beep attribute with the value of true is specified, then the
+ MS plays a beep tone.
+
+ 4. The MS activates a timer with the duration of the value of the
+ timeout attribute. If the timer expires before the recording
+ operation begins, then the MS terminates the recording execution
+ and reports the status to dialog container with <recordinfo> (see
+ Section 4.3.2.4) where the termmode attribute is set to noinput.
+
+ 5. Initiation of the recording operation depends on the value of the
+ vadinitial attribute. If vadinitial has the value false, then
+ the recording operation is initiated immediately. Otherwise, the
+ recording operation is initiated when voice activity is detected.
+
+ 6. When the recording operation is initiated, a timer is started for
+ the value of the maxtime attribute (maximum duration of the
+ recording). If the timer expires before the recording operation
+ is complete, then the MS terminates recording execution and
+ reports the execution status to the dialog container with
+ <recordinfo> (see Section 4.3.2.4) where the termmode attribute
+ set to maxtime.
+
+
+
+McGlashan, et al. Standards Track [Page 56]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ 7. During the record operation input, media streams are recording to
+ a location and format specified in one or more <media> child
+ elements. If no <media> child element is specified, the MS
+ records input to an implementation-specific location and format.
+
+ 8. If the dtmfterm attribute has the value true and DTMF input is
+ detected during the record operation, then the MS terminates
+ recording and its status is reported to the dialog container with
+ a <recordinfo> (see Section 4.3.2.4) where the termmode attribute
+ is set to dtmf.
+
+ 9. If vadfinal attribute has the value true, then the MS terminates
+ the recording operation when a period of silence, with the
+ duration specified by the value of the finalsilence attribute, is
+ detected. This period of silence is not part of the final
+ recording. The status is reported to the dialog container with a
+ <recordinfo> (see Section 4.3.2.4) where the termmode attribute
+ is set to finalsilence.
+
+ For example, a request to record audio and video input to separate
+ locations:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="c1">
+ <dialog>
+ <record maxtime="30s" vadinitial="false" vadfinal="false">
+ <media type="audio/x-wav"
+ loc="http://www.example.com/upload/audio.wav"/>
+ <media type="video/3gpp;codecs='s263'"
+ loc="http://www.example.com/upload/video.3gp"/>
+ </record>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ When the <record> element is executed, it immediately begins
+ recording of the audio and video (since vadinitial is false) where
+ the destination locations are specified in the <media> child
+ elements. Recording is completed when the duration reaches 30s or
+ the connection is terminated.
+
+4.3.1.5. <media>
+
+ The <media> element specifies a media resource to playback from (see
+ Section 4.3.1.1) or record to (see Section 4.3.1.4). In the playback
+ case, the resource is retrieved and in the recording case, recording
+ data is uploaded to the resource location.
+
+
+
+
+McGlashan, et al. Standards Track [Page 57]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ A <media> element has the following attributes:
+
+ loc: specifies the location of the media resource. A valid value is
+ a URI (see Section 4.6.9). The MS MUST support both HTTP
+ [RFC2616] and HTTPS [RFC2818] schemes and the MS MAY support other
+ schemes. If the URI scheme is not supported by the MS, the MS
+ sends a <response> with a 420 status code (Section 4.5). If the
+ resource is to be retrieved but the MS cannot retrieve it within
+ the timeout interval, the MS sends a <response> with a 409 status
+ code. If the format of the media resource is not supported, the
+ MS sends a <response> with a 429 status code. The attribute is
+ mandatory.
+
+ type: specifies the type of the media resource indicated in the loc
+ attribute. A valid value is a MIME media type (see
+ Section 4.6.10) that, depending on its definition, can include
+ additional parameters (e.g., [RFC4281]). If the URI scheme used
+ in the loc attribute defines a mechanism for establishing the
+ authoratitive MIME media type of the media resource, the value
+ returned by that mechanism takes precedence over this attribute.
+ If additional media parameters are specified, the MS MUST use them
+ to determine media processing. For example, [RFC4281] defines a
+ 'codec' parameter for media types like video/3gpp that would
+ determine which media streams are played or recorded. The
+ attribute is optional. There is no default value.
+
+ fetchtimeout: the maximum interval to wait when fetching a media
+ resource. A valid value is a Time Designation (see
+ Section 4.6.7). The attribute is optional. The default value is
+ 30s.
+
+ soundLevel: playback soundLevel (volume) for the media resource. A
+ valid value is a percentage (see Section 4.6.8). The value
+ indicates increase or decrease relative to the original recorded
+ volume of the media. A value of 100% (the default) plays the
+ media at its recorded volume, a value of 200% will play the media
+ twice recorded volume, 50% at half its recorded volume, a value of
+ 0% will play the media silently, and so on. See 'soundLevel' in
+ SMIL [W3C.REC-SMIL2-20051213] for further information. The
+ attribute is optional. The default value is 100%.
+
+ clipBegin: offset from start of media resource to begin playback. A
+ valid value is a Time Designation (see Section 4.6.7). The offset
+ is measured in normal media playback time from the beginning of
+ the media resource. If the clipBegin offset is after the end of
+ media (or the clipEnd offset), no media is played. See
+ 'clipBegin' in SMIL [W3C.REC-SMIL2-20051213] for further
+ information. The attribute is optional. The default value is 0s.
+
+
+
+McGlashan, et al. Standards Track [Page 58]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ clipEnd: offset from start of media resource to end playback. A
+ valid value is a Time Designation (see Section 4.6.7). The offset
+ is measured in normal media playback time from the beginning of
+ the media resource. If the clipEnd offset is after the end of
+ media, then the media is played to the end. If clipBegin is after
+ clipEnd, then no media is played. See 'clipEnd' in SMIL
+ [W3C.REC-SMIL2-20051213] for further information. The attribute
+ is optional. There is no default value.
+
+ The fetchtimeout, soundLevel, clipBegin, and clipEnd attributes are
+ only relevant in the playback use case. The MS ignores these
+ attributes when using the <media> for recording.
+
+ The <media> element has no children.
+
+4.3.2. Exit Information
+
+ When the dialog exits, information about the specified operations is
+ reported in a <dialogexit> notification event (Section 4.2.5.1).
+
+4.3.2.1. <promptinfo>
+
+ The <promptinfo> element reports the information about prompt
+ execution. It has the following attributes:
+
+ duration: indicates the duration of prompt playback in milliseconds.
+ A valid value is a non-negative integer (see Section 4.6.4). The
+ attribute is optional. There is no default value.
+
+ termmode: indicates how playback was terminated. Valid values are
+ 'stopped', 'completed', or 'bargein'. The attribute is mandatory.
+
+ The <promptinfo> element has no child elements.
+
+4.3.2.2. <controlinfo>
+
+ The <controlinfo> element reports information about control
+ execution.
+
+ The <controlinfo> element has no attributes and has 0 or more
+ <controlmatch> child elements each describing an individual runtime
+ control match.
+
+4.3.2.2.1. <controlmatch>
+
+ The <controlmatch> element has the following attributes:
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 59]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ dtmf: DTMF input triggering the runtime control. A valid value is a
+ DTMF string (see Section 4.6.3) with no space between characters.
+ The attribute is mandatory.
+
+ timestamp: indicates the time (on the MS) at which the control was
+ triggered. A valid value is a dateTime expression
+ (Section 4.6.12). The attribute is mandatory.
+
+ The <controlmatch> element has no child elements.
+
+4.3.2.3. <collectinfo>
+
+ The <collectinfo> element reports the information about collect
+ execution.
+
+ The <collectinfo> element has the following attributes:
+
+ dtmf: DTMF input collected from the user. A valid value is a DTMF
+ string (see Section 4.6.3) with no space between characters. The
+ attribute is optional. There is no default value.
+
+ termmode: indicates how collection was terminated. Valid values are
+ 'stopped', 'match', 'noinput', or 'nomatch'. The attribute is
+ mandatory.
+
+ The <collectinfo> element has no child elements.
+
+4.3.2.4. <recordinfo>
+
+ The <recordinfo> element reports information about record execution
+ (Section 4.3.1.4).
+
+ The <recordinfo> element has the following attributes:
+
+ termmode: indicates how recording was terminated. Valid values are
+ 'stopped', 'noinput', 'dtmf', 'maxtime', and 'finalsilence'. The
+ attribute is mandatory.
+
+ duration: indicates the duration of the recording in milliseconds.
+ A valid value is a non-negative integer (see Section 4.6.4). The
+ attribute is optional. There is no default value.
+
+ The <recordinfo> element has the following child element (0 or more
+ occurrences):
+
+ <mediainfo>: indicates information about a recorded media resource
+ (see Section 4.3.2.4.1). The element is optional.
+
+
+
+
+McGlashan, et al. Standards Track [Page 60]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ When the record operation is successful, the MS MUST specify a
+ <mediainfo> element for each recording location. For example, if the
+ <record> element contained three <media> child elements, then the
+ <recordinfo> would contain three <mediainfo> child elements.
+
+4.3.2.4.1. <mediainfo>
+
+ The <mediainfo> element reports information about a recorded media
+ resource.
+
+ The <mediainfo> element has the following attributes:
+
+ loc: indicates the location of the media resource. A valid value is
+ a URI (see Section 4.6.9). The attribute is mandatory.
+
+ type: indicates the format of the media resource. A valid value is
+ a MIME media type (see Section 4.6.10). The attribute is
+ mandatory.
+
+ size: indicates the size of the media resource in bytes. A valid
+ value is a non-negative integer (see Section 4.6.4). The
+ attribute is optional. There is no default value.
+
+4.4. Audit Elements
+
+ The audit elements defined in this section allow the MS to be audited
+ for package capabilities as well as dialogs managed by the package.
+ Auditing is particularly important for two use cases. First, it
+ enables discovery of package capabilities supported on an MS before
+ an AS starts a dialog on connection or conference. The AS can then
+ use this information to create request elements using supported
+ capabilities and, in the case of codecs, to negotiate an appropriate
+ SDP for a User Agent's connection. Second, auditing enables
+ discovery of the existence and status of dialogs currently managed by
+ the package on the MS. This could be used when one AS takes over
+ management of the dialogs if the AS that initiated the dialogs fails
+ or is no longer available (see Security Considerations described in
+ Section 7).
+
+4.4.1. <audit>
+
+ The <audit> request element is sent to the MS to request information
+ about the capabilities of, and dialogs currently managed with, this
+ Control Package. Capabilities include supported dialog languages,
+ grammar formats, record and media types, as well as codecs. Dialog
+ information includes the status of managed dialogs as well as codecs.
+
+ The <audit> element has the following attributes:
+
+
+
+McGlashan, et al. Standards Track [Page 61]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ capabilities: indicates whether package capabilities are to be
+ audited. A valid value is a boolean (see Section 4.6.1). A value
+ of true indicates that capability information is to be reported.
+ A value of false indicates that capability information is not to
+ be reported. The attribute is optional. The default value is
+ true.
+
+ dialogs: indicates whether dialogs currently managed by the package
+ are to be audited. A valid value is a boolean (see
+ Section 4.6.1). A value of true indicates that dialog information
+ is to be reported. A value of false indicates that dialog
+ information is not to be reported. The attribute is optional.
+ The default value is true.
+
+ dialogid: string identifying a specific dialog to audit. The MS
+ sends a response with a 406 status code (Section 4.5) if the
+ specified dialog identifier is invalid. The attribute is
+ optional. There is no default value.
+
+ If the dialogs attribute has the value true and dialogid attribute is
+ specified, then only audit information about the specified dialog is
+ reported. If the dialogs attribute has the value false, then no
+ dialog audit information is reported even if a dialogid attribute is
+ specified.
+
+ The <audit> element has no child elements.
+
+ When the MS receives an <audit> request, it MUST reply with an
+ <auditresponse> element (Section 4.4.2), which includes a mandatory
+ attribute describing the status in terms of a numeric code. Response
+ status codes are defined in Section 4.5. If the request is
+ successful, the <auditresponse> contains (depending on attribute
+ values) a <capabilities> element (Section 4.4.2.2) reporting package
+ capabilities and a <dialogs> element (Section 4.4.2.3) reporting
+ managed dialog information. If the MS is not able to process the
+ request and carry out the audit operation, the audit request has
+ failed and the MS MUST indicate the class of failure using an
+ appropriate 4xx response code. Unless an error response code is
+ specified for a class of error within this section, implementations
+ follow Section 4.5 in determining the appropriate status code for the
+ response.
+
+ For example, a request to audit capabilities and dialogs managed by
+ the package:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <audit/>
+ </mscivr>
+
+
+
+McGlashan, et al. Standards Track [Page 62]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ In this example, only capabilities are to be audited:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <audit dialogs="false"/>
+ </mscivr>
+
+ With this example, only a specific dialog is to be audited:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <audit capabilities="false" dialogid="d4"/>
+ </mscivr>
+
+4.4.2. <auditresponse>
+
+ The <auditresponse> element describes a response to an <audit>
+ request.
+
+ The <auditresponse> element has the following attributes:
+
+ status: numeric code indicating the audit response status. The
+ attribute is mandatory. Valid values are defined in Section 4.5.
+
+ reason: string specifying a reason for the status. The attribute is
+ optional.
+
+ desclang: specifies the language used in the value of the reason
+ attribute. A valid value is a language identifier
+ (Section 4.6.11). The attribute is optional. If not specified,
+ the value of the desclang attribute on <mscivr> (Section 4.1)
+ applies.
+
+ The <auditresponse> element has the following sequence of child
+ elements:
+
+ <capabilities> element (Section 4.4.2.2) describing capabilities of
+ the package. The element is optional.
+
+ <dialogs> element (Section 4.4.2.3) describing information about
+ managed dialogs. The element is optional.
+
+ For example, a successful response to an <audit> request requesting
+ capabilities and dialogs information:
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 63]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <auditresponse status="200">
+ <capabilities>
+ <dialoglanguages>
+ <mimetype>application/voicexml+xml</mimetype>
+ </dialoglanguages>
+ <grammartypes/>
+ <recordtypes>
+ <mimetype>audio/x-wav</mimetype>
+ <mimetype>video/3gpp</mimetype>
+ </recordtypes>
+ <prompttypes>
+ <mimetype>audio/x-wav</mimetype>
+ <mimetype>video/3gpp</mimetype>
+ </prompttypes>
+ <variables>
+ <variabletype type="date" desc="value formatted as YYYYMMDD">
+ <format desc="month year day">mdy</format>
+ <format desc="year month day">ymd</format>
+ <format desc="day month year">dmy</format>
+ <format desc="day month">dm</format>
+ </variabletype>
+ </variables>
+ <maxpreparedduration>600s</maxpreparedduration>
+ <maxrecordduration>1800s</maxrecordduration>
+ <codecs>
+ <codec name="video">
+ <subtype>H263</subtype>
+ </codec>
+ <codec name="video">
+ <subtype>H264</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>PCMU</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>PCMA</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>telephone-event</subtype>
+ </codec>
+ </codecs>
+ </capabilities>
+ <dialogs>
+ <dialogaudit dialogid="4532" state="preparing"/>
+ <dialogaudit dialogid="4599" state="prepared"/>
+ <dialogaudit dialogid="1234" state="started" conferenceid="conf1">
+ <codecs>
+
+
+
+McGlashan, et al. Standards Track [Page 64]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <codec name="audio">
+ <subtype>PCMA</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>telephone-event</subtype>
+ </codec>
+ </codecs>
+ </dialogaudit>
+ </dialogs>
+ </auditresponse>
+ </mscivr>
+
+4.4.2.1. <codecs>
+
+ The <codecs> provides audit information about codecs.
+
+ The <codecs> element has no attributes.
+
+ The <codecs> element has the following sequence of child elements (0
+ or more occurrences):
+
+ <codec>: audit information for a codec (Section 4.4.2.1.1). The
+ element is optional.
+
+ For example, a fragment describing two codecs:
+
+ <codecs>
+ <codec name="audio">
+ <subtype>PCMA</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>telephone-event</subtype>
+ </codec>
+ </codecs>
+
+4.4.2.1.1. <codec>
+
+ The <codec> element describes a codec on the MS. The element is
+ modeled on the <codec> element in the XCON conference information
+ data model [XCON-DATA-MODEL] but allows addition information (e.g.,
+ rate, speed, etc.) to be specified.
+
+ The <codec> element has the following attributes:
+
+ name: indicates the type name of the codec's media format as defined
+ in [IANA]. A valid value is a "type-name" as defined in Section
+ 4.2 of [RFC4288]. The attribute is mandatory.
+
+
+
+
+McGlashan, et al. Standards Track [Page 65]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The <codec> element has the following sequence of child elements:
+
+ <subtype>: element whose content model describes the subtype of the
+ codec's media format as defined in [IANA]. A valid value is a
+ "subtype-name" as defined in Section 4.2 of [RFC4288]. The
+ element is mandatory.
+
+ <params>: element (Section 4.2.6) describing additional information
+ about the codec. This package is agnostic to the names and values
+ of the codec parameters supported by an implementation. The
+ element is optional.
+
+ For example, a fragment with a <codec> element describing the H263
+ video codec:
+
+ <codec name="video">
+ <subtype>H263</subtype>
+ </codec>
+
+4.4.2.2. <capabilities>
+
+ The <capabilities> element provides audit information about package
+ capabilities.
+
+ The <capabilities> element has no attributes.
+
+ The <capabilities> element has the following sequence of child
+ elements:
+
+ <dialoglanguages>: element (Section 4.4.2.2.1) describing additional
+ dialog languages supported by the MS. The element is mandatory.
+
+ <grammartypes>: element (Section 4.4.2.2.2) describing supported
+ <grammar> (Section 4.3.1.3.1) format types. The element is
+ mandatory.
+
+ <recordtypes>: element (Section 4.4.2.2.3) describing <media>
+ (Section 4.3.1.5) format types supported for <record>
+ (Section 4.3.1.4). The element is mandatory.
+
+ <prompttypes>: element (Section 4.4.2.2.4) describing supported
+ <media> (Section 4.3.1.5) format types for playback within a
+ <prompt> (Section 4.3.1.1). The element is mandatory.
+
+ <variables>: element (Section 4.4.2.2.5) describing supported types
+ and formats for the <variable> element (Section 4.3.1.1.1). The
+ element is mandatory.
+
+
+
+
+McGlashan, et al. Standards Track [Page 66]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <maxpreparedduration>: element (Section 4.4.2.2.6) describing the
+ supported maximum duration for a prepared dialog following a
+ <dialogprepare> (Section 4.2.1) request. The element is
+ mandatory.
+
+ <maxrecordduration>: element (Section 4.4.2.2.7) describing the
+ supported maximum duration for a recording <record>
+ (Section 4.3.1.4) request. The element is mandatory.
+
+ <codecs>: element (Section 4.4.2.1) describing codecs available to
+ the package. The element is mandatory.
+
+ For example, a fragment describing capabilities:
+
+ <capabilities>
+ <dialoglanguages>
+ <mimetype>application/voicexml+xml</mimetype>
+ </dialoglanguages>
+ <grammartypes/>
+ <recordtypes>
+ <mimetype>audio/x-wav</mimetype>
+ <mimetype>video/3gpp</mimetype>
+ </recordtypes>
+ <prompttypes>
+ <mimetype>audio/x-wav</mimetype>
+ <mimetype>video/3gpp</mimetype>
+ </prompttypes>
+ <variables/>
+ <maxpreparedduration>30s</maxpreparedduration>
+ <maxrecordduration>60s</maxrecordduration>
+ <codecs>
+ <codec name="video">
+ <subtype>H263</subtype>
+ </codec>
+ <codec name="video">
+ <subtype>H264</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>PCMU</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>PCMA</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>telephone-event</subtype>
+ </codec>
+ </codecs>
+ </capabilities>
+
+
+
+McGlashan, et al. Standards Track [Page 67]
+
+RFC 6231 IVR Control Package May 2011
+
+
+4.4.2.2.1. <dialoglanguages>
+
+ The <dialoglanguages> element provides information about additional
+ dialog languages supported by the package. Dialog languages are
+ identified by their associated MIME media types. The MS MUST NOT
+ include the mandatory dialog language for this package (Section 4.3).
+
+ The <dialoglanguages> element has no attributes.
+
+ The <dialoglanguages> element has the following sequence of child
+ elements (0 or more occurrences):
+
+ <mimetype>: element whose content model describes a MIME media type
+ (Section 4.6.10) associated with a supported dialog language. The
+ element is optional.
+
+4.4.2.2.2. <grammartypes>
+
+ The <grammartypes> element provides information about <grammar>
+ format types supported by the package. The MS MUST NOT include the
+ mandatory SRGS format type, "application/srgs+xml"
+ (Section 4.3.1.3.1).
+
+ The <grammartypes> element has no attributes.
+
+ The <grammartypes> element has the following sequence of child
+ elements (0 or more occurrences):
+
+ <mimetype>: element whose content model describes a mime type
+ (Section 4.6.10). The element is optional.
+
+4.4.2.2.3. <recordtypes>
+
+ The <recordtypes> element provides information about media resource
+ format types of <record> supported by the package (Section 4.3.1.4).
+
+ The <recordtypes> element has no attributes.
+
+ The <recordtypes> element has the following sequence of child
+ elements (0 or more occurrences):
+
+ <mimetype>: element whose content model describes a mime type
+ (Section 4.6.10). The element is optional.
+
+4.4.2.2.4. <prompttypes>
+
+ The <prompttypes> element provides information about media resource
+ format types of <prompt> supported by the package (Section 4.3.1.1).
+
+
+
+McGlashan, et al. Standards Track [Page 68]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The <prompttypes> element has no attributes.
+
+ The <prompttypes> element has the following sequence of child
+ elements (0 or more occurrences):
+
+ <mimetype>: element whose content model describes a mime type
+ (Section 4.6.10). The element is optional.
+
+4.4.2.2.5. <variables>
+
+ The <variables> element provides information about types and formats
+ for the <variable> element (Section 4.3.1.1.1) supported by the
+ package.
+
+ The <variables> element has no attributes.
+
+ The <variables> element has the following sequence of child elements
+ (0 or more occurrences):
+
+ <variabletype>: element describing the formats support for a given
+ type (Section 4.4.2.2.5.1). The element is optional.
+
+ For example, a fragment describing support for <variable> with a
+ "date" type according to the formats specified in
+ Section 4.3.1.1.1.1.
+
+ <variables>
+ <variabletype type="date" desc="value formatted as YYYYMMDD">
+ <format desc="month year day">mdy</format>
+ <format desc="year month day">ymd</format>
+ <format desc="day month year">dmy</format>
+ <format desc="day month">dm</format>
+ </variabletype>
+ </variables>
+
+4.4.2.2.5.1. <variabletype>
+
+ The <variabletype> element describes the formats supported for
+ <variable> supported type.
+
+ The <variabletype> element has the following attributes:
+
+ type: indicates a supported value associated with the type attribute
+ of the <variable> element. The attribute is mandatory.
+
+ desc: a string providing some textual description of the type and
+ format. The attribute is optional.
+
+
+
+
+McGlashan, et al. Standards Track [Page 69]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ desclang: specifies the language used in the value of the desc
+ attribute. A valid value is a language identifier
+ (Section 4.6.11). The attribute is optional. If not specified,
+ the value of the desclang attribute on <mscivr> (Section 4.1)
+ applies.
+
+ The <variabletype> element has the following sequence of child
+ elements (0 or more occurrences):
+
+ <format>: element with a desc attribute (optional description),
+ desclang (optional language identifier for the description), and a
+ content model describing a supported format in the <variable>
+ format attribute. The element is optional.
+
+4.4.2.2.6. <maxpreparedduration>
+
+ The <maxpreparedduration> element describes the maximum duration for
+ a dialog to remain in the prepared state (Section 4.2) following a
+ <dialogprepare> (Section 4.2.1) request.
+
+ The <maxpreparedduration> element has no attributes.
+
+ The <maxpreparedduration> element has a content model describing the
+ maximum prepared dialog duration as a time designation
+ (Section 4.6.7).
+
+4.4.2.2.7. <maxrecordduration>
+
+ The <maxrecordduration> element describes the maximum recording
+ duration for <record> Section 4.3.1.4) request supported by the MS.
+
+ The <maxrecordduration> element has no attributes.
+
+ The <maxrecordduration> element has a content model describing the
+ maximum duration of recording as a time designation (Section 4.6.7).
+
+4.4.2.3. <dialogs>
+
+ The <dialogs> element provides audit information about dialogs.
+
+ The <dialogs> element has no attributes.
+
+ The <dialogs> element has the following sequence of child elements (0
+ or more occurrences):
+
+ <dialogaudit>: audit information for a dialog (Section 4.4.2.3.1).
+ The element is optional.
+
+
+
+
+McGlashan, et al. Standards Track [Page 70]
+
+RFC 6231 IVR Control Package May 2011
+
+
+4.4.2.3.1. <dialogaudit>
+
+ The <dialogaudit> element has the following attributes:
+
+ dialogid: string identifying the dialog. The attribute is
+ mandatory.
+
+ state: string indicating the state of the dialog. Valid values are
+ preparing, prepared, starting, and started. The attribute is
+ mandatory.
+
+ connectionid: string identifying the SIP dialog connection
+ associated with the dialog (see Appendix A.1 of [RFC6230]). The
+ attribute is optional. There is no default value.
+
+ conferenceid: string identifying the conference associated with the
+ dialog (see Appendix A.1 of [RFC6230]). The attribute is
+ optional. There is no default value.
+
+ The <dialogaudit> element has the following child element:
+
+ <codecs> element describing codecs used in the dialog. See
+ Section 4.4.2.1. The element is optional.
+
+ For example, a fragment describing a started dialog that is using
+ PCMU and telephony-event audio codecs:
+
+ <dialogaudit dialogid="1234" state="started" conferenceid="conf1">
+ <codecs>
+ <codec name="audio">
+ <subtype>PCMU</subtype>
+ </codec>
+ <codec name="audio">
+ <subtype>telephone-event</subtype>
+ </codec>
+ </codecs>
+ </dialogaudit>
+
+4.5. Response Status Codes
+
+ This section describes the response codes in Table 1 for the status
+ attribute of dialog management <response> (Section 4.2.4) and audit
+ <auditresponse> (Section 4.4.2) responses. The MS MUST support the
+ status response codes defined here. All other valid but undefined
+ values are reserved for future use, where new status codes are
+ assigned using the Standards Action process defined in [RFC5226].
+ The AS MUST treat any responses it does not recognize as being
+ equivalent to the x00 response code for all classes. For example, if
+
+
+
+McGlashan, et al. Standards Track [Page 71]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ an AS receives an unrecognized response code of 499, it can safely
+ assume that there was something wrong with its request and treat the
+ response as if it had received a 400 (Syntax error) response code.
+
+ 4xx responses are definite failure responses from a particular MS.
+ The reason attribute in the response SHOULD identify the failure in
+ more detail, for example, "Mandatory attribute missing: src in media
+ element" for a 400 (Syntax error) response code.
+
+ The AS SHOULD NOT retry the same request without modification (for
+ example, correcting a syntax error or changing the connectionid to
+ use one available on the MS). However, the same request to a
+ different MS might be successful, for example, if another MS supports
+ a capability required in the request.
+
+ 4xx failure responses can be grouped into three classes: failure due
+ to a syntax error in the request (400); failure due to an error
+ executing the request on the MS (405-419); and failure due to the
+ request requiring a capability not supported by the MS (420-439).
+
+ In cases where more than one request code could be reported for a
+ failure, the MS SHOULD use the most specific error code of the
+ failure class for the detected error. For example, if the MS detects
+ that the dialogid in the request is invalid, then it uses a 406
+ status code. However, if the MS merely detects that an execution
+ error occurred, then 419 is used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 72]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ +------+---------------+-----------------------+--------------------+
+ | Code | Summary | Description | Informational: AS |
+ | | | | Possible Recovery |
+ | | | | Action |
+ +------+---------------+-----------------------+--------------------+
+ | 200 | OK | request has | |
+ | | | succeeded. | |
+ | 400 | Syntax error | request is | Change the request |
+ | | | syntactically | so that it is |
+ | | | invalid: it is not | syntactically |
+ | | | valid with respect to | valid. |
+ | | | the XML schema | |
+ | | | specified in | |
+ | | | Section 5 or it | |
+ | | | violates a | |
+ | | | co-occurrence | |
+ | | | constraint for a | |
+ | | | request element | |
+ | | | defined in Section 4. | |
+ | 405 | dialogid | request uses a | Send a request for |
+ | | already | dialogid identifier | a new dialog |
+ | | exists | for a new dialog that | without specifying |
+ | | | is already used by | the dialogid and |
+ | | | another dialog on the | let the MS |
+ | | | MS (see Section 4.2). | generate a unique |
+ | | | | dialogid in the |
+ | | | | response. |
+ | 406 | dialogid does | request uses a | Send an <audit> |
+ | | not exist | dialogid identifier | request |
+ | | | for an dialog that | (Section 4.4.1) |
+ | | | does not exist on the | requesting the |
+ | | | MS (see Section 4.2). | list of dialog |
+ | | | | identifiers |
+ | | | | already used by |
+ | | | | the MS and then |
+ | | | | use one of the |
+ | | | | listed dialog |
+ | | | | identifiers. |
+ | 407 | connectionid | request uses a | Use another method |
+ | | does not | connectionid | to determine which |
+ | | exist | identifier for a | connections are |
+ | | | connection that does | available on the |
+ | | | not exist on the MS. | MS. |
+ | 408 | conferenceid | request uses a | Use another method |
+ | | does not | conferenceid | to determine which |
+ | | exist | identifier for a | conferences are |
+ | | | conference that does | available on the |
+ | | | not exist on the MS. | MS. |
+
+
+
+McGlashan, et al. Standards Track [Page 73]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ | 409 | Resource | request uses a URI to | Check that the |
+ | | cannot be | reference an external | resource URI is |
+ | | retrieved | resource (e.g., | valid, can be |
+ | | | dialog, media, or | reached from the |
+ | | | grammar) that cannot | MS, and that the |
+ | | | be retrieved within | appropriate |
+ | | | the timeout interval. | authentication is |
+ | | | | used. |
+ | 410 | Dialog | request to prepare or | |
+ | | execution | start a dialog that | |
+ | | canceled | has been terminated | |
+ | | | by a | |
+ | | | <dialogterminate/> | |
+ | | | request (see | |
+ | | | Section 4.2). | |
+ | 411 | Incompatible | request specifies a | Change the media |
+ | | stream | media stream | stream |
+ | | configuration | configuration that is | configuration to |
+ | | | in conflict with | match the |
+ | | | itself, or the | capabilities of |
+ | | | connection or | the connection or |
+ | | | conference | conference. |
+ | | | capabilities (see | |
+ | | | Section 4.2.2). | |
+ | 412 | Media stream | request specifies an | Check the media |
+ | | not available | operation for which a | stream capability |
+ | | | media stream is not | of the connection |
+ | | | available. For | or conference and |
+ | | | example, playing a | use an operation |
+ | | | video media resource | that only uses |
+ | | | on an connection or | these |
+ | | | conference without | capabilities. |
+ | | | video streams. | |
+ | 413 | Control keys | request contains a | Use different keys |
+ | | with same | <control> element | for the different |
+ | | value | (Section 4.3.1.2) | control |
+ | | | where some keys have | operations. |
+ | | | the same value. | |
+ | 419 | Other | requested operation | |
+ | | execution | cannot be executed by | |
+ | | error | the MS. | |
+ | 420 | Unsupported | request specifies a | Use a URI scheme |
+ | | URI scheme | URI whose scheme is | that is supported. |
+ | | | not supported by the | |
+ | | | MS. | |
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 74]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ | 421 | Unsupported | request references an | Send an <audit> |
+ | | dialog | external dialog | request |
+ | | language | language not | (Section 4.4.1) |
+ | | | supported by the MS. | requesting the MS |
+ | | | | capabilities and |
+ | | | | then use one of |
+ | | | | the listed dialog |
+ | | | | languages. |
+ | 422 | Unsupported | request references a | Send an <audit> |
+ | | playback | media resource for | request |
+ | | format | playback whose format | (Section 4.4.1) |
+ | | | is not supported by | requesting the MS |
+ | | | the MS. | capabilities and |
+ | | | | then use one of |
+ | | | | the listed |
+ | | | | playback media |
+ | | | | formats. |
+ | 423 | Unsupported | request references a | Send an <audit> |
+ | | record format | media resource for | request |
+ | | | recording whose | (Section 4.4.1) |
+ | | | format is not | requesting the MS |
+ | | | supported by the MS. | capabilities and |
+ | | | | then use one of |
+ | | | | the listed record |
+ | | | | media formats. |
+ | 424 | Unsupported | request references a | Send an <audit> |
+ | | grammar | grammar whose format | request |
+ | | format | is not supported by | (Section 4.4.1) |
+ | | | the MS. | requesting the MS |
+ | | | | capabilities and |
+ | | | | then use one of |
+ | | | | the listed grammar |
+ | | | | types. |
+ | 425 | Unsupported | request contains a | Send an <audit> |
+ | | variable | prompt <variable> | request |
+ | | configuration | element | (Section 4.4.1) |
+ | | | (Section 4.3.1.1.1) | requesting the MS |
+ | | | not supported by the | capabilities and |
+ | | | MS. | then use one of |
+ | | | | the listed |
+ | | | | variable types. |
+ | 426 | Unsupported | request contains a | |
+ | | DTMF | prompt <dtmf> element | |
+ | | configuration | (Section 4.3.1.1.2) | |
+ | | | not supported by the | |
+ | | | MS. | |
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 75]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ | 427 | Unsupported | request contains a | |
+ | | parameter | <param> element | |
+ | | | (Section 4.2.6.1) not | |
+ | | | supported by the MS. | |
+ | 428 | Unsupported | request contains a | |
+ | | media stream | <stream> element | |
+ | | configuration | (Section 4.2.2.2) | |
+ | | | whose configuration | |
+ | | | is not supported by | |
+ | | | the MS. | |
+ | 429 | Unsupported | request contains a | |
+ | | playback | <prompt> element | |
+ | | configuration | (Section 4.3.1.1) | |
+ | | | that the MS is unable | |
+ | | | to play on the | |
+ | | | available output | |
+ | | | media streams. | |
+ | 430 | Unsupported | request contains a | |
+ | | record | <record> element | |
+ | | configuration | (Section 4.3.1.4) | |
+ | | | that the MS is unable | |
+ | | | to record with on the | |
+ | | | available input media | |
+ | | | streams. | |
+ | 431 | Unsupported | request contains | |
+ | | foreign | attributes or | |
+ | | namespace | elements from another | |
+ | | attribute or | namespace that the MS | |
+ | | element | does not support. | |
+ | 432 | Unsupported | request tries to | |
+ | | multiple | start another dialog | |
+ | | dialog | on the same | |
+ | | capability | conference or | |
+ | | | connection where a | |
+ | | | dialog is already | |
+ | | | running. | |
+ | 433 | Unsupported | request contains | |
+ | | collect and | <collect> and | |
+ | | record | <record> elements and | |
+ | | capability | the MS does support | |
+ | | | these operations | |
+ | | | simultaneously. | |
+ | 434 | Unsupported | request contains a | |
+ | | VAD | <record> element | |
+ | | capability | where Voice Activity | |
+ | | | Detection (VAD) is | |
+ | | | required, but the MS | |
+ | | | does not support VAD. | |
+
+
+
+McGlashan, et al. Standards Track [Page 76]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ | 435 | Unsupported | request contains a | |
+ | | parallel | prompt <par> element | |
+ | | playback | whose configuration | |
+ | | | is not supported by | |
+ | | | the MS. | |
+ | 439 | Other | request requires | |
+ | | unsupported | another capability | |
+ | | capability | not supported by the | |
+ | | | MS. | |
+ +------+---------------+-----------------------+--------------------+
+
+ Table 1: Status Codes
+
+4.6. Type Definitions
+
+ This section defines types referenced in attribute and element
+ definitions.
+
+4.6.1. Boolean
+
+ The value space of boolean is the set {true, false, 1, 0} as defined
+ in Section 3.2.2 of [XMLSchema:Part2]. In accordance with this
+ definition, the concept of false can be lexically represented by the
+ strings "0" and "false" and the concept of true by the strings "1"
+ and "true"; implementations MUST support both styles of lexical
+ representation.
+
+4.6.2. DTMFChar
+
+ A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, #, *, A, B, C, D}.
+
+4.6.3. DTMFString
+
+ A string composed of one or more DTMFChars.
+
+4.6.4. Non-Negative Integer
+
+ The value space of non-negative integer is the infinite set
+ {0,1,2,...} as defined in Section 3.3.20 of [XMLSchema:Part2].
+
+ Implementation Note: It is RECOMMENDED that implementations at least
+ support a maximum value of a 32-bit integer (2,147,483,647).
+
+4.6.5. Positive Integer
+
+ The value space of positive integer is the infinite set {1,2,...} as
+ defined in Section 3.3.25 of [XMLSchema:Part2].
+
+
+
+McGlashan, et al. Standards Track [Page 77]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Implementation Note: It is RECOMMENDED that implementations at least
+ support a maximum value of a 32-bit integer (2,147,483,647).
+
+4.6.6. String
+
+ A string in the character encoding associated with the XML element as
+ defined in Section 3.2.1 of [XMLSchema:Part2].
+
+4.6.7. Time Designation
+
+ A time designation consists of a non-negative real number followed by
+ a time unit identifier.
+
+ The time unit identifiers are "ms" (milliseconds) and "s" (seconds).
+
+ Examples include: "3s", "850ms", "0.7s", ".5s", and "+1.5s".
+
+4.6.8. Percentage
+
+ A percentage consists of a positive integer followed by "%".
+
+ Examples include: "100%", "500%", and "10%".
+
+4.6.9. URI
+
+ Uniform Resource Indicator as defined in [RFC3986].
+
+4.6.10. MIME Media Type
+
+ A string formatted as an IANA MIME media type [MIME.mediatypes]. The
+ ABNF [RFC5234] production for the string is:
+
+ type = type-name "/" subtype-name *(";" parameter)
+
+ parameter = parameter-name "=" value
+
+ where "type-name" and "subtype-name" are defined in Section 4.2 of
+ [RFC4288], "parameter-name" is defined in Section 4.3 of [RFC4288],
+ and "value" is defined in Section 5.1 of [RFC2045].
+
+4.6.11. Language Identifier
+
+ A language identifier labels information content as being of a
+ particular human language variant. Following the XML specification
+ for language identification [XML], a legal language identifier is
+ identified by a [RFC5646] code and matched according to [RFC4647].
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 78]
+
+RFC 6231 IVR Control Package May 2011
+
+
+4.6.12. DateTime
+
+ A string formatted according to the XML schema definition of a
+ dateTime type [XMLSchema:Part2].
+
+5. Formal Syntax
+
+ This section defines the XML schema for IVR Control Package. The
+ schema is normative.
+
+ The schema defines datatypes, attributes, dialog management, and IVR
+ dialog elements in the urn:ietf:params:xml:ns:msc-ivr namespace. In
+ most elements the order of child elements is significant. The schema
+ is extensible: elements allow attributes and child elements from
+ other namespaces. Elements from outside this package's namespace can
+ occur after elements defined in this package.
+
+ The schema is dependent upon the schema (framework.xsd) defined in
+ Appendix A.1 of the Control Framework [RFC6230]. It is also
+ dependent upon the W3C (xml.xsd) schema for definitions of XML
+ attributes (e.g., xml:base).
+
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr"
+ elementFormDefault="qualified" blockDefault="#all"
+ xmlns="urn:ietf:params:xml:ns:msc-ivr"
+ xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation>
+ IETF MediaCtrl IVR 1.0 (20110104)
+
+ This is the schema of the IETF MediaCtrl IVR Control
+ Package.
+
+ The schema namespace is urn:ietf:params:xml:ns:msc-ivr
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <!--
+ #############################################################
+
+ SCHEMA IMPORTS
+
+ #############################################################
+ -->
+
+
+
+McGlashan, et al. Standards Track [Page 79]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xsd:annotation>
+ <xsd:documentation>
+ This import brings in the XML attributes for
+ xml:base, xml:lang, etc
+
+ See http://www.w3.org/2001/xml.xsd for latest version
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:import>
+
+ <xsd:import
+ namespace="urn:ietf:params:xml:ns:control:framework-attributes"
+ schemaLocation="framework.xsd">
+ <xsd:annotation>
+ <xsd:documentation>
+ This import brings in the framework attributes for
+ conferenceid and connectionid.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:import>
+
+
+ <!--
+ #####################################################
+
+ Extensible core type
+
+ #####################################################
+ -->
+
+
+ <xsd:complexType name="Tcore">
+ <xsd:annotation>
+ <xsd:documentation>
+ This type is extended by other (non-mixed) component types to
+ allow attributes from other namespaces.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence/>
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+
+ <!--
+ #####################################################
+
+
+
+
+McGlashan, et al. Standards Track [Page 80]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ TOP LEVEL ELEMENT: mscivr
+
+ #####################################################
+ -->
+
+ <xsd:complexType name="mscivrType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element ref="dialogprepare" />
+ <xsd:element ref="dialogstart" />
+ <xsd:element ref="dialogterminate" />
+ <xsd:element ref="response" />
+ <xsd:element ref="event" />
+ <xsd:element ref="audit" />
+ <xsd:element ref="auditresponse" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="version" type="version.datatype"
+ use="required" />
+ <xsd:attribute name="desclang" type="xsd:language"
+ default="i-default" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="mscivr" type="mscivrType" />
+
+
+ <!--
+ #####################################################
+
+ DIALOG MANAGEMENT TYPES
+
+ #####################################################
+ -->
+
+ <!-- dialogprepare -->
+
+ <xsd:complexType name="dialogprepareType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="dialog" minOccurs="0"
+ maxOccurs="1" />
+
+
+
+McGlashan, et al. Standards Track [Page 81]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:element ref="params" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="src" type="xsd:anyURI" />
+ <xsd:attribute name="type" type="mime.datatype"/>
+ <xsd:attribute name="maxage" type="xsd:nonNegativeInteger"/>
+ <xsd:attribute name="maxstale" type="xsd:nonNegativeInteger"/>
+ <xsd:attribute name="fetchtimeout"
+ type="timedesignation.datatype" default="30s" />
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialogprepare" type="dialogprepareType" />
+
+ <!-- dialogstart -->
+
+ <xsd:complexType name="dialogstartType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="dialog" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="subscribe" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="params" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="stream" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="src" type="xsd:anyURI" />
+ <xsd:attribute name="type" type="mime.datatype"/>
+ <xsd:attribute name="maxage" type="xsd:nonNegativeInteger"/>
+ <xsd:attribute name="maxstale" type="xsd:nonNegativeInteger"/>
+ <xsd:attribute name="fetchtimeout"
+ type="timedesignation.datatype" default="30s" />
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" />
+ <xsd:attribute name="prepareddialogid"
+ type="dialogid.datatype" />
+ <xsd:attributeGroup ref="fw:framework-attributes" />
+ </xsd:extension>
+
+
+
+McGlashan, et al. Standards Track [Page 82]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialogstart" type="dialogstartType" />
+
+ <!-- dialogterminate -->
+
+ <xsd:complexType name="dialogterminateType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" use="required" />
+ <xsd:attribute name="immediate"
+ type="xsd:boolean" default="false" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialogterminate" type="dialogterminateType" />
+
+ <!-- response -->
+
+ <xsd:complexType name="responseType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="status" type="status.datatype"
+ use="required" />
+ <xsd:attribute name="reason" type="xsd:string" />
+ <xsd:attribute name="desclang" type="xsd:language"/>
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" use="required" />
+ <xsd:attributeGroup ref="fw:framework-attributes" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="response" type="responseType" />
+
+ <!-- event -->
+
+
+
+
+McGlashan, et al. Standards Track [Page 83]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:complexType name="eventType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element ref="dialogexit" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="dtmfnotify" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="event" type="eventType" />
+
+ <!-- dialogexit-->
+
+ <xsd:complexType name="dialogexitType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="promptinfo" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="controlinfo" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="collectinfo" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="recordinfo" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="params" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="status"
+ type="xsd:nonNegativeInteger" use="required" />
+ <xsd:attribute name="reason" type="xsd:string" />
+ <xsd:attribute name="desclang" type="xsd:language"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+
+
+
+McGlashan, et al. Standards Track [Page 84]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:element name="dialogexit" type="dialogexitType" />
+
+
+ <!-- dtmfnotify-->
+
+ <xsd:complexType name="dtmfnotifyType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="matchmode"
+ type="matchmode.datatype" default="all" />
+ <xsd:attribute name="dtmf" type="dtmfstring.datatype"
+ use="required" />
+ <xsd:attribute name="timestamp" type="xsd:dateTime"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dtmfnotify" type="dtmfnotifyType" />
+
+
+ <!-- promptinfo -->
+
+ <xsd:complexType name="promptinfoType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="duration"
+ type="xsd:nonNegativeInteger" />
+ <xsd:attribute name="termmode"
+ type="prompt_termmode.datatype" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="promptinfo" type="promptinfoType" />
+
+
+ <!-- controlinfo -->
+
+ <xsd:complexType name="controlinfoType">
+
+
+
+McGlashan, et al. Standards Track [Page 85]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="controlmatch" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="controlinfo" type="controlinfoType" />
+
+
+ <!-- controlmatch -->
+
+ <xsd:complexType name="controlmatchType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="dtmf"
+ type="dtmfstring.datatype" />
+ <xsd:attribute name="timestamp" type="xsd:dateTime" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="controlmatch" type="controlmatchType" />
+
+
+ <!-- collectinfo -->
+
+ <xsd:complexType name="collectinfoType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="dtmf"
+ type="dtmfstring.datatype" />
+ <xsd:attribute name="termmode"
+ type="collect_termmode.datatype" use="required" />
+ </xsd:extension>
+
+
+
+McGlashan, et al. Standards Track [Page 86]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="collectinfo" type="collectinfoType" />
+
+
+ <!-- recordinfo -->
+
+ <xsd:complexType name="recordinfoType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="mediainfo" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="duration"
+ type="xsd:nonNegativeInteger" />
+ <xsd:attribute name="termmode"
+ type="record_termmode.datatype" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="recordinfo" type="recordinfoType" />
+
+ <!-- mediainfo -->
+
+ <xsd:complexType name="mediainfoType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="loc" type="xsd:anyURI"
+ use="required" />
+ <xsd:attribute name="type" type="mime.datatype"
+ use="required"/>
+ <xsd:attribute name="size"
+ type="xsd:nonNegativeInteger" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:element name="mediainfo" type="mediainfoType" />
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 87]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <!-- subscribe -->
+
+ <xsd:complexType name="subscribeType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="dtmfsub" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="subscribe" type="subscribeType" />
+
+
+ <!-- dtmfsub -->
+
+ <xsd:complexType name="dtmfsubType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="matchmode"
+ type="matchmode.datatype" default="all" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dtmfsub" type="dtmfsubType" />
+
+
+ <!-- params -->
+ <xsd:complexType name="paramsType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="param" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+
+
+
+McGlashan, et al. Standards Track [Page 88]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:complexType>
+
+ <xsd:element name="params" type="paramsType" />
+
+
+ <!-- param -->
+ <!-- doesn't extend tCore since its content model is mixed -->
+ <xsd:complexType name="paramType" mixed="true">
+ <xsd:sequence/>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ <xsd:attribute name="type" type="mime.datatype" default="text/plain"/>
+ <xsd:attribute name="encoding" type="xsd:string"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <xsd:element name="param" type="paramType" />
+
+ <!-- stream -->
+
+ <xsd:complexType name="streamType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="region" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="priority" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="media" type="media.datatype"
+ use="required" />
+ <xsd:attribute name="label" type="label.datatype" />
+ <xsd:attribute name="direction"
+ type="direction.datatype" default="sendrecv" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="stream" type="streamType" />
+
+<!-- region -->
+<xsd:simpleType name="regionType">
+ <xsd:restriction base="xsd:NMTOKEN"/>
+</xsd:simpleType>
+ <xsd:element name="region" type="regionType" />
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 89]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <!-- priority -->
+ <xsd:simpleType name="priorityType">
+ <xsd:restriction base="xsd:positiveInteger" />
+ </xsd:simpleType>
+
+ <xsd:element name="priority" type="priorityType" />
+
+
+<!-- dialog -->
+
+ <xsd:complexType name="dialogType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="prompt" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="control" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="collect" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="record" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="repeatCount"
+ type="xsd:nonNegativeInteger" default="1" />
+ <xsd:attribute name="repeatDur"
+ type="timedesignation.datatype" />
+ <xsd:attribute name="repeatUntilComplete"
+ type="xsd:boolean" default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialog" type="dialogType" />
+
+
+ <!-- prompt -->
+
+ <xsd:complexType name="promptType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="media" />
+ <xsd:element ref="variable" />
+ <xsd:element ref="dtmf" />
+ <xsd:element ref="par" />
+
+
+
+McGlashan, et al. Standards Track [Page 90]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:any namespace="##other"
+ processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute ref="xml:base" />
+ <xsd:attribute name="bargein" type="xsd:boolean"
+ default="true" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="prompt" type="promptType" />
+
+
+ <!-- media -->
+
+ <xsd:complexType name="mediaType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="loc" type="xsd:anyURI"
+ use="required" />
+ <xsd:attribute name="type" type="mime.datatype" />
+ <xsd:attribute name="fetchtimeout"
+ type="timedesignation.datatype" default="30s" />
+ <xsd:attribute name="soundLevel"
+ type="percentage.datatype" default="100%" />
+ <xsd:attribute name="clipBegin"
+ type="timedesignation.datatype" default="0s" />
+ <xsd:attribute name="clipEnd"
+ type="timedesignation.datatype"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="media" type="mediaType" />
+
+ <!-- variable -->
+
+ <xsd:complexType name="variableT">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+
+
+
+McGlashan, et al. Standards Track [Page 91]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:attribute name="value" type="xsd:string"
+ use="required" />
+ <xsd:attribute name="type" type="xsd:string"
+ use="required" />
+ <xsd:attribute name="format" type="xsd:string" />
+ <xsd:attribute name="gender" type="gender.datatype" />
+ <xsd:attribute ref="xml:lang" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="variable" type="variableT" />
+
+ <!-- dtmf -->
+
+ <xsd:complexType name="dtmfType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="digits"
+ type="dtmfstring.datatype" use="required" />
+ <xsd:attribute name="level" type="xsd:integer"
+ default="-6" />
+ <xsd:attribute name="duration"
+ type="timedesignation.datatype" default="100ms" />
+ <xsd:attribute name="interval"
+ type="timedesignation.datatype" default="100ms" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dtmf" type="dtmfType" />
+
+
+ <!-- par -->
+
+ <xsd:complexType name="parType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="media" />
+ <xsd:element ref="variable" />
+ <xsd:element ref="dtmf" />
+ <xsd:element ref="seq" />
+ <xsd:any namespace="##other"
+
+
+
+McGlashan, et al. Standards Track [Page 92]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ processContents="lax" />
+ </xsd:choice>
+ <xsd:attribute name="endsync" type="endsync.datatype"
+ default="last"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="par" type="parType" />
+
+ <!-- seq -->
+
+ <xsd:complexType name="seqType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="media" />
+ <xsd:element ref="variable" />
+ <xsd:element ref="dtmf" />
+ <xsd:any namespace="##other"
+ processContents="lax" />
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="seq" type="seqType" />
+
+ <!-- control -->
+
+ <xsd:complexType name="controlType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="skipinterval"
+ type="timedesignation.datatype" default="6s" />
+ <xsd:attribute name="ffkey" type="dtmfchar.datatype" />
+ <xsd:attribute name="rwkey" type="dtmfchar.datatype" />
+ <xsd:attribute name="pauseinterval"
+ type="timedesignation.datatype" default="10s" />
+ <xsd:attribute name="pausekey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="resumekey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="volumeinterval"
+
+
+
+McGlashan, et al. Standards Track [Page 93]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ type="percentage.datatype" default="10%" />
+ <xsd:attribute name="volupkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="voldnkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="speedinterval"
+ type="percentage.datatype" default="10%" />
+ <xsd:attribute name="speedupkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="speeddnkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="gotostartkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="gotoendkey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="external"
+ type="dtmfstring.datatype" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="control" type="controlType" />
+
+
+ <!-- collect -->
+
+ <xsd:complexType name="collectType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="grammar" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="cleardigitbuffer"
+ type="xsd:boolean" default="true" />
+ <xsd:attribute name="timeout"
+ type="timedesignation.datatype" default="5s" />
+ <xsd:attribute name="interdigittimeout"
+ type="timedesignation.datatype" default="2s" />
+ <xsd:attribute name="termtimeout"
+ type="timedesignation.datatype" default="0s" />
+ <xsd:attribute name="escapekey"
+ type="dtmfchar.datatype" />
+ <xsd:attribute name="termchar"
+ type="dtmfchar.datatype" default="#" />
+ <xsd:attribute name="maxdigits"
+
+
+
+McGlashan, et al. Standards Track [Page 94]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ type="xsd:positiveInteger" default="5" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="collect" type="collectType" />
+
+ <!-- grammar -->
+ <!-- doesn't extend tCore since its content model is mixed -->
+ <xsd:complexType name="grammarType" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="src" type="xsd:anyURI" />
+ <xsd:attribute name="type" type="mime.datatype" />
+ <xsd:attribute name="fetchtimeout"
+ type="timedesignation.datatype" default="30s" />
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <xsd:element name="grammar" type="grammarType" />
+
+ <!-- record -->
+
+ <xsd:complexType name="recordType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="media" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="timeout"
+ type="timedesignation.datatype" default="5s" />
+ <xsd:attribute name="beep" type="xsd:boolean"
+ default="false" />
+ <xsd:attribute name="vadinitial"
+ type="xsd:boolean" default="false" />
+ <xsd:attribute name="vadfinal"
+ type="xsd:boolean" default="false" />
+ <xsd:attribute name="dtmfterm"
+ type="xsd:boolean" default="true" />
+ <xsd:attribute name="maxtime"
+ type="timedesignation.datatype" default="15s" />
+ <xsd:attribute name="finalsilence"
+ type="timedesignation.datatype" default="5s" />
+
+
+
+McGlashan, et al. Standards Track [Page 95]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:attribute name="append" type="xsd:boolean"
+ default="false" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="record" type="recordType" />
+
+ <!--
+ #####################################################
+
+ AUDIT TYPES
+
+ #####################################################
+ -->
+
+
+ <!-- audit -->
+
+ <xsd:complexType name="auditType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="capabilities"
+ type="xsd:boolean" default="true" />
+ <xsd:attribute name="dialogs"
+ type="xsd:boolean" default="true" />
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="audit" type="auditType" />
+
+ <!-- auditresponse -->
+
+ <xsd:complexType name="auditresponseType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="capabilities" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element ref="dialogs" minOccurs="0"
+ maxOccurs="1" />
+
+
+
+McGlashan, et al. Standards Track [Page 96]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="status" type="status.datatype"
+ use="required" />
+ <xsd:attribute name="reason" type="xsd:string" />
+ <xsd:attribute name="desclang" type="xsd:language"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="auditresponse" type="auditresponseType" />
+
+ <!-- codec -->
+
+ <xsd:complexType name="codecType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="subtype" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="params" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="codec" type="codecType" />
+
+ <!-- subtype -->
+
+ <xsd:simpleType name="subtypeType">
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+
+ <xsd:element name="subtype" type="subtypeType" />
+
+
+ <!-- codecs -->
+
+ <xsd:complexType name="codecsType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+
+
+
+McGlashan, et al. Standards Track [Page 97]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:sequence>
+ <xsd:element ref="codec" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="codecs" type="codecsType" />
+
+
+ <!-- capabilities -->
+
+ <xsd:complexType name="capabilitiesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="dialoglanguages" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="grammartypes" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="recordtypes" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="prompttypes" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="variables" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="maxpreparedduration" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="maxrecordduration" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element ref="codecs" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="capabilities" type="capabilitiesType" />
+
+
+ <!-- mimetype -->
+
+ <xsd:element name="mimetype" type="mime.datatype" />
+
+
+
+McGlashan, et al. Standards Track [Page 98]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <!-- dialoglanguages -->
+
+ <xsd:complexType name="dialoglanguagesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="mimetype" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialoglanguages" type="dialoglanguagesType" />
+
+ <!-- grammartypes -->
+
+ <xsd:complexType name="grammartypesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="mimetype" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="grammartypes" type="grammartypesType" />
+
+
+ <!-- recordtypes -->
+
+ <xsd:complexType name="recordtypesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="mimetype" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+
+
+
+McGlashan, et al. Standards Track [Page 99]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:complexType>
+
+ <xsd:element name="recordtypes" type="recordtypesType" />
+
+
+ <!-- prompttypes -->
+
+ <xsd:complexType name="prompttypesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="mimetype" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="prompttypes" type="prompttypesType" />
+
+<!-- variables -->
+
+ <xsd:complexType name="variablesType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="variabletype" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="variables" type="variablesType" />
+
+ <xsd:complexType name="variabletypeType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="format" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+
+
+
+McGlashan, et al. Standards Track [Page 100]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:attribute name="type" type="xsd:string" use="required" />
+ <xsd:attribute name="desc" type="xsd:string"/>
+ <xsd:attribute name="desclang" type="xsd:language"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="variabletype" type="variabletypeType" />
+
+<!-- format -->
+<!-- doesn't extend tCore since its content model is mixed -->
+ <xsd:complexType name="formatType" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="desc" type="xsd:string" />
+ <xsd:attribute name="desclang" type="xsd:language"/>
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <xsd:element name="format" type="formatType" />
+
+<!-- maxpreparedduration -->
+
+ <xsd:element name="maxpreparedduration"
+type="timedesignation.datatype"/>
+
+
+<!-- maxrecordduration -->
+
+ <xsd:element name="maxrecordduration"
+type="timedesignation.datatype"/>
+
+
+ <!-- dialogs -->
+
+ <xsd:complexType name="dialogsType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="dialogaudit" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+
+
+
+McGlashan, et al. Standards Track [Page 101]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:complexType>
+
+ <xsd:element name="dialogs" type="dialogsType" />
+
+
+ <!-- dialogaudit -->
+
+ <xsd:complexType name="dialogauditType">
+ <xsd:complexContent>
+ <xsd:extension base="Tcore">
+ <xsd:sequence>
+ <xsd:element ref="codecs" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any namespace="##other" minOccurs="0"
+ maxOccurs="unbounded" processContents="lax" />
+ </xsd:sequence>
+ <xsd:attribute name="dialogid"
+ type="dialogid.datatype" use="required" />
+ <xsd:attribute name="state" type="state.datatype"
+ use="required" />
+ <xsd:attributeGroup ref="fw:framework-attributes" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dialogaudit" type="dialogauditType" />
+
+
+ <!--
+ ####################################################
+
+ DATATYPES
+
+ ####################################################
+ -->
+
+
+ <xsd:simpleType name="version.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="1.0" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="mime.datatype">
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+ <xsd:simpleType name="dialogid.datatype">
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+
+
+
+McGlashan, et al. Standards Track [Page 102]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:simpleType name="gender.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="female" />
+ <xsd:enumeration value="male" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="state.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="preparing" />
+ <xsd:enumeration value="prepared" />
+ <xsd:enumeration value="starting" />
+ <xsd:enumeration value="started" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="status.datatype">
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:pattern value="[0-9][0-9][0-9]" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="media.datatype">
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+ <xsd:simpleType name="label.datatype">
+ <xsd:restriction base="xsd:string" />
+ </xsd:simpleType>
+ <xsd:simpleType name="direction.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="sendrecv" />
+ <xsd:enumeration value="sendonly" />
+ <xsd:enumeration value="recvonly" />
+ <xsd:enumeration value="inactive" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="timedesignation.datatype">
+ <xsd:annotation>
+ <xsd:documentation>
+ Time designation following Time in CSS2
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="(\+)?([0-9]*\.)?[0-9]+(ms|s)" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="dtmfchar.datatype">
+ <xsd:annotation>
+ <xsd:documentation>
+ DTMF character [0-9#*A-D]
+ </xsd:documentation>
+
+
+
+McGlashan, et al. Standards Track [Page 103]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[0-9#*A-D]" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="dtmfstring.datatype">
+ <xsd:annotation>
+ <xsd:documentation>
+ DTMF sequence [0-9#*A-D]
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="([0-9#*A-D])+" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="percentage.datatype">
+ <xsd:annotation>
+ <xsd:documentation>
+ whole integer followed by '%'
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="([0-9])+%" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="prompt_termmode.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="completed" />
+ <xsd:enumeration value="bargein" />
+ <xsd:enumeration value="stopped" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="collect_termmode.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="match" />
+ <xsd:enumeration value="noinput" />
+ <xsd:enumeration value="nomatch" />
+ <xsd:enumeration value="stopped" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="record_termmode.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="noinput" />
+ <xsd:enumeration value="dtmf" />
+ <xsd:enumeration value="maxtime" />
+
+
+
+McGlashan, et al. Standards Track [Page 104]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <xsd:enumeration value="finalsilence" />
+ <xsd:enumeration value="stopped" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="matchmode.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="all" />
+ <xsd:enumeration value="collect" />
+ <xsd:enumeration value="control" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="endsync.datatype">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="first" />
+ <xsd:enumeration value="last" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
+
+6. Examples
+
+ This section provides examples of the IVR Control Package.
+
+6.1. AS-MS Dialog Interaction Examples
+
+ The following example assume a Control Channel has been established
+ and synced as described in the Media Control Channel Framework
+ [RFC6230].
+
+ The XML messages are in angled brackets (with the root <mscivr>
+ omitted); the REPORT status is in round brackets. Other aspects of
+ the protocol are omitted for readability.
+
+6.1.1. Starting an IVR Dialog
+
+ An IVR dialog is started successfully, and dialogexit notification
+ <event> is sent from the MS to the AS when the dialog exits normally.
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 105]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Application Server (AS) Media Server (MS)
+ | |
+ | (1) CONTROL: <dialogstart> |
+ | ----------------------------------------> |
+ | |
+ | (2) 202 |
+ | <--------------------------------------- |
+ | |
+ | |
+ | (3) REPORT: <response status="200"/> |
+ | (terminate) |
+ | <---------------------------------------- |
+ | |
+ | (4) 200 |
+ | ----------------------------------------> |
+ | |
+ | (5) CONTROL: <event ... /> |
+ | |
+ | <---------------------------------------- |
+ | |
+ | (6) 200 |
+ | ----------------------------------------> |
+ | |
+
+6.1.2. IVR Dialog Fails to Start
+
+ An IVR dialog fails to start due to an unknown dialog language. The
+ <response> is reported in a framework 200 message.
+
+ Application Server (AS) Media Server (MS)
+ | |
+ | (1) CONTROL: <dialogstart> |
+ | ----------------------------------------> |
+ | |
+ | (2) 200: <response status="421"/> |
+ | <---------------------------------------- |
+ | |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 106]
+
+RFC 6231 IVR Control Package May 2011
+
+
+6.1.3. Preparing and Starting an IVR Dialog
+
+ An IVR dialog is prepared and started successfully, and then the
+ dialog exits normally.
+
+ Application Server (AS) Media Server (MS)
+ | |
+ | (1) CONTROL: <dialogprepare> |
+ | ----------------------------------------> |
+ | |
+ | (2) 202 |
+ | <--------------------------------------- |
+ | |
+ | (3) REPORT: <response status="200"/> |
+ | (terminate) |
+ | <---------------------------------------- |
+ | |
+ | (4) 200 |
+ | ----------------------------------------> |
+ | |
+ | (5) CONTROL: <dialogstart> |
+ | ----------------------------------------> |
+ | |
+ | (6) 202 |
+ | <--------------------------------------- |
+ | |
+ | (7) REPORT: <response status="200"/> |
+ | (terminate) |
+ | <---------------------------------------- |
+ | |
+ | (8) 200 |
+ | ----------------------------------------> |
+ | |
+ | (9) CONTROL: <event .../> |
+ | <---------------------------------------- |
+ | |
+ | (10) 200 |
+ | ----------------------------------------> |
+ | |
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 107]
+
+RFC 6231 IVR Control Package May 2011
+
+
+6.1.4. Terminating a Dialog
+
+ An IVR dialog is started successfully, and then terminated by the AS.
+ The dialogexit event is sent to the AS when the dialog exits.
+
+ Application Server (AS) Media Server (MS)
+ | |
+ | (1) CONTROL: <dialogstart> |
+ | ----------------------------------------> |
+ | |
+ | (2) 202 |
+ | <--------------------------------------- |
+ | |
+ | (3) REPORT: <response status="200"/> |
+ | (terminate) |
+ | <---------------------------------------- |
+ | |
+ | (4) 200 |
+ | ----------------------------------------> |
+ | |
+ | (5) CONTROL: <dialogterminate> |
+ | ----------------------------------------> |
+ | |
+ | (6) 200: <response status="200"/> |
+ | <---------------------------------------- |
+ | |
+ | (7) CONTROL: <event .../> |
+ | <---------------------------------------- |
+ | |
+ | (8) 200 |
+ | ----------------------------------------> |
+ | |
+
+ Note that in (6) the <response> payload to the <dialogterminate/>
+ request is carried on a framework 200 response since it could
+ complete the requested operation before the transaction timeout.
+
+6.2. IVR Dialog Examples
+
+ The following examples show how <dialog> is used with
+ <dialogprepare>, <dialogstart>, and <event> elements to play prompts,
+ set runtime controls, collect DTMF input, and record user input.
+
+ The examples do not specify all messages between the AS and MS.
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 108]
+
+RFC 6231 IVR Control Package May 2011
+
+
+6.2.1. Playing Announcements
+
+ This example prepares an announcement composed of two prompts where
+ the dialog repeatCount is set to 2.
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogprepare>
+ <dialog repeatCount="2">
+ <prompt>
+ <media loc="http://www.example.com/media/Number_09.wav"/>
+ <media loc="http://www.example.com/media/Number_11.wav"/>
+ </prompt>
+ </dialog>
+ </dialogprepare>
+ </mscivr>
+
+ If the dialog is prepared successfully, a <response> is returned with
+ status 200 and a dialog identifier assigned by the MS:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="200" dialogid="vxi78"/>
+ </mscivr>
+
+ The prepared dialog is then started on a conference playing the
+ prompts twice:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart prepareddialogid="vxi78" conferenceid="conference11"/>
+ </mscivr>
+
+ In the case of a successful dialog, the output is provided in
+ <event>; for example:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi78">
+ <dialogexit status="1">
+ <promptinfo termmode="completed" duration="24000"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+6.2.2. Prompt and Collect
+
+ In this example, a prompt is played and then the MS waits for 30s for
+ a two digit sequence:
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 109]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/prompt1.wav"/>
+ </prompt>
+ <collect timeout="30s" maxdigits="2"/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ If no user input is collected within 30s, then the following
+ notification event would be returned:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi81">
+ <dialogexit status="1" >
+ <promptinfo termmode="completed" duration="4000"/>
+ <collectinfo termmode="noinput"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+ The collect operation can be specified without a prompt. Here the MS
+ just waits for DTMF input from the user (the maxdigits attribute of
+ <collect> defaults to 5):
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog>
+ <collect/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ If the dialog is successful, then dialogexit <event> contains the
+ dtmf collected in its result parameter:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi80">
+ <dialogexit status="1">
+ <collectinfo dtmf="12345" termmode="match"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+ And finally, in this example, one of the input parameters is invalid:
+
+
+
+
+McGlashan, et al. Standards Track [Page 110]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog repeatCount="two">
+ <prompt>
+ <media loc="http://www.example.com/prompt1.wav"/>
+ </prompt>
+ <collect cleardigitbuffer="true"
+ timeout="4s" interdigittimeout="2s"
+ termtimeout="0s" maxdigits="2"/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ The error is reported in the response:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="400" dialogid="vxi82"
+ reason="repeatCount attribute value invalid: two"/>
+ </mscivr>
+
+6.2.3. Prompt and Record
+
+ In this example, the user is prompted, then their input is recorded
+ for a maximum of 30 seconds.
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/media/sayname.wav"/>
+ </prompt>
+ <record dtmfterm="false" maxtime="30s" beep="true"/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ If successful and the recording is terminated by DTMF, the following
+ is returned in a dialogexit <event>:
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 111]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi83">
+ <dialogexit status="1">
+ <recordinfo termmode="dtmf">
+ <mediainfo type="audio/x-wav"
+ loc="http://www.example.com/recording1.wav"/>
+ </recordinfo>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+6.2.4. Runtime Controls
+
+ In this example, a prompt is played with the collect operation and
+ runtime controls activated.
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog>
+ <prompt bargein="true">
+ <media loc="http://www.example.com/prompt1.wav"/>
+ </prompt>
+ <control ffkey="5" rwkey="6" speedupkey="3"
+ speeddnkey="4"/>
+ <collect maxdigits="2"/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ Once the dialog is active, the user can press keys 3, 4, 5, and 6 to
+ execute runtime controls on the prompt queue. The keys do not cause
+ bargein to occur. If the user presses any other key, then the prompt
+ is interrupted and DTMF collect begins. Note that runtime controls
+ are not active during the collect operation.
+
+ When the dialog is completed successfully, then both control and
+ collect information is reported.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 112]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi81">
+ <dialogexit status="1">
+ <promptinfo termmode="bargein"/>
+ <controlinfo>
+ <controlmatch dtmf="4" timestamp="2008-05-12T12:13:14Z"/>
+ <controlmatch dtmf="3" timestamp="2008-05-12T12:13:15Z"/>
+ <controlmatch dtmf="5" timestamp="2008-05-12T12:13:16Z"/>
+ </controlinfo>
+ <collectinfo termmode="match" dtmf="14"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+6.2.5. Subscriptions and Notifications
+
+ In this example, a looped dialog is started with subscription for
+ notifications each time the user input matches the collect grammar:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS">
+ <dialog repeatCount="0">
+ <collect maxdigits="2"/>
+ </dialog>
+ <subscribe>
+ <dtmfsub matchmode="collect"/>
+ </subscribe>
+ </dialogstart>
+ </mscivr>
+
+ Each time the user input the DTMF matching the grammar, the following
+ notification event would be sent:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi81">
+ <dtmfnotify matchmode="collect" dtmf="12"
+ timestamp="2008-05-12T12:13:14Z"/>
+ </event>
+ </mscivr>
+
+ If no user input was provided, or the input did not match the
+ grammar, the dialog would continue to loop until terminated (or an
+ error occurred).
+
+6.2.6. Dialog Repetition until DTMF Collection Complete
+
+ This example is a prompt and collect dialog to collect the PIN from
+ the user. The repeatUntilComplete attribute in the <dialog> is set
+
+
+
+McGlashan, et al. Standards Track [Page 113]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ to true in this case so that when the grammar collection is complete,
+ the MS automatically terminates the dialog repeat cycle and reports
+ the results in a <dialogexit> event.
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="7HDY839:HJKSkyHS">
+ <dialog repeatCount="3" repeatUntilComplete="true">
+ <prompt bargein="true">
+ <media loc="http://example.com/please_enter_your_pin.vox"/>
+ </prompt>
+ <collect maxdigits="4"/>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ If the user barges in on the prompt and <collect> receives DTMF input
+ matching the grammar, the dialog cycle is considered complete and the
+ MS returns the following:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="vxi81">
+ <dialogexit status="1">
+ <promptinfo duration="3654" termmode="bargein"/>
+ <collectinfo dtmf="1234" termmode="match"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+ If no user input was provided, or the input did not match the
+ grammar, the dialog would loop for a maximum of 3 times.
+
+6.3. Other Dialog Languages
+
+ The following example requests that a VoiceXML dialog is started:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart dialogid="d2"
+ connectionid="7HDY839:HJKSkyHS"
+ type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s">
+ <params>
+ <param name="prompt1">nfs://nas01/media1.3gp</param>
+ <param name="prompt2">nfs://nas01/media2.3gp</param>
+ </params>
+ </dialogstart>
+ </mscivr>
+
+
+
+
+McGlashan, et al. Standards Track [Page 114]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ If the MS does not support this dialog language, then the response
+ would have the status code 421 (Section 4.5). However, if it does
+ support the VoiceXML dialog language, it would respond with a 200
+ status, activate the VoiceXML dialog, and make the <params> available
+ to the VoiceXML script as described in Section 9.
+
+ When the VoiceXML dialog exits, exit namelist parameters are
+ specified using <params> in the dialogexit event:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <event dialogid="d2">
+ <dialogexit status="1">
+ <params>
+ <param name="username">peter</param>
+ <param name="pin">1234</param>
+ </params>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+6.4. Foreign Namespace Attributes and Elements
+
+ An MS can support attributes and elements from foreign namespaces
+ within the <mscivr> element. For example, the MS could support a
+ <listen> element (in a foreign namespace) for speech recognition by
+ analogy to how <collect> supports DTMF collection.
+
+ In the following example, a prompt and collect request is extended
+ with a <listen> element:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"
+ xmlns:ex="http://www.example.com/mediactrl/extensions/1">
+ <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
+ <dialog>
+ <prompt>
+ <media loc="http://www.example.com/prompt1.wav"/>
+ </prompt>
+ <collect timeout="30s" maxdigits="4"/>
+ <ex:listen maxtimeout="30s" >
+ <ex:grammar src="http://example.org/pin.grxml"/>
+ </ex:listen>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+ In the <mscivr> root element, the xmlns:ex attribute declares that
+ "ex" is associated with the foreign namespace URI
+ "http://www.example.com/mediactrl/extensions/1". The <ex:listen>,
+
+
+
+McGlashan, et al. Standards Track [Page 115]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ its attributes, and child elements are associated with this
+ namespace. This <listen> could be defined so that it activates an
+ SRGS grammar and listens for user input matching the grammar in a
+ similar manner to DTMF collection.
+
+ If an MS receives this request but does not support the <listen>
+ element, then it would send a 431 response:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <response status="431" dialogid="d560"
+ reason="unsupported foreign listen element"/>
+ </mscivr>
+
+ If the MS does support this foreign element, it would send a 200
+ response and start the dialog with speech recognition. When the
+ dialog exits, it provides information about the <listen> execution
+ within <dialogexit>, again using elements in a foreign namespace such
+ as <listeninfo> below:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"
+ xmlns:ex="http://www.example.com/mediactrl/extensions/1">
+ <event dialogid="d560">
+ <dialogexit status="1">
+ <ex:listeninfo speech="1 2 3 4" termmode="match"/>
+ </dialogexit>
+ </event>
+ </mscivr>
+
+ Note that in reply the AS sends a Control Framework 200 response even
+ though the notification event contains an element in a foreign
+ namespace that it might not understand.
+
+7. Security Considerations
+
+ As this Control Package processes XML markup, implementations MUST
+ address the security considerations of [RFC3023].
+
+ Implementations of this Control Package MUST address security,
+ confidentiality, and integrity of messages transported over the
+ Control Channel as described in Section 12 of "Media Control Channel
+ Framework" [RFC6230], including Transport Level Protection, Control
+ Channel Policy Management, and Session Establishment. In addition,
+ implementations MUST address security, confidentiality, and integrity
+ of User Agent sessions with the MS, both in terms of SIP signaling
+ and associated RTP media flow; see [RFC6230] for further details on
+ this topic. Finally, implementations MUST address security,
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 116]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ confidentiality, and integrity of sessions where, following a URI
+ scheme, an MS uploads recordings or retrieves documents and resources
+ (e.g., fetching a grammar document from a web server using HTTPS).
+
+ Adequate transport protection and authentication are critical,
+ especially when the implementation is deployed in open networks. If
+ the implementation fails to correctly address these issues, it risks
+ exposure to malicious attacks, including (but not limited to):
+
+ Denial of Service: An attacker could insert a request message into
+ the transport stream causing specific dialogs on the MS to be
+ terminated immediately. For example, <dialogterminate
+ dialogid="XXXX" immediate="true">, where the value of "XXXX" could
+ be guessed or discovered by auditing active dialogs on the MS
+ using an <audit> request. Likewise, an attacker could impersonate
+ the MS and insert error responses into the transport stream so
+ denying the AS access to package capabilities.
+
+ Resource Exhaustion: An attacker could insert into the Control
+ Channel new request messages (or modify existing ones) with, for
+ instance, <dialogprepare> elements with a very long fetchtimeout
+ attribute and a bogus source URL. At some point, this will
+ exhaust the number of connections that the MS is able to make.
+
+ Phishing: An attacker with access to the Control Channel could
+ modify the "loc" attribute of the <media> element in a dialog to
+ point to some other audio file that had different information from
+ the original. This modified file could include a different phone
+ number for people to call if they want more information or need to
+ provide additional information (such as governmental, corporate,
+ or financial information).
+
+ Data Theft: An attacker could modify a <record> element in the
+ Control Channel so as to add a new recording location:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart>
+ <dialog>
+ <record>
+ <media type="audio/x-wav" loc="(Good URI)"/>
+ <media type="audio/x-wav" loc="(Attacker's URI)"/>
+ </record>
+ </dialog>
+ </dialogstart>
+ </mscivr>
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 117]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ The recorded data would be uploaded to two locations indicated by the
+ "{Good URI}" and the "{Attacker's URI}". This allows the attacker to
+ steal the recorded audio (which could include sensitive or
+ confidential information) without the originator of the request
+ necessarily being aware of the theft.
+
+ The Media Control Channel Framework permits additional security
+ policy management, including resource access and Control Channel
+ usage, to be specified at the Control Package level beyond that
+ specified for the Media Control Channel Framework (see Section 12.3
+ of [RFC6230]).
+
+ Since creation of IVR dialogs is associated with media processing
+ resources (e.g., DTMF detectors, media playback and recording, etc.)
+ on the MS, the security policy for this Control Package needs to
+ address how such dialogs are securely managed across more than one
+ Control Channel. Such a security policy is only useful for secure,
+ confidential, and integrity-protected channels. The identity of
+ Control Channels is determined by the channel identifier, i.e., the
+ value of the cfw-id attribute in the SDP and 'Dialog-ID' header in
+ the channel protocol (see [RFC6230]). Channels are the same if they
+ have the same identifier; otherwise, they are different. This
+ Control Package imposes the following additional security policies:
+
+ Responses: The MS MUST only send a response to a dialog management
+ or audit request using the same Control Channel as the one used to
+ send the request.
+
+ Notifications: The MS MUST only send notification events for a
+ dialog using the same Control Channel as it received the request
+ creating the dialog.
+
+ Auditing: The MS MUST only provide audit information about dialogs
+ that have been created on the same Control Channel as the one upon
+ the <audit> request is sent.
+
+ Rejection: The MS SHOULD reject requests to audit or manipulate an
+ existing dialog on the MS if the channel is not the same as the
+ one used when the dialog was created. The MS rejects a request by
+ sending a Control Framework 403 response (see Section 7.4 and
+ Section 12.3 of [RFC6230]). For example, if a channel with
+ identifier 'cfw1234' has been used to send a request to create a
+ particular dialog and the MS receives on channel 'cfw98969' a
+ request to audit or terminate the dialog, then the MS sends a 403
+ framework response.
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 118]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ There can be valid reasons why an implementation does not reject an
+ audit or dialog manipulation request on a different channel from the
+ one that created the dialog. For example, a system administrator
+ might require a separate channel to audit dialog resources created by
+ system users and to terminate dialogs consuming excessive system
+ resources. Alternatively, a system monitor or resource broker might
+ require a separate channel to audit dialogs managed by this package
+ on an MS. However, the full implications need to be understood by
+ the implementation and carefully weighted before accepting these
+ reasons as valid. If the reasons are not valid in their particular
+ circumstances, the MS rejects such requests.
+
+ There can also be valid reasons for 'channel handover' including high
+ availability support or where one AS needs to take over management of
+ dialogs after the AS that created them has failed. This could be
+ achieved by the Control Channels using the same channel identifier,
+ one after another. For example, assume a channel is created with the
+ identifier 'cfw1234' and the channel is used to create dialogs on the
+ MS. This channel (and associated SIP dialog) then terminates due to
+ a failure on the AS. As permitted by the Control Framework, the
+ channel identifier 'cfw1234' could then be reused so that another
+ channel is created with the same identifier 'cfw1234', allowing it to
+ 'take over' management of the dialogs on the MS. Again, the
+ implementation needs to understand the full implications and
+ carefully weight them before accepting these reasons as valid. If
+ the reasons are not valid for their particular circumstances, the MS
+ uses the appropriate SIP mechanisms to prevent session establishment
+ when the same channel identifier is used in setting up another
+ Control Channel (see Section 4 of [RFC6230]).
+
+8. IANA Considerations
+
+ IANA has registered a new Media Control Channel Framework Package, a
+ new XML namespace, a new XML schema, and a new MIME type.
+
+ IANA has further created a new registry for IVR prompt variable
+ types.
+
+8.1. Control Package Registration
+
+ This section registers a new Media Control Channel Framework package,
+ per the instructions in Section 13.1 of [RFC6230].
+
+ Package Name: msc-ivr/1.0
+ Published Specification(s): RFC 6231
+ Person & email address to contact for further information:
+ IETF MEDIACTRL working group (mediactrl@ietf.org),
+ Scott McGlashan (smcg.stds01@mcglashan.org).
+
+
+
+McGlashan, et al. Standards Track [Page 119]
+
+RFC 6231 IVR Control Package May 2011
+
+
+8.2. URN Sub-Namespace Registration
+
+ This section registers a new XML namespace,
+ "urn:ietf:params:xml:ns:msc-ivr", per the guidelines in RFC 3688
+ [RFC3688].
+
+ URI: urn:ietf:params:xml:ns:msc-ivr
+ Registrant Contact: IETF MEDIACTRL working group (mediactrl@ietf.org),
+ Scott McGlashan (smcg.stds01@mcglashan.org).
+ XML:
+ BEGIN
+ <?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Media Control Channel Framework IVR
+ Package attributes</title>
+ </head>
+ <body>
+ <h1>Namespace for Media Control Channel
+ Framework IVR Package attributes</h1>
+ <h2>urn:ietf:params:xml:ns:msc-ivr</h2>
+ <p>See <a href="http://www.rfc-editor.org/rfc/rfc6231.txt">
+ RFC 6231</a>.</p>
+ </body>
+ </html>
+ END
+
+8.3. XML Schema Registration
+
+ This section registers an XML schema as per the guidelines in RFC
+ 3688 [RFC3688].
+
+ URI: urn:ietf:params:xml:ns:msc-ivr
+ Registrant Contact: IETF MEDIACTRL working group (mediactrl@ietf.org),
+ Scott McGlashan (smcg.stds01@mcglashan.org).
+ Schema: The XML for this schema can be found in Section 5 of this
+ document.
+
+8.4. MIME Media Type Registration for application/msc-ivr+xml
+
+ This section registers the application/msc-ivr+xml MIME type.
+
+ Type name: application
+
+ Subtype name: msc-ivr+xml
+
+
+
+
+McGlashan, et al. Standards Track [Page 120]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Required parameters: (none)
+
+ Optional parameters: charset
+ Indicates the character encoding of enclosed XML. Default is
+ UTF-8.
+
+ Encoding considerations: Uses XML, which can employ 8-bit
+ characters, depending on the character encoding used. See RFC
+ 3023 [RFC3023], Section 3.2.
+
+ Security considerations: No known security considerations outside
+ of those provided by the Media Control Channel Framework IVR
+ Package.
+
+ Interoperability considerations: This content type provides
+ constructs for the Media Control Channel Framework IVR package.
+
+ Published specification: RFC 6231
+
+ Applications that use this media type: Implementations of
+ the Media Control Channel Framework IVR package.
+
+ Additional information:
+ Magic number(s): (none)
+ File extension(s): (none)
+ Macintosh file type code(s): (none)
+
+ Person & email address to contact for further information:
+ Scott McGlashan <smcg.stds01@mcglashan.org>
+
+ Intended usage: LIMITED USE
+
+ Author/Change controller: The IETF
+
+ Other information: None.
+
+8.5. IVR Prompt Variable Type Registration Information
+
+ This specification establishes an IVR Prompt Variable Type registry
+ for Control Packages and initiates its population as follows. New
+ entries in this registry must be published in an RFC (either as an
+ IETF submission or RFC Editor submission), using the IANA policy
+ [RFC5226] "RFC Required".
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 121]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ Variable Type Control Package Reference
+ ------------- --------------- ---------
+ date msc-ivr/1.0 [RFC6231]
+ time msc-ivr/1.0 [RFC6231]
+ digits msc-ivr/1.0 [RFC6231]
+
+ The following information MUST be provided in an RFC in order to
+ register a new prompt variable type:
+
+ Variable Type: The value for the <variable> type attribute
+ (Section 4.3.1.1.1). The RFC MUST specify permitted values (if
+ any) for the format attribute of <variable> and how the value
+ attribute is rendered for different values of the format
+ attribute. The RFC MUST NOT weaken but MAY strengthen the valid
+ values of <variable> attributes defined in Section 4.3.1.1.1 of
+ this specification.
+
+ Reference: The RFC number in which the variable type is registered.
+
+ Control Package: The Control Package associated with the IVR
+ variable type.
+
+ Person & address to contact for further information:
+
+9. Using VoiceXML as a Dialog Language
+
+ The IVR Control Package allows, but does not require, the MS to
+ support other dialog languages by referencing an external dialog
+ document. This section provides MS implementations that support the
+ VoiceXML dialog language ([VXML20], [VXML21], [VXML30]) with
+ additional details about using these dialogs in this package. This
+ section is normative for an MS that supports the VoiceXML dialog
+ language.
+
+ This section covers preparing (Section 9.1), starting (Section 9.2),
+ terminating (Section 9.3), and exiting (Section 9.4) VoiceXML dialogs
+ as well as handling VoiceXML call transfer (Section 9.5).
+
+9.1. Preparing a VoiceXML Dialog
+
+ A VoiceXML dialog is prepared by sending the MS a request containing
+ a <dialogprepare> element (Section 4.2.1). The type attribute is set
+ to "application/voicexml+xml" and the src attribute to the URI of the
+ VoiceXML document that is to be prepared by the MS. For example:
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 122]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogprepare type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s"/>
+ </mscivr>
+
+ The VoiceXML dialog environment uses the <dialogprepare> request as
+ an opportunity to fetch and validate the initial document indicated
+ by the src attribute along with any resources referenced in the
+ VoiceXML document marked as prefetchable. The maxage and maxstale
+ attributes, if specified, control how the initial VoiceXML document
+ is fetched using HTTP (see [RFC2616]). Note that the fetchtimeout
+ attribute is not defined in VoiceXML for an initial document, but the
+ MS MUST support this attribute in its VoiceXML environment.
+
+ If a <params> child element of <dialogprepare> is specified, then the
+ MS MUST map the parameter information into a VoiceXML session
+ variable object as described in Section 9.2.3.
+
+ The success or failure of the VoiceXML document preparation is
+ reported in the MS response. For example, if the VoiceXML document
+ cannot be retrieved, then a 409 error response is returned. If the
+ document is syntactically invalid according to VoiceXML, then a 400
+ response is returned. If successful, the response includes a
+ dialogid attribute whose value the AS can use in <dialogstart>
+ element to start the prepared dialog.
+
+9.2. Starting a VoiceXML Dialog
+
+ A VoiceXML dialog is started by sending the MS a request containing a
+ <dialogstart> element (Section 4.2.2). If a VoiceXML dialog has
+ already been prepared using <dialogprepare>, then the MS starts the
+ dialog indicated by the prepareddialogid attribute. Otherwise, a new
+ VoiceXML dialog can be started by setting the type attribute to
+ "application/voicexml+xml" and the src attribute to the URI of the
+ VoiceXML document. For example:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="ssd3r3:sds345b"
+ type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s"/>
+ </mscivr>
+
+ The maxage and maxstale attributes, if specified, control how the
+ initial VoiceXML document is fetched using HTTP (see [RFC2616]).
+ Note that the fetchtimeout attribute is not defined in VoiceXML for
+ an initial document, but the MS MUST support this attribute in its
+
+
+
+McGlashan, et al. Standards Track [Page 123]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ VoiceXML environment. Note also that support for <dtmfsub>
+ subscriptions (Section 4.2.2.1.1) and their associated dialog
+ notification events is not defined in VoiceXML. If such a
+ subscription is specified in a <dialogstart> request, then the MS
+ sends a 439 error response (see Section 4.5).
+
+ The success or failure of starting a VoiceXML dialog is reported in
+ the MS response as described in Section 4.2.2.
+
+ When the MS starts a VoiceXML dialog, the MS MUST map session
+ information into a VoiceXML session variable object. There are 3
+ types of session information: protocol information (Section 9.2.1),
+ media stream information (Section 9.2.2), and parameter information
+ (Section 9.2.3).
+
+9.2.1. Session Protocol Information
+
+ If the connectionid attribute is specified, the MS assigns protocol
+ information from the SIP dialog associated with the connection to the
+ following session variables in VoiceXML:
+
+ session.connection.local.uri Evaluates to the SIP URI specified in
+ the 'To:' header of the initial INVITE.
+
+ session.connection.remote.uri Evaluates to the SIP URI specified in
+ the 'From:' header of the initial INVITE.
+
+ session.connection.originator Evaluates to the value of
+ session.connection.remote (MS receives inbound connections but
+ does not create outbound connections).
+
+ session.connection.protocol.name Evaluates to "sip". Note that this
+ is intended to reflect the use of SIP in general, and does not
+ distinguish between whether the connection accesses the MS via SIP
+ or SIP Secure (SIPS) procedures.
+
+ session.connection.protocol.version Evaluates to "2.0".
+
+ session.connection.redirect This array is populated by information
+ contained in the 'History-Info' header [RFC4244] in the initial
+ INVITE or is otherwise undefined. Each entry (hi-entry) in the
+ 'History-Info' header is mapped, in the order it appeared in the
+ 'History-Info' header, into an element of the
+ session.connection.redirect array. Properties of each element of
+ the array are determined as follows:
+
+ uri Set to the hi-targeted-to-uri value of the History-Info
+ entry
+
+
+
+McGlashan, et al. Standards Track [Page 124]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ pi Set to 'true' if hi-targeted-to-uri contains a
+ 'Privacy=history' parameter, or if the INVITE 'Privacy'
+ header includes 'history'; 'false' otherwise
+
+ si Set to the value of the 'si' parameter if it exists;
+ undefined otherwise
+
+ reason Set verbatim to the value of the 'Reason' parameter of hi-
+ targeted-to-uri
+
+ session.connection.aai Evaluates to the value of a SIP header with
+ the name "aai" if present; undefined otherwise.
+
+ session.connection.protocol.sip.requesturi This is an associative
+ array where the array keys and values are formed from the URI
+ parameters on the SIP Request-URI of the initial INVITE. The
+ array key is the URI parameter name. The corresponding array
+ value is obtained by evaluating the URI parameter value as a
+ string. In addition, the array's toString() function returns the
+ full SIP Request-URI.
+
+ session.connection.protocol.sip.headers This is an associative array
+ where each key in the array is the non-compact name of a SIP
+ header in the initial INVITE converted to lowercase (note the case
+ conversion does not apply to the header value). If multiple
+ header fields of the same field name are present, the values are
+ combined into a single comma-separated value. Implementations
+ MUST at a minimum include the 'Call-ID' header and MAY include
+ other headers. For example,
+ session.connection.protocol.sip.headers["call-id"] evaluates to
+ the Call-ID of the SIP dialog.
+
+ If a conferenceid attribute is specified, then the MS populates the
+ following session variables in VoiceXML:
+
+ session.conference.name Evaluates to the value of the conferenceid
+ attribute.
+
+9.2.2. Session Media Stream Information
+
+ The media streams of the connection or conference to use for the
+ dialog are described in Section 4.2.2, including use of <stream>
+ elements (Section 4.2.2.2) if specified. The MS maps media stream
+ information into the VoiceXML session variable
+ session.connection.protocol.sip.media for a connection, and
+ session.conference.media for a conference. In both variables, the
+ value of the variable is an array where each array element is an
+ object with the following properties:
+
+
+
+McGlashan, et al. Standards Track [Page 125]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ type This required property indicates the type of the media
+ associated with the stream (see Section 4.2.2.2 <stream> type
+ attribute definition).
+
+ direction This required property indicates the directionality of the
+ media relative to the endpoint of the dialog (see Section 4.2.2.2
+ <stream> direction attribute definition).
+
+ format This property is optional. If defined, the value of the
+ property is an array. Each array element is an object that
+ specifies information about one format of the media stream. The
+ object contains at least one property called name whose value is
+ the subtype name of the media format [RFC4855]. Other properties
+ may be defined with string values; these correspond to required
+ and, if defined, optional parameters of the format.
+
+ As a consequence of this definition, when a connectionid is specified
+ there is an array entry in session.connection.protocol.sip.media for
+ each media stream used by the VoiceXML dialog. For an example,
+ consider a connection with bidirectional G.711 mu-law audio sampled
+ at 8kHz where the dialog is started with
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="ssd3r3:sds345b"
+ type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s">
+ <stream media="audio" direction="recvonly"/>
+ </dialogstart>
+ </mscivr>
+
+ In this case, session.connection.protocol.sip.media[0].type evaluates
+ to "audio", session.connection.protocol.sip.media[0].direction
+ evaluates to "recvonly" (i.e., the endpoint only receives media from
+ the dialog -- the endpoint does not send media to the dialog),
+ session.connection.protocol.sip.media[0].format[0].name evaluates to
+ "PCMU", and session.connection.protocol.sip.media[0].format[0].rate
+ evaluates to "8000".
+
+ Note that the session variable is updated if the connection or
+ conference media session characteristics for the VoiceXML dialog
+ change (e.g., due to a SIP re-INVITE).
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 126]
+
+RFC 6231 IVR Control Package May 2011
+
+
+9.2.3. Session Parameter Information
+
+ Parameter information is specified in the <params> child element of
+ <dialogprepare> and <dialogstart> elements, where each parameter is
+ specified using a <param> element. The MS maps parameter information
+ into VoiceXML session variables as follows:
+
+ session.values This is an associative array mapped to the <params>
+ element. It is undefined if no <params> element is specified. If
+ a <params> element is specified in both <dialogprepare> and
+ <dialogstart> elements for the same dialog, then the array is
+ first initialized with the <params> specified in the
+ <dialogprepare> element and then updated with the <params>
+ specified in the <dialogstart> element; in cases of conflict, the
+ <dialogstart> parameter value take priority. Array keys and
+ values are formed from <param> children of the <params> element.
+ Each array key is the value of the name attribute of a <param>
+ element. If the same name is used in more than one <param>
+ element, then the array key is associated with the last <param> in
+ document order. The corresponding value for each key is an object
+ with two required properties: a "type" property evaluating to the
+ value of the type attribute, and a "content" property evaluating
+ to the content of the <param>. In addition, this object's
+ toString() function returns the value of the "content" property as
+ a string.
+
+ For example, a VoiceXML dialog started with one parameter:
+
+ <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
+ <dialogstart connectionid="ssd3r3:sds345b"
+ type="application/voicexml+xml"
+ src="http://www.example.com/mydialog.vxml"
+ fetchtimeout="15s">
+ <params>
+ <param name="mode">playannouncement</param>
+ </params>
+ </dialogstart>
+ </mscivr>
+
+ In this case, session.values would be defined with one item in the
+ array where session.values['mode'].type evaluates to "text/plain"
+ (the default value), session.values['mode'].content evaluates to
+ "playannouncement", and session.values['mode'].toString() also
+ evaluates to "playannouncement".
+
+ The MS sends an error response (see Section 4.2.2) if a <param> is
+ not supported by the MS (e.g., the parameter type is not supported).
+
+
+
+
+McGlashan, et al. Standards Track [Page 127]
+
+RFC 6231 IVR Control Package May 2011
+
+
+9.3. Terminating a VoiceXML Dialog
+
+ When the MS receives a request with a <dialogterminate> element
+ (Section 4.2.3), the MS throws a 'connection.disconnect.hangup' event
+ into the specified VoiceXML dialog. Note that if the immediate
+ attribute has the value true, then the MS MUST NOT return <params>
+ information when the VoiceXML dialog exits (even if the VoiceXML
+ dialog provides such information) -- see Section 9.4.
+
+ If the connection or conference associated with the VoiceXML dialog
+ terminates, then the MS throws a 'connection.disconnect.hangup' event
+ into the specified VoiceXML dialog.
+
+9.4. Exiting a VoiceXML Dialog
+
+ The MS sends a <dialogexit> notification event (Section 4.2.5.1) when
+ the VoiceXML dialog is complete, has been terminated, or exits due to
+ an error. The <dialogexit> status attribute specifies the status of
+ the VoiceXML dialog when it exits and its <params> child element
+ specifies information, if any, returned from the VoiceXML dialog.
+
+ A VoiceXML dialog exits when it processes a <disconnect> element, an
+ <exit> element, or an implicit exit according to the VoiceXML form
+ interpretation algorithm (FIA). If the VoiceXML dialog executes a
+ <disconnect> and then subsequently executes an <exit> with namelist
+ information, the namelist information from the <exit> element is
+ discarded.
+
+ The MS reports namelist variables in the <params> element of the
+ <dialogexit>. Each <param> reports on a namelist variable. The MS
+ set the <param> name attribute to the name of the VoiceXML variable.
+ The MS sets the <param> type attribute according to the type of the
+ VoiceXML variable. The MS sets the <param> type to 'text/plain' when
+ the VoiceXML variable is a simple ECMAScript value. If the VoiceXML
+ variable is a recording, the MS sets the <param> type to the MIME
+ media type of the recording and encodes the recorded content as CDATA
+ in the <param> (see Section 4.2.6.1 for an example). If the VoiceXML
+ variable is a complex ECMAScript value (e.g., object, array, etc.),
+ the MS sets the <param> type to 'application/json' and converts the
+ variable value to its JSON value equivalent [RFC4627]. The behavior
+ resulting from specifying an ECMAScript object with circular
+ references is not defined.
+
+ If the expr attribute is specified on the VoiceXML <exit> element
+ instead of the namelist attribute, the MS creates a <param> element
+ with the reserved name '__exit'. If the value is an ECMAScript
+ literal, the <param> type is 'text/plain' and the content is the
+ literal value. If the value is a variable, the <param> type and
+
+
+
+McGlashan, et al. Standards Track [Page 128]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ content are set in the same way as a namelist variable; for example,
+ an expr attribute referencing a variable with a simple ECMAScript
+ value has the type 'text/plain' and the content is set to the
+ ECMAScript value. To allow the AS to differentiate between a
+ <dialogexit> notification event resulting from a VoiceXML
+ <disconnect> from one resulting from an <exit>, the MS creates a
+ <param> with the reserved name '__reason', the type 'text/plain', and
+ a value of "disconnect" (without brackets) to reflect the use of
+ VoiceXML's <disconnect> element, and the value of "exit" (without
+ brackets) to an explicit <exit> in the VoiceXML dialog. If the
+ VoiceXML session terminates for other reasons (such as encountering
+ an error), this parameter MAY be omitted or take on platform-specific
+ values prefixed with an underscore.
+
+ Table 2 provides some examples of VoiceXML <exit> usage and the
+ corresponding <params> element in the <dialogexit> notification
+ event. It assumes the following VoiceXML variable names and values:
+ userAuthorized=true, pin=1234, and errors=0. The <param> type
+ attributes ('text/plain') are omitted for clarity.
+
+ +------------------------+------------------------------------------+
+ | <exit> Usage | <params> Result |
+ +------------------------+------------------------------------------+
+ | <exit> | <params> <param |
+ | | name="__reason">exit</param> </params> |
+ | <exit expr="5"> | <params> <param |
+ | | name="__reason">exit</param> <param |
+ | | name="__exit">5</param> </params> |
+ | <exit expr="'done'"> | <params> <param |
+ | | name="__reason">exit</param> <param |
+ | | name="__exit">'done'</param> </params> |
+ | <exit | <params> <param |
+ | expr="userAuthorized"> | name="__reason">exit</param> <param |
+ | | name="__exit">true</param> </params> |
+ | <exit namelist="pin | <params> <param |
+ | errors"> | name="__reason">exit</param> <param |
+ | | name="pin">1234</param> <param |
+ | | name="errors">0</param> </params> |
+ +------------------------+------------------------------------------+
+
+ Table 2: VoiceXML <exit> Mapping Examples
+
+9.5. Call Transfer
+
+ While VoiceXML is at its core a dialog language, it also provides
+ optional call transfer capability. It is NOT RECOMMENDED to use
+ VoiceXML's call transfer capability in networks involving application
+ servers. Rather, the AS itself can provide call routing
+
+
+
+McGlashan, et al. Standards Track [Page 129]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ functionality by taking signaling actions based on the data returned
+ to it, either through VoiceXML's own data submission mechanisms or
+ through the mechanism described in Section 9.4. If the MS encounters
+ a VoiceXML dialog requesting call transfer capability, the MS SHOULD
+ raise an error event in the VoiceXML dialog execution context: an
+ error.unsupported.transfer.blind event if blind transfer is
+ requested, error.unsupported.transfer.bridge if bridge transfer is
+ requested, or error.unsupported.transfer.consultation if consultation
+ transfer is requested.
+
+10. Contributors
+
+ Asher Shiratzky provided valuable support and contributions to the
+ early versions of this document.
+
+ The authors would like to thank the IVR design team consisting of
+ Roni Even, Lorenzo Miniero, Adnan Saleem, Diego Besprosvan, Mary
+ Barnes, and Steve Buko, who provided valuable feedback, input, and
+ text to this document.
+
+11. Acknowledgments
+
+ The authors would like to thank Adnan Saleem, Gene Shtirmer, Dave
+ Burke, Dan York, Steve Buko, Jean-Francois Bertrand, Henry Lum, and
+ Lorenzo Miniero for expert reviews of this work.
+
+ Ben Campbell carried out the RAI expert review on this specification
+ and provided a great deal of invaluable input. Donald Eastlake
+ carried out a thorough security review.
+
+12. References
+
+12.1. Normative References
+
+ [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
+ Extensions (MIME) Part One: Format of Internet Message
+ Bodies", RFC 2045, November 1996.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
+ Languages", BCP 18, RFC 2277, January 1998.
+
+ [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
+ Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
+ Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
+
+
+
+
+McGlashan, et al. Standards Track [Page 130]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
+
+ [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
+ Types", RFC 3023, January 2001.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ January 2004.
+
+ [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66,
+ RFC 3986, January 2005.
+
+ [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and
+ Registration Procedures", BCP 13, RFC 4288, December 2005.
+
+ [RFC4574] Levin, O. and G. Camarillo, "The Session Description
+ Protocol (SDP) Label Attribute", RFC 4574, August 2006.
+
+ [RFC4627] Crockford, D., "The application/json Media Type for
+ JavaScript Object Notation (JSON)", RFC 4627, July 2006.
+
+ [RFC4647] Phillips, A. and M. Davis, "Matching of Language Tags",
+ BCP 47, RFC 4647, September 2006.
+
+ [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
+ IANA Considerations Section in RFCs", BCP 26, RFC 5226,
+ May 2008.
+
+ [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", STD 68, RFC 5234, January 2008.
+
+ [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying
+ Languages", BCP 47, RFC 5646, September 2009.
+
+ [RFC6230] Boulton, C., Melanchuk, T., and S. McGlashan, "Media
+ Control Channel Framework", RFC 6230, May 2011.
+
+ [SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar
+ Specification Version 1.0", W3C Recommendation,
+ March 2004.
+
+ [VXML20] McGlashan, S., Burnett, D., Carter, J., Danielsen, P.,
+ Ferrans, J., Hunt, A., Lucas, B., Porter, B., Rehor, K.,
+ and S. Tryphonas, "Voice Extensible Markup Language
+ (VoiceXML) Version 2.0", W3C Recommendation, March 2004.
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 131]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ [VXML21] Oshry, M., Auburn, RJ., Baggia, P., Bodell, M., Burke, D.,
+ Burnett, D., Candell, E., Carter, J., McGlashan, S., Lee,
+ A., Porter, B., and K. Rehor, "Voice Extensible Markup
+ Language (VoiceXML) Version 2.1", W3C Recommendation,
+ June 2007.
+
+ [W3C.REC-SMIL2-20051213]
+ Jansen, J., Layaida, N., Michel, T., Grassel, G.,
+ Koivisto, A., Bulterman, D., Mullender, S., and D. Zucker,
+ "Synchronized Multimedia Integration Language (SMIL 2.1)",
+ World Wide Web Consortium Recommendation REC-SMIL2-
+ 20051213, December 2005,
+ <http://www.w3.org/TR/2005/REC-SMIL2-20051213>.
+
+ [XML] Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E.,
+ and F. Yergeau, "Extensible Markup Language (XML) 1.0
+ (Third Edition)", W3C Recommendation, February 2004.
+
+ [XMLSchema:Part2]
+ Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes
+ Second Edition", W3C Recommendation, October 2004.
+
+12.2. Informative References
+
+ [CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version
+ 1.0", W3C Candidate Recommendation (work in progress),
+ April 2010.
+
+ [H.248.9] "Gateway control protocol: Advanced media server
+ packages", ITU-T Recommendation H.248.9.
+
+ [IANA] IANA, "RTP Payload Types", available
+ from http://www.iana.org.
+
+ [MIME.mediatypes]
+ IANA, "MIME Media Types", available
+ from http://www.iana.org.
+
+ [MIXER-CP]
+ McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer
+ Control Package for the Media Control Channel Framework",
+ Work in Progress, January 2011.
+
+ [RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio
+ Package", RFC 2897, August 2000.
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 132]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+ A., Peterson, J., Sparks, R., Handley, M., and E.
+ Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+ June 2002.
+
+ [RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network
+ Media Services with SIP", RFC 4240, December 2005.
+
+ [RFC4244] Barnes, M., "An Extension to the Session Initiation
+ Protocol (SIP) for Request History Information", RFC 4244,
+ November 2005.
+
+ [RFC4267] Froumentin, M., "The W3C Speech Interface Framework Media
+ Types: application/voicexml+xml, application/ssml+xml,
+ application/srgs, application/srgs+xml, application/
+ ccxml+xml, and application/pls+xml", RFC 4267,
+ November 2005.
+
+ [RFC4281] Gellens, R., Singer, D., and P. Frojdh, "The Codecs
+ Parameter for "Bucket" Media Types", RFC 4281,
+ November 2005.
+
+ [RFC4730] Burger, E. and M. Dolly, "A Session Initiation Protocol
+ (SIP) Event Package for Key Press Stimulus (KPML)",
+ RFC 4730, November 2006.
+
+ [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF
+ Digits, Telephony Tones, and Telephony Signals", RFC 4733,
+ December 2006.
+
+ [RFC4855] Casner, S., "Media Type Registration of RTP Payload
+ Formats", RFC 4855, February 2007.
+
+ [RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server
+ Control Markup Language (MSCML) and Protocol", RFC 5022,
+ September 2007.
+
+ [RFC5167] Dolly, M. and R. Even, "Media Server Control Protocol
+ Requirements", RFC 5167, March 2008.
+
+ [RFC5707] Saleem, A., Xin, Y., and G. Sharratt, "Media Server Markup
+ Language (MSML)", RFC 5707, February 2010.
+
+ [VXML30] McGlashan, S., Burnett, D., Akolkar, R., Auburn, RJ.,
+ Baggia, P., Barnett, J., Bodell, M., Carter, J., Oshry,
+ M., Rehor, K., Young, M., and R. Hosn, "Voice Extensible
+ Markup Language (VoiceXML) Version 3.0", W3C Working
+ Draft, August 2010.
+
+
+
+McGlashan, et al. Standards Track [Page 133]
+
+RFC 6231 IVR Control Package May 2011
+
+
+ [XCON-DATA-MODEL]
+ Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen,
+ "Conference Information Data Model for Centralized
+ Conferencing (XCON)", Work in Progress, April 2011.
+
+Authors' Addresses
+
+ Scott McGlashan
+ Hewlett-Packard
+
+ EMail: smcg.stds01@mcglashan.org
+
+
+ Tim Melanchuk
+ Rainwillow
+
+ EMail: timm@rainwillow.com
+
+
+ Chris Boulton
+ NS-Technologies
+
+ EMail: chris@ns-technologies.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McGlashan, et al. Standards Track [Page 134]
+