< draft-boulton-ivr-control-package-05.txt   draft-boulton-ivr-control-package-06.txt >
Network Working Group C. Boulton Network Working Group C. Boulton
Internet-Draft Avaya Internet-Draft Avaya
Intended status: Standards Track T. Melanchuk Intended status: Standards Track T. Melanchuk
Expires: May 17, 2008 TJM Consulting Expires: August 26, 2008 Rain Willow Communications
S. McGlashan S. McGlashan
Hewlett-Packard Hewlett-Packard
November 14, 2007 February 23, 2008
A Basic Interactive Voice Response (IVR) Control Package for the Session A Basic Interactive Voice Response (IVR) Control Package for the Media
Initiation Protocol (SIP) Control Channel Framework
draft-boulton-ivr-control-package-05 draft-boulton-ivr-control-package-06
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 38 skipping to change at page 1, line 38
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 17, 2008. This Internet-Draft will expire on August 26, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2008).
Abstract Abstract
This document defines a Session Initiation (SIP) Control Package for This document defines a Media Control Channel Framework Package for
basic Interactive Voice Response (IVR) interaction. The control of basic Interactive Voice Response (IVR) interaction.
Media Servers and their related resources in decomposed network
architectures plays an important role in various Next Generation
Networks. This Control Package provides IVR functionality using the
SIP Control Framework.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 6 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 7
3. Control Package Definition . . . . . . . . . . . . . . . . . . 7 3. Control Package Definition . . . . . . . . . . . . . . . . . . 8
3.1. Control Package Name . . . . . . . . . . . . . . . . . . . 7 3.1. Control Package Name . . . . . . . . . . . . . . . . . . . 8
3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 7 3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 8
3.3. Common XML Support . . . . . . . . . . . . . . . . . . . . 7 3.3. Common XML Support . . . . . . . . . . . . . . . . . . . . 9
3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . . 8 3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . . 9
3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 8 3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 9
4. Element Definitions . . . . . . . . . . . . . . . . . . . . . 9 4. Dialog Management Element Definitions . . . . . . . . . . . . 11
4.1. Requests . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.1. Requests . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 9 4.1.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 12
4.1.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 11 4.1.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 13
4.1.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 13 4.1.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 16
4.2. Responses . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2. Responses . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1. <response> . . . . . . . . . . . . . . . . . . . . . . 13 4.2.1. <response> . . . . . . . . . . . . . . . . . . . . . . 17
4.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 4.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1. <event> . . . . . . . . . . . . . . . . . . . . . . . 16 4.3.1. <event> . . . . . . . . . . . . . . . . . . . . . . . 19
4.4. <data> . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.3.2. <dialogexit> . . . . . . . . . . . . . . . . . . . . . 19
4.5. <subscribe> . . . . . . . . . . . . . . . . . . . . . . . 17 5. Basic IVR Dialog Element Definitions . . . . . . . . . . . . . 21
5. IVR Template Dialogs . . . . . . . . . . . . . . . . . . . . . 19 5.1. <basicivr> . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1. Play Announcement . . . . . . . . . . . . . . . . . . . . 19 5.2. <prompt> . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2. Prompt and Collect . . . . . . . . . . . . . . . . . . . . 26 5.2.1. <media> . . . . . . . . . . . . . . . . . . . . . . . 25
5.3. Prompt and Record . . . . . . . . . . . . . . . . . . . . 37 5.2.2. <variable> . . . . . . . . . . . . . . . . . . . . . . 26
5.4. Status Codes . . . . . . . . . . . . . . . . . . . . . . . 45 5.2.3. <dtmf> . . . . . . . . . . . . . . . . . . . . . . . . 27
5.5. Type Definitions . . . . . . . . . . . . . . . . . . . . . 46 5.3. <collect> . . . . . . . . . . . . . . . . . . . . . . . . 28
6. AS-MS Interaction Examples . . . . . . . . . . . . . . . . . . 48 5.3.1. <grammar> . . . . . . . . . . . . . . . . . . . . . . 31
6.1. Starting an IVR dialog . . . . . . . . . . . . . . . . . . 48 5.4. <record> . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.2. IVR dialog fails to start . . . . . . . . . . . . . . . . 49 5.5. Exit Information . . . . . . . . . . . . . . . . . . . . . 36
6.3. Preparing and starting an IVR dialog . . . . . . . . . . . 49 5.5.1. <promptinfo> . . . . . . . . . . . . . . . . . . . . . 37
6.4. Terminating a dialog immediately . . . . . . . . . . . . . 51 5.5.2. <collectinfo> . . . . . . . . . . . . . . . . . . . . 37
6.5. Terminating a dialog non-immediately . . . . . . . . . . . 51 5.5.3. <recordinfo> . . . . . . . . . . . . . . . . . . . . . 37
7. Template Dialog Examples . . . . . . . . . . . . . . . . . . . 53 6. AS-MS Dialog Interaction Examples . . . . . . . . . . . . . . 39
7.1. playannouncement . . . . . . . . . . . . . . . . . . . . . 53 6.1. Starting an IVR dialog . . . . . . . . . . . . . . . . . . 39
7.2. promptandcollect . . . . . . . . . . . . . . . . . . . . . 54 6.2. IVR dialog fails to start . . . . . . . . . . . . . . . . 39
7.3. promptandrecord . . . . . . . . . . . . . . . . . . . . . 56 6.3. Preparing and starting an IVR dialog . . . . . . . . . . . 40
8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 57 6.4. Terminating a dialog . . . . . . . . . . . . . . . . . . . 41
9. Security Considerations . . . . . . . . . . . . . . . . . . . 62 7. Basic IVR Dialog Examples . . . . . . . . . . . . . . . . . . 43
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 63 7.1. Playing announcements . . . . . . . . . . . . . . . . . . 43
10.1. Control Package Registration . . . . . . . . . . . . . . . 63 7.2. Prompt and collect . . . . . . . . . . . . . . . . . . . . 44
10.2. URN Sub-Namespace Registration . . . . . . . . . . . . . . 63 7.3. Prompt and record . . . . . . . . . . . . . . . . . . . . 45
11. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 64
12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 66 8. Type Definitions . . . . . . . . . . . . . . . . . . . . . . . 46
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 67 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 48
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 68 9.1. msc-ivr-common.xsd . . . . . . . . . . . . . . . . . . . . 48
14.1. Normative References . . . . . . . . . . . . . . . . . . . 68 9.2. msc-ivr-basic.xsd . . . . . . . . . . . . . . . . . . . . 55
14.2. Informative References . . . . . . . . . . . . . . . . . . 68 10. Security Considerations . . . . . . . . . . . . . . . . . . . 67
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 70 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 68
Intellectual Property and Copyright Statements . . . . . . . . . . 71 11.1. Control Package Registration . . . . . . . . . . . . . . . 68
11.2. URN Sub-Namespace Registration . . . . . . . . . . . . . . 68
11.3. Mime Type Registration . . . . . . . . . . . . . . . . . . 68
12. Change Summary . . . . . . . . . . . . . . . . . . . . . . . . 69
13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 72
14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 73
15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 74
15.1. Normative References . . . . . . . . . . . . . . . . . . . 74
15.2. Informative References . . . . . . . . . . . . . . . . . . 74
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 76
Intellectual Property and Copyright Statements . . . . . . . . . . 77
1. Introduction 1. Introduction
The SIP Control Framework [SIPCF] provides a generic approach for The Media Control Channel Framework [MCCF] provides a generic
establishment and reporting capabilities of remotely initiated approach for establishment and reporting capabilities of remotely
commands. The Framework utilizes many functions provided by the initiated commands. The Framework utilizes many functions provided
Session Initiation Protocol [RFC3261] (SIP) for the rendezvous and by the Session Initiation Protocol [RFC3261] (SIP) for the rendezvous
establishment of a reliable channel for control interactions. The and establishment of a reliable channel for control interactions.
Control Framework also introduces the concept of a Control Package. The Control Framework also introduces the concept of a Control
A Control Package is an explicit usage of the Control Framework for a Package. A Control Package is an explicit usage of the Control
particular interaction set. This specification defines a package for Framework for a particular interaction set. This document defines a
basic IVR. Control Package for basic IVR dialogs.
The scope of the package is control of media server functions for This package has been designed to satisfy the IETF MediaCtrl
basic interactive media (e.g. play a prompt, collecting DTMF, requirements ([I-D.ietf-mediactrl-requirements]) by building upon two
recording user input) as well as notifications related to these major approaches to IVR dialog design. These approaches address a
functions. wide range of IVR use cases and are used in many applications which
are extensively deployed today.
These functions and notifications are defined as messages in XML First, the package is designed to provide the major IVR functionality
[XML]. The message use XML elements for preparing, starting and of SIP Media Server languages such as netann ([RFC4240]), MSCML
stopping dialogs, as well as elements for responses and notifications ([RFC5022]) and MSML ([MSML]) which themselves build upon more
([CCXML10], [MSML] and [MSCP]). traditional non-SIP languages ([H.248.9], [RFC2897]). A key
differentiator is that this package provides the functionality using
the Media Control Channel Framework.
This basic IVR package uses template dialogs to provide IVR Second, its design is aligned with key concepts in W3C Voice Browser
functionality. Three basicivr template dialogs are defined: languages. The key dialog management mechanism is closely aligned
with CCXML ([CCXML10]). The basic dialog functionality in this
package can be 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, we expect to see further
alignment, especially in providing a set of basic independent
primitive elements (such as prompt, collect and record) which can be
re-used in different dialog languages.
playannouncement: a dialog to play one or more prompts to the user By reusing and building upon design patterns from these approaches to
IVR languages, this package is intended to provide a foundation which
is familiar to current IVR developers and sufficient for 'basic' IVR
applications, as well as a path to other languages - including
control packages which extend this package - which address more
advanced applications.
promptandcollect: a dialog to prompt the user and collect their The scope of this package is 'basic' IVR functionality of a media
input server which includes:
promptandrecord: a dialog to prompt the user and record their input o playing one or more media resources as a prompt to the user
Template dialogs are intended to provide basic IVR functionality o collecting DTMF input from the user according to a grammar
([H.248.9], [RFC4240], [MSML], [RFC2897] and [RFC5022]). The
template approach follows previous approaches in that it provides IVR
functionality which is commonly required for applications. It
differs in that the functionality is expressed in XML using a
reference to the template dialog, and parameters expressed in a
simple XML data structure. This is a lightweight approach since the
contents of the dialog itself does not need to be transported over
the control channel (or fetched from an external source), only a
template reference plus configuration data is required. From the
developer's perspective, this simplifies application development:
they do not need to write their IVR dialog using custom XML elements,
they only need to reference the template dialog and, if required,
populate a simple XML data structure to pass configuration data.
To use a template dialog, the AS developer references it by name in o recording user media input
an XML message for preparing or starting a dialog; for example
<dialogstart src="basicivr:promptandrecord"/>. The XML message may
also contain template input parameters in a <data> element to
configure specific behavior defined by the template dialog; e.g.
using "prompts" with the value "http://www.example.com/welcome.wav".
If the dialog starts successfully, a <response status="200"/> is
returned. When the dialog is completed, the MS returns template
output parameters in a dialogexit <event> notification to the AS.
The implementation of template dialogs requires only that they adhere Out of scope of this package are more advanced functions including
to the syntax and semantics of templates described in this document. ASR (Automatic Speech Recognition), TTS (Text-to-Speech), VoiceXML,
fax and media transformation. Such functionality may be addressed by
extension packages.
Other control packages MAY be defined which extend the capabilities This functionality of this package is defined by messages, containing
of the templates dialogs defined in this document. Such control XML [XML] elements, transported using the Media Control Channel
packages MUST respect the syntax and semantics of this control Framework. The XML elements can be divided into two types: dialog
package. management elements; and carried within those, elements which define
the specific IVR operations for the dialog.
This document specifies how the basic IVR control package fulfils the Dialog management elements are designed to manage the general
requirements of the SIP Control Framework control packages lifecycle of a dialog. Elements are provided for preparing a dialog,
(Section 3), which XML elements are defined by the package starting the dialog on a conference or connection, and terminating
(Section 4), the template dialog definitions (Section 5) as well as execution of a dialog. Each of these elements is contained in a
providing examples (Section 6, Section 7) and an XML schema Media Control Channel Framework CONTROL message sent to the media
(Section 8). server. When the appropriate action has been executed, the media
server sends a REPORT message (or a 200 if it can execute in time)
with a response element indicating whether the operation was
successful or not (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 may send further event
notifications in a framework CONTROL message. This package defines
one event notification, namely a dialogexit event indicating that the
dialog has exited. If the dialog has executed successful, 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.
Specific dialog types are referenced or contained within dialog
management elements for preparing and starting dialogs. This package
defines a basic IVR dialog type which contains child elements for
playing prompts to the user, collects DTMF input from the user and
recording media input from the user. The child elements can co-occur
in the basic IVR dialog type so as to provide 'play announcement',
'prompt and collect' as well as 'prompt and record' functionality.
Implementation of this control package MUST adhere to the syntax and
semantics of XML elements described in this document. In cases where
there is a difference in constraints between the XML schema and the
textual description of elements, the textual definition takes
priority.
Other control packages MAY extend this package. Two extension points
are RECOMMENDED:
1. Retaining the dialog management capability but extending the
basic IVR dialog type by adding new capabilities. For example,
adding speech recognition capability.
2. Extending the dialog management capability with alternative
dialog types. For example, using the VoiceXML dialog type rather
than the basic IVR dialog type ([VXMLCP]).
Otherwise, extension control packages MUST respect the syntax and
semantics of this control package.
This document specifies how the basic IVR control package fulfills
the requirements of the Media Control Channel Framework control
packages (Section 3), the dialog management elements defined by the
package (Section 4), the basic IVR dialog type definitions
(Section 5) as well as providing examples (Section 6, Section 7),
type definitions (Section 8) and XML schema (Section 9).
2. Conventions and Terminology 2. Conventions and Terminology
In this document, BCP 14/RFC 2119 [RFC2119] defines the key words In this document, BCP 14/RFC 2119 [RFC2119] defines the key words
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL". In addition, BCP 15 indicates requirement levels for "OPTIONAL". In addition, BCP 15 indicates requirement levels for
compliant implementations. compliant implementations.
The following additional terms are defined for use in this document: The following additional terms are defined for use in this document:
Dialog: A dialog performs media interaction with a user. A dialog Dialog: A dialog performs media interaction with a user. A dialog
is identified by a URI and has an associated mimetype. Dialogs is specified as inline XML, or via a URI reference to an external
typically feature basic capabilities such as playing audio XML document type. Dialogs typically feature basic capabilities
prompts, collecting DTMF input and recording audio input from the such as playing audio prompts, collecting DTMF input and recording
user. More advanced dialogs may also feature synthesized speech, audio input from the user. More advanced dialogs may also feature
recording and playback of video, recognition of spoken input, and synthesized speech, recording and playback of video, recognition
mixed initiative conversations. of spoken input, and mixed initiative conversations.
Application server: A SIP [RFC3261] application server (AS) hosts Application server: A SIP [RFC3261] application server (AS) hosts
and executes services such as interactive media and conferencing and executes services such as interactive media and conferencing
in an operator's network. An AS influences and impacts the SIP in an operator's network. An AS influences and impacts the SIP
session, in particular by terminating SIP sessions on a media session, in particular by terminating SIP sessions on a media
server, which is under its control. server, which is under its control.
Media Server: A media server (MS) processes media streams on behalf Media Server: A media server (MS) processes media streams on behalf
of an AS by offering functionality such as interactive media, of an AS by offering functionality such as interactive media,
conferencing, and transcoding to the end user. Interactive media conferencing, and transcoding to the end user. Interactive media
functionality is realized by way of dialogs, which are identified functionality is realized by way of dialogs which are initiated by
by a URI and initiated by the application server. the application server.
3. Control Package Definition 3. Control Package Definition
This section fulfills the mandatory requirement for information that This section fulfills the mandatory requirement for information that
MUST be specified during the definition of a Control Framework MUST be specified during the definition of a Control Framework
Package, as detailed in Section 9 of [SIPCF]. Package, as detailed in Section 8 of [MCCF].
3.1. Control Package Name 3.1. Control Package Name
The Control Framework requires a Control Package definition to The Control Framework requires a Control Package to specify and
specify and register a unique name and version. register a unique name and version.
The name and version of this Control Package is "msc-ivr-basic/1.0" The name and version of this Control Package is "msc-ivr-basic/1.0"
(Media Server Control - Interactive Voice Response - Basic - version (Media Server Control - Interactive Voice Response - Basic - version
1.0 ). 1.0). Its IANA registration is specified in Section 11.1.
3.2. Framework Message Usage 3.2. Framework Message Usage
IVR functionality includes capabilities such as playing prompts, The Control Framework requires a Control Package to explicitly detail
collecting DTMF and recording user input. These functions are the control messages that can be used as well as provide an
expressed using template dialogs defined in Section 5. indication of directionality between entities. This will include
which role type is allowed to initiate a request type.
This package defines XML elements in Section 4 and provides an XML This package defines XML elements for dialog management in Section 4;
Schema in Section 8. these elements specify dialog requests, responses and event
notifications. The package also defined elements for the basic IVR
dialog type in Section 5. The basic IVR dialog elements are
contained inside dialog management elements. XML Schema for all XML
elements defined in this package are specified in Section 9.
The XML elements in this package are split into requests, responses In this package, the MS operates as a Control Framework Server in
and event notifications. Requests are carried in CONTROL message receiving requests from, and sending responses to, the AS (operating
bodies; <dialogprepare>, <dialogstart> and <dialogterminate> elements as Control Framework Client). These requests are carried in CONTROL
are defined as package requests. Responses are carried either in message bodies from AS to MS; <dialogprepare>, <dialogstart> and
REPORT message or Control Framework 200 response bodies; the <dialogterminate> elements are defined as package requests.
<response> element is defined as a package response. Event Responses to these requests are carried either in REPORT messages or
notifications are also carried in REPORT message bodies; the <event> Control Framework 200 response bodies with <response> element
element is defined for package event notifications. payload.
Note that package responses are different from framework response Note that package responses are different from framework response
codes. Framework error response codes (see Section 8 of [SIPCF]) are codes. Framework error response codes (see Section 8 of [MCCF]) are
used when the request or event notification is invalid; for example, used when the request or event notification is invalid; for example,
a request is invalid XML (400), or not understood (500). Package a request is invalid XML (400), or not understood (500). Package
responses are carried in 200 response or REPORT message bodies. This responses are carried in 200 response or REPORT message bodies. This
package's response codes are defined in Section 4.2.1. package's response codes are defined in Section 4.2.1.
The schema uses "connection-id" and "conf-id" attributes which are The MS also operates as a Control Framework Client in sending event
imported from schema defined in core Control Framework [SIPCF]. notifications to the AS (Control Framework Server). Event
notifications are carried in CONTROL message bodies; the <event>
element is defined for package event notifications. AS responses are
carried in Control Framework responses or, if the transaction is
extended, in REPORT messages.
3.3. Common XML Support 3.3. Common XML Support
The Control Framework requires a Control Package definition to The Control Framework requires a Control Package definition to
specify if the attributes for media dialog or conference references specify if the attributes for media dialog or conference references
are required. are required.
This package requires that the XML Schema in Section 16.1 of [SIPCF] This package requires that the XML Schema in Section 16.1 of [MCCF]
MUST be supported for media dialogs and conferences. MUST be supported for media dialogs and conferences.
The package schema uses "connectionid" and "conferenceid" attributes
which are imported from the XML schema.
3.4. CONTROL Message Body 3.4. CONTROL Message Body
A valid CONTROL body message MUST conform to the schema defined in The Control Framework requires a Control Package to define the
Section 8 and described in Section 4. XML messages appearing in control body that can be contained within a CONTROL command request
CONTROL messages MUST contain a <dialogprepare>, <dialogstart> or and to indicate the location of detailed syntax definitions and
<dialogterminate> request element (Section 4.1). semantics for the appropriate body types.
When operating as Control Framework Server, the MS receives CONTROL
messages with a body containing a valid <dialogprepare>,
<dialogstart> or <dialogterminate> request element. The syntax and
semantics of these elements are defined in Section 4.1.
When operating as Control Framework Client, the MS sends CONTROL
messages with a body containing a valid notification <event> element.
The syntax and semantics of this element is defined in Section 4.3.
3.5. REPORT Message Body 3.5. REPORT Message Body
A valid REPORT body MUST conform to the schema defined in Section 8 The Control Framework requires a control package definition to define
and described in Section 4. XML messages appearing in REPORT the REPORT body that can be contained within a REPORT command
messages MUST contain a <response> (Section 4.2), or a (notification) request, or that no report package body is required. This section
<event> element (Section 4.3). should indicate the location of detailed syntax definitions and
semantics for the appropriate body types.
4. Element Definitions When operating as Control Framework Server, the MS sends REPORT
bodies containing a valid <response> element. The syntax and
semantics of this element is specified in Section 4.2.
This section defines the XML messages for this control package. When operating as Control Framework Client, the MS receives REPORT
messages which SHOULD NOT contain a body.
[Editors Note: since XML Schema may not be able to express all [Editors Note:IVR01 need to clarify the behavior when the MS receives
constraints expressed in these definitions, in cases where there is a a REPORT in response to sending an event notification CONTROL.]
difference in constraints, the definitions in the section take
priority.] 4. Dialog Management Element Definitions
This section defines the dialog management XML messages for this
control package. These messages are divided into requests
(Section 4.1), responses (Section 4.2) and notifications
(Section 4.3).
4.1. Requests 4.1. Requests
Requests are send to the MS (operating as a Control Framework Server)
in the body of CONTROL messages.
The following request elements are defined: The following request elements are defined:
<dialogprepare>: prepare an IVR dialog for later execution <dialogprepare>: prepare an IVR dialog for later execution
<dialogstart>: start an IVR dialog on a connection or conference <dialogstart>: start an IVR dialog on a connection or conference
<dialogterminate>: terminate an active IVR dialog <dialogterminate>: terminate an IVR dialog
These elements control the life cycle of a dialog. Each dialog has
the following states:
IDLE: the dialog is uninitialized.
PREPARING: the dialog is being prepared. If an error occurs the
dialog transitions to the TERMINATED state.
PREPARED: the dialog has been successfully prepared and has a valid
dialog identifier.
STARTING: the dialog is being started. If an error occurs the
dialog transitions to the TERMINATED state.
STARTED: the dialog has been successfully started and is now active.
When the dialog exits (normally or terminated), or due to an
error, a dialogexit notification event is sent and the dialog
transitions to the TERMINATED state.
TERMINATED: the dialog is terminated and its dialogid is no longer
valid. No further dialog notifications are sent for this dialog.
As a consequence, it is an error if the same dialog is prepared or
started more than once.
4.1.1. <dialogprepare> 4.1.1. <dialogprepare>
The <dialogprepare> request is sent from the AS to the MS to request The <dialogprepare> request is sent to the MS to request preparation
preparation of an IVR dialog. A prepared dialog is executed when the of an IVR dialog. Dialog preparation consists of (a) retrieving an
AS sends a <dialogstart> request referencing the prepared dialog (see external dialog document (if specified), and (b) validating the
Section 4.1.2). document both syntactically and semantically.
A prepared dialog is executed when the AS sends a <dialogstart>
request referencing the prepared dialog (see Section 4.1.2).
A <dialogprepare> element has the following attributes: A <dialogprepare> element has the following attributes:
src: string identifying the URI of the dialog document to prepare. src: specifies the location of an external dialog document to
The attribute is mandatory. The MS MUST support "basicivr: prepare. A valid value is a URI (see Section 8.9). It is an
playannouncement", "basicivr:promptandcollect" and "basicivr: error if the document cannot be retrieved or processed (e.g. URI
promptandrecord" basicivr template dialogs as the value for this protocol not supported). The attribute is optional.
attribute. The MS MAY support other URI formats.
type: specifies the type of the external dialog document indicated
in the 'src' attribute. A valid value is a MIME type (see
Section 8.10). The attribute is optional.
dialogid: string indicating a unique name for the dialog. If this dialogid: string indicating a unique name for the dialog. If this
attribute is not specified, the MS creates a unique name for the attribute is not specified, the MS creates a unique name for the
dialog. The value is used in subsequent references to the dialog dialog. The value is used in subsequent references to the dialog
(e.g. as dialogid in a <response>). It is an error if a dialog (e.g. as dialogid in a <response>). It is an error if a dialog
with the same name already exists on the MS. The attribute is with the same name already exists on the MS. The attribute is
optional. optional.
The <dialogprepare> element has the following child elements: The <dialogprepare> element in this package is extended with the the
child element <basicivr> for inline Basic IVR dialog (see
Section 5.1). Other packages which extend this package MAY use
alternative dialog types.
<data>: an XML data structure (see Section 4.4) to pass parameters The dialog to prepare can either be specified inline as a child
into the dialog. It is an error if a specified parameter is not element or externally using the src attribute (but not both). It is
supported by the implementation. The element is optional. an error if both an inline dialog element and a src attribute are
specified.
<subscribe>: an XML data structure (see Section 4.5) indicating When an MS receives a <dialogprepare> request, the dialog is in a
notification events to which the AS subscribes. It is an error if PREPARING state. If dialog preparation was successful, the dialog is
a specified notification event is not supported by the in a PREPARED state; otherwise the dialog is in a TERMINATED state.
implementation. The element is optional. The MS MUST reply to <dialogprepare> request with a <response>
element (Section 4.2), reporting whether dialog preparation was
successful or not.
For example, a request to prepare a playannouncement dialog where a Example: in CONTROL message from AS to MS, the following request
single prompt is played once: prepares a basic IVR dialog where a single prompt is played once:
<dialogprepare src="basicivr:playannouncement"> <dialogprepare>
<data> <basicivr>
<item name="prompts" <prompt>
value="http://www.example.com/prompt1.wav"/> <media src="http://www.example.com/prompt1.wav"/>
<item name="iterations" value="1"/> </prompt>
</data> </basicivr>
</dialogprepare> </dialogprepare>
When an MS has successfully received a <dialogprepare> request, it Alternatively, the same dialog could be referenced:
MUST reply with a <response> element (Section 4.2).
[Editors Note. Using the src attribute to indicate the type of the
dialog blocks reference to an external dialog. In the next version,
a type attribute will be added to both <dialogprepare> and
<dialogstart> to indicate the MIME type of the dialog and the src
attribute will have a URI value for external dialogs. The dialog can
then be specified inline or externally (but not both).]
[Editors Note. We are investigating whether to re-structure the
content of basicivr commands (no change in content). This could
include:
Container elements <playannouncement>, <promptandcollect> and <dialogprepare type="application/msc-ivr-basic+xml"
<promptandrecord>. Each element would have the defined attributes src="http://example.org/basic1.xml"/>
for each dialog type.
The <data> element would be obsoleted since information would if the dialog is prepared successful, then a Control Framework 200 or
expressed through these more specific elements. a REPORT message for the same transaction would contain a response
such as:
For example, <response status="200" dialogid="d100"/>
<dialogprepare type="basicivr"> The Control Framework transaction is then complete.
<playannouncement prompts="http://www.example.com/prompt1.wav"
iterations="1"/>
</dialogprepare>
This approach is more compact than the current approach, and allows See Section 6 and Section 7 for further examples.
constraints on attribute values to be checked by an XML schema
validator (the <data> approach does not allows this). We could go
further and factor out prompt information into a separate <prompt>
element which is then used in the above dialog types. ]
4.1.2. <dialogstart> 4.1.2. <dialogstart>
The <dialogstart> element is sent by the AS to request execution of a The <dialogstart> element is sent by the AS to start a dialog. The
dialog. The dialog may be defined in the dialogstart request itself, dialog may be specified in the <dialogstart> request itself, or
or reference a previously prepared dialog. reference a previously prepared dialog.
Starting a dialog consists of (a) retrieving any resources (e.g.
media, grammar, etc) associated with the dialog, and (b) activating
these resources according to the dialog type. For example, with
<basicivr>, retrieving media resources and playing them to the user.
The <dialogstart> element has the following attributes: The <dialogstart> element has the following attributes:
src: string identifying the URI of the dialog document to start. src: specifies the location of an external dialog document to start.
The attribute is optional. The MS MUST support "basicivr: A valid value is a URI (see Section 8.9). It is an error if the
playannouncement", "basicivr:promptandcollect" and "basicivr: document cannot be retrieved or processed (e.g. URI protocol not
promptandrecord" basicivr template dialogs as the value for this supported). The attribute is optional.
attribute. The MS MAY support other URI formats.
type: specifies the type of the external dialog document indicated
in the 'src' attribute. A valid value is a MIME type (see
Section 8.10). The attribute is optional.
dialogid: string indicating a unique name for the dialog. If this dialogid: string indicating a unique name for the dialog. If this
attribute is not specified, the MS creates a unique name for the attribute is not specified, the MS creates a unique name for the
dialog. The value is used in subsequent references to the dialog dialog. The value is used in subsequent references to the dialog
(e.g. as dialogid in a <response>). It is an error if a dialog (e.g. as dialogid in a <response>). It is an error if a dialog
with the same name already exists on the MS. The attribute is with the same name already exists on the MS. The attribute is
optional. optional.
prepareddialogid: string identifying a dialog previously prepared prepareddialogid: string identifying a dialog previously prepared
using a dialogprepare request. The attribute is optional. using a dialogprepare request. The attribute is optional.
connection-id: string identifying the SIP dialog connection on which connectionid: string identifying the SIP dialog connection on which
this dialog is to be started (see Section 16.1 of [SIPCF]). The this dialog is to be started (see Section 16.1 of [MCCF]). The
attribute is optional. attribute is optional.
conf-id: string identifying the conference on which this dialog is conferenceid: string identifying the conference on which this dialog
to be started (see Section 16.1 of [SIPCF]). The attribute is is to be started (see Section 16.1 of [MCCF]). The attribute is
optional. optional.
If the prepareddialogid is specified, it is an error to specify the Exactly one of the connectionid or conferenceid attributes MUST be
src or dialogid attributes. specified. It is an error to specify both connectionid and
conferenceid attributes or neither.
If the prepareddialogid is not specified, exactly the src attribute
MUST be specified; otherwise, it is an error.
Exactly one of the connection-id or conf-id attributes MUST be
specified. It is an error to specify both connection-id and conf-id.
The <dialogstart> element has the following child elements defined: The <dialogstart> element has the following child elements defined:
<stream>: contains the following attributes: <stream>: contains the following attributes:
media: a string indicating the type of media associated with the media: a string indicating the type of media associated with the
stream. It is strongly recommended that the following values stream. It is strongly RECOMMENDED that the following values
are used for common types of media: "audio" for audio media, are used for common types of media: "audio" for audio media,
and "video" for video media. The attribute is mandatory. and "video" for video media. The attribute is mandatory.
label: a string indicating the SDP label associated with a media label: a string indicating the SDP label associated with a media
stream ([RFC4574]). The attribute is optional. stream ([RFC4574]). The attribute is optional.
direction: a string indicating the direction of the media flow direction: a string indicating the direction of the media flow
between a dialog and its end point conference or connection. between a dialog and its end point conference or connection.
Defined values are: "sendrecv" (media can be sent and Defined values are: "sendrecv" (media can be sent and
received), "sendonly" (media can only be sent), and "recvonly" received), "sendonly" (media can only be sent), and "recvonly"
skipping to change at page 12, line 30 skipping to change at page 15, line 5
The attribute is optional. The attribute is optional.
One or more <stream> elements may be specified so that individual One or more <stream> elements may be specified so that individual
media streams can be controlled independently; for example, audio media streams can be controlled independently; for example, audio
only for transmission, but video only for reception. The <stream> only for transmission, but video only for reception. The <stream>
element is optional. If no <stream> elements are specified, then element is optional. If no <stream> elements are specified, then
the default is the media configuration of the connection or the default is the media configuration of the connection or
conference. It is an error if a <stream> element is in conflict conference. It is an error if a <stream> element is in conflict
with (a) another <stream> element, (b) with dialog, connection or with (a) another <stream> element, (b) with dialog, connection or
conference media capabilities, or (c) with a SDP label value as conference media capabilities, or (c) with a SDP label value as
part of the connection-id (see Section 16.1 of [SIPCF]). part of the connectionid (see Section 16.1 of [MCCF]).
<data>: an XML data structure (see Section 4.4) to pass parameters The <dialogstart> element in this package is extended with the the
into the dialog. It is an error if a specified parameter is not child element <basicivr> for inline Basic IVR dialog (see
supported by the implementation. The element is optional. Section 5.1). Other packages which extend this package MAY use
alternative dialog types.
<subscribe>: an XML data structure (see Section 4.5) indicating The dialog to start can be specified either inline, or externally, or
notification events to which the AS subscribes. It is an error if reference a previously prepared dialog. Exactly one of the src
a specified notification event is not supported by the attribute, the prepareddialogid or a dialog type child element MUST
implementation.The element is optional. be specified. If the prepareddialogid is specified, it is an error
to specify the src attribute, the dialogid attribute or a dialog type
child element. If the src attribute is specified, it is an error to
specify the prepareddialogid attribute, or a dialog type child
element. If a dialog type child element is specified, it is an error
to specify the src attribute or the prepareddialogid attribute.
[Editors Note: the <stream> element assumes that the use of the SDP When an MS receives a <dialogstart> request, the dialog is either in
label by itself is insufficient for media stream control. In an IDLE or PREPARED state (if a previously prepared dialog is being
particular, the SDP label does not address directionality, nor does started). If in the IDLE state, then the dialog is first prepared
it address conferences. Further investigation of the <stream> is and if successful, transitions to the PREPARED state. When the
required.] prepared dialog is started it transitions to the STARTING state and,
if the dialog is started successfully, the dialog then transition to
the STARTED state. If a error occurs during dialog preparation or
starting, then the error MUST be reported, and the dialog transitions
to a TERMINATED state. The MS MUST reply to <dialogstart> request
with a <response> element (Section 4.2), reporting whether the dialog
was started successful or not.
If the prepareddialogid is specified and the <dialogprepare> [Editors Note:IVR02 This specification does not defined the behavior
contained a <data> element, it is an error to specify it in when more than one dialog is started on the same connection or
<dialogstart>. Likewise, If the prepareddialogid is specified and conference. Various models could be applied:
the <dialogprepare> contained a <subscribe> element, it is an error
to specify it in <dialogstart>.
For example, a request to start a promptandrecord template dialog on reject: only one dialog per connection or conference
a conference:
<dialogstart conf-id="conference11" src="basicivr:playandrecord"> replace: the current dialog is stopped and the new one started
<data>
<item name="maxtime" value="384000s"/> queue: the new dialog is queued for starting after current dialog
</data> exits.
mix: multiple dialogs are permitted with the same connection or
conference: input is passed to both dialog; and dialog output is
mixed.
We also need to take into account that the <stream> element can be
used to specify that different dialogs affect different media streams
of the same connection or conference. For example, one dialog that
only generates output, and another dialog on the same connection only
receives input. Workgroup input on this issue is required. ]
Example: in CONTROL message from AS to MS, the following request
starts a basic ivr recording dialog on a conference:
<dialogstart conferenceid="conference11">
<basicivr>
<record maxtime="384000s"/>
</basicivr>
</dialogstart> </dialogstart>
When an MS has successfully received a <dialogstart> request, it MUST Alternatively, the same dialog could be referenced:
reply with a <response> element (Section 4.2).
<dialogstart conferenceid="conference11"
type="application/msc-ivr-basic+xml"
src="http://example.org/basic2.xml"/>
if the dialog is started successfully, then a Control Framework 200
or a REPORT message for the same transaction would contain a response
such as:
<response status="200" dialogid="d101" conferenceid="conference11"/>
The Control Framework transaction is then complete.
See Section 6 and Section 7 for further examples.
4.1.3. <dialogterminate> 4.1.3. <dialogterminate>
A dialog that has been successfully prepared or started can be A dialog that has been successfully prepared or started can be
terminated by a <dialogterminate> request element from the AS. terminated by sending a <dialogterminate> request element to the MS.
The <dialogterminate> element has the following attributes: The <dialogterminate> element has the following attributes:
dialogid: string identifying an existing dialog. The attribute is dialogid: string identifying the dialog to terminate. The attribute
mandatory. is mandatory.
immediate: string with the values "true" or "false" indicating immediate: indicates whether the dialog is to be terminated
whether the dialog is to be terminated immediately or not. If a immediately or not. A valid value is a boolean (see Section 8.1).
dialog is terminated immediately, no further dialog event A value of true indicates that the dialog is terminated and a
notifications are sent (including a dialogexit <event>). The dialogexit <event> notification MUST be sent immediately. A value
default is "false". The attribute is optional. of false indicates that the dialog terminates normally, sending a
dialogexit <event> notification is sent when the dialog has
exited. The attribute is optional. The default value is false.
For example, assuming a dialog with the dialogid "vxi1" has been It is an error if the dialogid is invalid.
started, it can be terminated immediately with the following request:
When an MS receives a <dialogterminate> request, the dialog MUST be
in a PREPARED, STARTING or STARTED states. If it is in a PREPARED
state, then it transitions immediately to the TERMINATED state. If
it is in STARTING state, then any further starting (or preparation)
of the dialog is canceled, the response of the dialogstart command
reporting that the dialog is terminated, and the dialog transitions
to the TERMINATED state. If the dialog is in a STARTED state, then
the dialog is terminated according to the value of the immediate
attribute, and when the dialogexit notification is sent, the dialog
moves into the TERMINATED state.
The MS MUST reply to <dialogterminate> request with a <response>
element (Section 4.2), reporting whether the dialog was stopped
successful or not.
Example: in CONTROL message from AS to MS, the following request
terminate a dialog with dialogid "vxi1":
<dialogterminate dialogid="vxi1" immediate="true"/> <dialogterminate dialogid="vxi1" immediate="true"/>
When an MS has successfully received a <dialogterminate> request, it if the dialog is terminated successfully, then a Control Framework
MUST reply with a <response> element (Section 4.2). 200 or a REPORT message for the same transaction would contain a
response such as:
<response status="200" dialogid="d100"/>
The Control Framework transaction is then complete.
See Section 6 and Section 7 for further examples.
4.2. Responses 4.2. Responses
Responses are specified in a <response> element. Responses are generated in response to <dialogprepare>, <dialogstart>
and <dialogterminate> requests. Responses are specified in a
<response> element.
4.2.1. <response> 4.2.1. <response>
Reponses to requests are indicated by a <response> element. Responses to requests are indicated by a <response> element.
The <response> element has following attributes: The <response> element has following attributes:
status: numeric code indicating the response status. The attribute status: numeric code indicating the response status. The attribute
is mandatory. is mandatory.
reason: string specifying a reason for the response status. The reason: string specifying a reason for the response status. The
attribute is optional. attribute is optional.
dialogid: string identifying the dialog. The attribute is optional. dialogid: string identifying the dialog. The attribute is optional.
connection-id: string identifying the SIP dialog connection connectionid: string identifying the SIP dialog connection
associated with the dialog (see Section 16.1 of [SIPCF]). The associated with the dialog (see Section 16.1 of [MCCF]). The
attribute is optional. attribute is optional.
conf-id: string identifying the conference associated with the conferenceid: string identifying the conference associated with the
dialog (see Section 16.1 of [SIPCF]). The attribute is optional. dialog (see Section 16.1 of [MCCF]). The attribute is optional.
The following status codes are defined: The following status codes are defined:
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| code | description | | code | description |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| 200 | OK | | 200 | OK |
| | | | | |
| 401 | dialogid already exists | | 401 | dialogid already exists |
| | | | | |
| 402 | dialogid does not exist | | 402 | dialogid does not exist |
| | | | | |
| 403 | connection-id does not exist | | 403 | connectionid does not exist |
| | | | | |
| 404 | conf-id does not exist | | 404 | conferenceid does not exist |
| | | | | |
| 405 | Unknown or unsupported element | | 405 | Unknown or unsupported element |
| | | | | |
| 406 | Element required | | 406 | Element required |
| | | | | |
| 407 | Unknown or unsupported attribute | | 407 | Unknown or unsupported attribute |
| | | | | |
| 408 | Attribute required | | 408 | Attribute required |
| | | | | |
| 409 | template dialog not supported | | 409 | dialog type not supported |
| | |
| 410 | data parameter not supported |
| | | | | |
| 411 | event subscription not supported | | 410 | Retrieving document resource failed |
| | | | | |
| 412 | stream parameter invalid | | 411 | Invalid attribute value |
| | | | | |
| 499 | other error | | 499 | other error |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
Table 1: <response> status codes Table 1: <response> status codes
[Editors Note: more status codes may need to be defined.] [Editors Note:IVR03 more status codes may need to be defined.]
For example, a response when a dialog was prepared successfully: For example, a response when a dialog was prepared successfully:
<response status="200" dialogid="vxi1"/> <response status="200" dialogid="vxi1"/>
The response if dialog preparation failed due to an unknown template: The response if dialog preparation failed due to an unsupported
dialog type:
<response status="409" dialogid="vxi1" <response status="409" dialogid="vxi1"
reason="Unknown template: promptandrecod"/> reason="Unsupported dialog type: application/basicirv+xml"/>
For example, a response when the dialog was started successfully. For example, a response when the dialog was started successfully.
<response status="200" dialogid="vxi1" <response status="200" dialogid="vxi1"
connection-id="7HDY839~HJKSkyHS"/> connectionid="7HDY839~HJKSkyHS"/>
See Section 6 and Section 7 for further examples.
4.3. Notifications 4.3. Notifications
Event notifications are specified in an <event> element. Event notifications are specified in an <event> element.
4.3.1. <event> Event notifications MUST NOT be sent unless the dialog is in a
STARTED state.
Dialog event notifications are either manual or automatic.
Manual event notifications are defined when an AS subscribes to
notifications for dialog events using the <subscribe> element of
<dialogprepare> or <dialogstart>.
Automatic event notifications are defined as part of a Control 4.3.1. <event>
Package. The AS SHOULD NOT subscribe to these event notifications.
The MS MUST support these event notifications. This package defines
one automatic notification event: "dialogexit" which indicates that
an active dialog has terminated. Note that this notification is not
sent if the dialog has been terminated by the AS using a
<dialogterminate/> request where "immediate=true".
When a dialog generates a notification event, the MS sends the event When a dialog generates a notification event, the MS sends the event
to the AS using an <event> element. to the AS using an <event> element.
The <event> element has the following attributes: The <event> element has the following attributes:
name: string indicating the name of dialog event. The string is dialogid: string identifying the dialog which generated the event.
restricted to a sequence of alphanumeric or "." characters. The The attribute is mandatory.
attribute is mandatory.
dialogid: string identifying the dialog. The attribute is
mandatory.
The <event> element has the following child element: The <event> element has the following child elements:
<data>: an XML data structure (see Section 4.4) to pass information <dialogexit>: indicates that the dialog has exited. The element is
additional information about the dialog event. The element is
optional. optional.
For example, when a dialog exits the MS may send a dialogexit <event> Extension packages may define other child elements for notifications
with data indicating the status of a template dialog: which they support.
<event name="dialogexit" dialogid="vxi1"> See Section 6 and Section 7 for examples.
<data>
<item name="status" value="1"/>
</data>
</event>
4.4. <data> 4.3.2. <dialogexit>
The <data> element is a general container for parameterized data. The <dialogexit> event indicates that an active dialog has exited
because it is complete, has been terminated, or because 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.
Once the dialogexit event is sent, the dialog transitions from the
STARTED state to the TERMINATED state. The MS MUST NOT send any
further notifications for a dialog in the TERMINATED state.
The <data> element has no attributes, but has the following child The <dialogexit> element has the following attributes:
elements defined:
<item>: contains the following attributes: status: a status code indicating success or failure of the dialog.
A valid value is a non-negative integer (see Section 8.4). A
value of 0 indicates that the dialog has been terminated
externally. A value of 1 indicates success. Any other value
indicate an error. The attribute is mandatory.
name: a string indicating the name of the parameter. The reason: a textual description providing a reason for the status
attribute is mandatory. code; e.g. details about an error. A valid value is a string (see
Section 8.6). The attribute is optional. There is no default
value.
value: a string indicating the value of the parameter. Multiple [Editors Note:IVR04 do we need to specify specific error codes?]
values of a parameters can be specified using space separation.
The attribute is mandatory.
Multiple <item> elements may be specified. The <dialogexit> element in this package is extended with child
elements for reporting prompt, collect and record information (see
Section 5.5) of the basic IVR dialog type. Other packages which
extend this package MAY use alternative child elements.
For example, a <data> specifying promptandcollect template parameters Example: when a STARTED <basicivr> dialog exits normally the MS sends
with simple values: a dialogexit <event>:
<data> <event dialogid="vxi1"/>
<item name="iterations" value="5"/> <dialogexit status="1">
<item name="timeout" value="10s"/> <collectinfo dtmf="1234" termmode="match"/>
</data> </dialogexit>
In this example, a <data> specifying a playannouncement template with See Section 6 and Section 7 for further examples.
a complex value for the prompts parameter:
<data> 5. Basic IVR Dialog Element Definitions
<item name="prompts" value="http://example.com/balance.wav
http://example.com/five.wav http://example.com/euros.wav"/>
</data>
[Editors Note: we may also want to investigate the use of <item>s The basic IVR dialog is an instance of a dialog described in
nested within a top-level <item> to specify complex values. ] Section 4.1. The MS MUST support the Basic IVR dialog type in this
package.
4.5. <subscribe> A basic IVR dialog is specified inline or by reference in
<dialogprepare> (Section 4.1.1) or <dialogstart> (Section 4.1.2)
elements. Inline basic ivr dialogs are specified in a <basicivr>
child of these elements.
The <subscribe> element is a container for specifying dialog The basic IVR dialog is a simple XML container - <basicivr> - for
notification events to which an AS subscribes. Notifications of executing basic IVR operations of playing prompts (<prompt> - see
dialog events are delivered using the <event> element (see Section 5.2), collecting DTMF (<collect> - see Section 5.3),and
Section 4.3.1). recording user input (<record> - see Section 5.4. Results of the
dialog execution are reported in a dialogexit notification event.
The <subscribe> element has no attributes, but has the following Three execution models are defined:
child elements defined:
<notify>: contains the following attributes: playannouncements: only a <prompt> element is specified in the
container. The prompt media resources are played in sequence.
name: a string indicating the name of the event to be notified promptandcollect: a <collect> element is specified and, optionally,
of. The attribute is mandatory. 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.
The <notify> element may have a <data> child element. 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.
Multiple <notify> elements may be specified. Each of the core elements - <prompt>, <collect> and <record> - are
specified so that their execution and reporting is largely self-
contained. This facilitates their re-use in other dialog container
elements.
For example, the AS wishes to subscribe to DTMF and bargein Execution results are reported in the <dialogexit> notification event
notification events associated with a dialog: whose definition is extended with the elements defined in
Section 5.5. 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 at least the core operation:
<dialogstart src="basicivr:promptandcollect" <prompt> only: <promptinfo> (see Section 5.5.1) with at least the
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> termmode attribute specified.
<subscribe>
<notify name="dtmf"/>
<notify name="bargein"/>
</subscribe>
</dialogstart>
If the MS supports these notification events, then it would use the <collect>: <collectinfo> (see Section 5.5.2) with the dtmf and
<event> element to send notifications during the dialog to the AS termmode attributes specified.
when the events occurred.
[Editors Note: It may be possible to define a general event <record>: <recordinfo> (see Section 5.5.3) with at least the
subscription mechanism as part of the SIP Control Framework.] recording, type and termmode attributes specified.
[Editors Note: This Control Package does not specify dialog The media format requirements for basic IVR dialogs are undefined.
notification events apart from "dialogexit". Later versions may This package is agnostic to the media types and codecs for media
define events such as: "dtmf" (a DTMF key is pressed), "mediastart" resources and recording which need to be supported by an
(media playback started), "bargein" (user has barged in on a prompt), implementation. For example, a MS implementation may choose to
and "rtpcontrol" (control data, e.g. VFU, PoC, etc, is received over support only audio and in particular the 'audio/basic' codec for
the RTP control channel.] media playback and recording. However, if an MS encounters when
executing a dialog a media type or codec which it cannot process, the
MS MUST stop further processing and report an error to the AS using
the dialogexit notification.
5. IVR Template Dialogs The implementation of basic IVR dialogs MUST adhere to the syntax and
semantics described in this section. Implementations MAY support
additional (non-basicivr namespace) attributes and elements of these
dialogs. If an implementation encounters additional (non-basicivr
namespace) elements or attributes which it cannot process, it MUST
ignore them and continue processing.
The execution of IVR template dialog takes place on the MS. The AS [Editors Note:IVR05 One use case which is not covered by this
specifies the name of the template and configuration parameters, and specification is that of attaching a dialog to a connection, which
receives the result from the MS after the dialog has been executed. itself is attached to a conference, and allowing that dialog to
repeatedly collect and return matching DTMF without terminating. The
current specification requires that the dialog exits at the end of
its DTMF collection. For the next collection cycle, a new dialog
would need to be started. If the use case is in scope for this
package, then the definition of <basicivr> could be modified as
follows:
Input parameters are used to configure and customize the behavior of 1. A signalmode attribute/element is added to <basicivr> indicating
the template. For many input parameters, the templates provide the conditions under which the dialog sends a (non-terminating)
default values; a developer can specify an alternative value if the notification event (TBD). If any of its child elements completes
default is not appropriate for their application. Input parameters with a termmode value matching a condition (e.g. a 'match' from
for templates may be mandatory, requiring a specific value to be <collect>), then information collected by the children is
provided. returned to the AS in a notification event. The dialog is always
restarted and it needs to be terminated by the AS (unless an
error occurs).
The result of executing a template dialog is reported to the AS using 2. If the signalmode attribute/element is not specified, then the
output parameters. These parameters may describe status information, behavior is as currently defined.
error information or information collected from the user. Output
parameters are mandatory or optional depending on the specific
template; mandatory parameters must be specified by the
implementation.
Template dialogs are invoked by referencing them in the src attribute 3. Note that if media prompts were specified, the same prompts would
of <dialogprepare> (Section 4.1.1) or <dialogstart> (Section 4.1.2). play repeatedly - a more sophisticated approach would be required
Input parameters are specified in the <data> child element to play different prompts on different termmodes like nomatch,
(Section 4.4) of these elements. Output parameters are specified in noinput, etc
the <data> child element of a dialogexit <event> notification
(Section 4.3.1). The detailed mapping of template dialogs to XML
CONTROL and REPORT messages is described in Section 3 and examples
are provided in Section 7.
The implementation of template dialogs MUST adhere to the syntax and Working Group input is needed to determined if this use case is in
semantics of templates described in this document. Implementations scope for this package and whether this type of solution is
MAY support additional parameters of the defined template dialogs. adequate.]
Implementations MAY support additional template dialogs. The actual
implementation may be based on any technology or scripting language.
The media requirements on the template implementation are restricted 5.1. <basicivr>
to the capability to play audio prompts (specified as URIs), collect
DTMF input, and record audio input. The implementation MUST support
G.711 audio formats (headerless and wav) for playback and recording.
The implementation MAY support other media formats.
[Editors Note: Later versions may consider additional media A dialog to play prompts to the user, collect DTMF or record input.
requirements including TTS, ASR, video, etc. ] The dialog is specified using a <basicivr> element with the namespace
defined in Section 11.2.
5.1. Play Announcement A <basicivr> element has the following attributes:
A template dialog to play announcements to the user. version: a string specifying the version of the basicivr package.
The attribute is optional. The default value is '1.0'.
The template dialog is invoked using the URI "playannouncement". The <basicivr> element has the following child elements:
The dialog execution model consists of: <prompt>: defines media resources to play in sequence (see
Section 5.2). The element is optional.
1. Playing prompts in the order specified until completion. <collect>: defines how DTMF is collected (see Section 5.3). The
element is optional.
2. Repeating step 1 for the value of iterations. <record>: defines how recording takes place (see Section 5.4). The
element is optional.
3. Returning status and reason parameters. It is an error if no child element is specified. The behavior is not
defined if both <collect> and <record> are specified.
[Editors Note: the execution model needs to be updated for the 5.2. <prompt>
following new attributes: duration, interval, maxage, maxstale,
speed, volume and offset.]
The input and output parameters are summarized and defined below. The <prompt> element specifies a sequence of media resources to play.
+------------+-----------+-----------------------------+------------+ A <prompt> element has the following attributes:
| Name | Direction | Description | Definition |
+------------+-----------+-----------------------------+------------+
| prompts | input | prompts to play | Table 3 |
| | | | |
| iterations | input | maximum iterations | Table 4 |
| | | | |
| duration | input | maximum duration for the | Table 5 |
| | | dialog including iterations | |
| | | | |
| interval | input | time to elapse between | Table 6 |
| | | successive iterations | |
| | | | |
| maxage | input | maxage cache control for | Table 7 |
| | | prompts | |
| | | | |
| maxstale | input | maxstale cache control for | Table 8 |
| | | prompts | |
| | | | |
| speed | input | playback speed for prompts | Table 9 |
| | | | |
| volume | input | playback volume for prompts | Table 10 |
| | | | |
| offset | input | play from offset in prompts | Table 11 |
| | | | |
| status | output | status code | Table 12 |
| | | | |
| reason | output | reason for status | Table 13 |
+------------+-----------+-----------------------------+------------+
Table 2: playannouncement parameter overview xml:base: A string declaring the base URI from which relative URIs
in child elements are resolved. A valid value is a URI (see
Section 8.9). The attribute is optional.
Note that playannouncement requires at least one prompt specified in bargein: Indicates whether user input stops prompt playback. A
prompts. valid value is a boolean (see Section 8.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.
+-------------+-----------------------------------------------------+ iterations: number of times the prompt is to be played. A valid
| Name | prompts | value is a non-negative integer (see Section 8.4). A value of 0
+-------------+-----------------------------------------------------+ indicates that the prompt is repeated until halted by other means.
| Description | One or more prompts to play | The attribute is optional. The default value is 1.
| | |
| Direction | input |
| | |
| Type | URIList |
| | |
| Optional | No |
| | |
| Possible | A valid URIList which is non-empty |
| Values | |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 3: prompts duration: maximum duration for the prompt playback. A valid value
is a Time Designation (see Section 8.7). If no value is
specified, then there is no limit on the duration of the prompt.
The attribute is optional. There is no default value.
+-------------+-----------------------------------------------------+ volume: playback volume for the prompt. A valid value is a
| Name | iterations | percentage (see Section 8.4). The value indicates increase or
+-------------+-----------------------------------------------------+ decrease relative to the original recorded volume of the media. A
| Description | Maximum number of times the playannouncement dialog | value of 100% (the default) plays the media at its recorded
| | is to be played | volume, a value of 200% will play the media twice recorded volume,
| | | 50% at half its recorded volume, and so on. The attribute is
| Direction | input | optional. The default value is 100%.
| | |
| Type | Non-Negative Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid non-negative integer. A value of 0 |
| Values | indicates that the dialog is repeated until halted |
| | by other means. |
| | |
| Default | 1 |
+-------------+-----------------------------------------------------+
Table 4: iterations offset: offset to begin playing the prompt. A valid value is a Time
Designation (see Section 8.7). The offset is measured in normal
media playback time from the beginning of the media resource. The
attribute is optional. The default value is 0s.
+-------------+-----------------------------------------------------+ The duration attribute takes priority over the iterations attribute
| Name | duration | in determining maximum duration of the prompt.
+-------------+-----------------------------------------------------+
| Description | Maximum duration for the dialog iterations |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. If no value is |
| Values | specified, then there is no limit on the duration |
| | of the dialog |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 5: duration [Editors Note:IVR06 iterations could be replaced with 'repeatCount',
duration with 'repeatDur', volume could be replaced with 'soundLevel'
and offset with 'clipBegin' for better alignment with SMIL and
possibly VoiceXML.]
+-------------+-----------------------------------------------------+ [Editors Note:IVR07 should volume use a linear or logarithmic
| Name | interval | scaling?]
+-------------+-----------------------------------------------------+
| Description | time to elapse between successive iterations |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 0s |
+-------------+-----------------------------------------------------+
Table 6: interval The <prompt> element has the following child elements:
+-------------+-----------------------------------------------------+ <media>: media resource (see Section 5.2.1) to play. Multiple
| Name | maxage | instances of this element are permitted. The element is optional.
+-------------+-----------------------------------------------------+
| Description | maxage cache control for prompts |
| | |
| Direction | input |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid non-negative integer. The value indicates |
| Values | that the media server can use cached prompt |
| | resources whose age must be no greater than |
| | specified time in seconds (cf. 'max-age' in HTTP |
| | 1.1 [RFC2616]). The media server will not use |
| | stale resources, unless a maxstale value is also |
| | provided. |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 7: maxage <variable>: specifies a variable media announcement (see
Section 5.2.2) to play. Multiple instances of this element are
permitted. The element is optional.
+-------------+-----------------------------------------------------+ <dtmf>: generates one or more DTMF tones (see Section 5.2.3) to
| Name | maxstale | play. Multiple instances of this element are permitted. The
+-------------+-----------------------------------------------------+ element is optional.
| Description | Maxstale cache control for prompts |
| | |
| Direction | input |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid non-negative integer. The value indicates |
| Values | that the media server can use cached prompt |
| | resources which have exceeded their expiration time |
| | by no more than the specified number of seconds |
| | (cf. 'max-stale' in HTTP 1.1 [RFC2616]). |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 8: maxstale It is an error if no child element is specified.
+-------------+-----------------------------------------------------+ Prompt playing has the following execution model upon initialization:
| Name | speed |
+-------------+-----------------------------------------------------+
| Description | Playback speed for prompts |
| | |
| Direction | input |
| | |
| Type | Percentage |
| | |
| Optional | Yes |
| | |
| Possible | A valid percentage indicating rate increase or |
| Values | decrease relative to the original rate of the |
| | media. A value of 100% (the default) indicates no |
| | modification of rate, 200% indicates twice the |
| | original rate, a value of 50% indicates half the |
| | original rate, and so on. |
| | |
| Default | 100% |
+-------------+-----------------------------------------------------+
Table 9: speed 1. If an error occurs during execution, then playback terminates and
the error is reported in the status attribute (see Section 5.5)
of the <dialogexit> event.
+-------------+-----------------------------------------------------+ 2. A iterations counter is initialized to 0.
| Name | volume |
+-------------+-----------------------------------------------------+
| Description | Playback volume for prompts |
| | |
| Direction | input |
| | |
| Type | Percentage |
| | |
| Optional | Yes |
| | |
| Possible | A valid percentage indicating increase or decrease |
| Values | 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, and so on. |
| | |
| Default | 100% |
+-------------+-----------------------------------------------------+
Table 10: volume 3. A timer is started for the value of the duration attribute. If
the timer expires before playback is complete, then playback
terminates and the dialogexit result contains the <promptinfo>
termmode attribute set to maxduration (see Section 5.5.1).
+-------------+-----------------------------------------------------+ 4. A playback cycle is initiated playing each <media>, <variable>
| Name | offset | and <dtmf> in document order. The value of the volume attribute
+-------------+-----------------------------------------------------+ is applied to each <media> and <variable> if they are rendered as
| Description | Offset to begin playing prompts. The offset is | audio media. If the offset attribute is specified, playback
| | measured in normal media playback time from the | begins at that offset. If the offset is greater than the
| | beginning of the prompts. | cumulative duration of the child elements, then no prompts are
| | | played in the cycle.
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid time designation value. |
| Values | |
| | |
| Default | 0s |
+-------------+-----------------------------------------------------+
Table 11: offset 5. If the value of the bargein attribute is true, then user input
causes playback to terminate and the dialogexit result contains
the <promptinfo> termmode attribute is set to bargein (see
Section 5.5.1).
+-------------+-----------------------------------------------------+ 6. If the playback cycle completes successfully, then the iterations
| Name | status | counter is updated. If the counter reaches the value of the
+-------------+-----------------------------------------------------+ iterations attribute, then playback is terminated and the
| Description | A status code indicating success or failure of the | dialogexit result contains a <promptinfo> termmode attribute set
| | playannouncement dialog | to completed (see Section 5.5.1). Otherwise, another playback
| | | cycle is initiated.
| Direction | output |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | No |
| | |
| Possible | 1 for success; otherwise an error code (600, 601, |
| Values | 602). See Table 47 |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 12: status [Editors Note:IVR08 Need to clarify that DTMF used for VCR controls
does not cause playback to be stopped, but causes the appropriate
operation to be applied to the playing prompts. ]
+-------------+-----------------------------------------------------+ 5.2.1. <media>
| Name | reason |
+-------------+-----------------------------------------------------+
| Description | A textual description providing a reason for the |
| | status code; e.g. details about an error |
| | |
| Direction | output |
| | |
| Type | String |
| | |
| Optional | Yes |
| | |
| Possible | A valid String value |
| Values | |
| | |
| Default | Empty string |
+-------------+-----------------------------------------------------+
Table 13: reason The <media> element specifies a media resource to play.
The following additional input parameters are under consideration for A <media> element has the following attributes:
later versions:
+-----------+-------------------------------------------------------+ src: specifies the location of the media resource. A valid value is
| Name | Description | a URI (see Section 8.9). The attribute is mandatory.
+-----------+-------------------------------------------------------+
| variables | references to common types such as money, time, |
| | numbers, etc |
+-----------+-------------------------------------------------------+
Table 14: Additional playannouncement parameters type: specifies the type of the media resource indicated in the
'src' attribute. The type value may include additional parameters
for guiding playback; for example, [RFC4281] defines a 'codec'
parameter for 'bucket' media types like video/3gpp. A valid value
is a MIME type (see Section 8.10). The attribute is optional.
There is no default value.
5.2. Prompt and Collect The <media> element has no children.
A template dialog to play prompts and collect DTMF input. It is an error if the media resource cannot be retrieved or played.
The dialog is invoked with the URI "promptandcollect". 5.2.2. <variable>
The dialog execution model consists of: 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 variable type (e.g. 25th February 2008) as well as other
defined attributes.
1. Clearing the digit buffer depending on the value of A <variable> element has the following attributes:
cleardigitbuffer.
2. Playing prompts in the order specified. The bargein parameter value: specifies the string to be rendered. A valid value is a
determines whether user input can be collected during prompt string (see Section 8.6). The attribute is mandatory.
playback stops (if so, prompt playback is stopped).
3. Collecting DTMF input from the user. Valid DTMF patterns are type: specifies the type to use for rendering. A valid value is a
either a simple digit string where the maximum length is string (see Section 8.6). The attribute is mandatory.
determined by maxdigits and may be terminated by the character in
termchar; or a custom DTMF grammar specified by grammar. The
parameters timeout, interdigittimeout and termtimeout control
user input timeout, interdigit timeout and the terminating
timeout respectively.
4. If no input is collected or the input is invalid, steps 1 - 3 are format: specifies format information to use in conjunction with the
repeated for the value of iterations. type for the rendering. A valid value is a string (see
Section 8.6). The attribute is optional. There is no default
value.
5. Returning status, reason and result parameters. xml:lang: specifies the language to use when rendering the variable.
A valid value is a language identifier (see Section 8.11). The
attribute is optional. The default value is platform-specific.
[Editors Note: the execution model needs to be updated for handling [Editors Note:IVR09 do we need a gender attribute for variable
VCR commands like rewind and fast-forwards.] announcements? ]
The input and output parameter are summarized and defined below. The <variable> element has no children.
+-------------------+-----------+----------------------+------------+ This package is agnostic to which <variable> values, types and
| Name | Direction | Description | Definition | formats are supported by an implementation. However it is
+-------------------+-----------+----------------------+------------+ RECOMMENDED that an implementation support the following type/format
| prompts | input | prompts to play | Table 16 | combinations:
| | | | |
| iterations | input | maximum attempts | Table 17 |
| | | | |
| cleardigitbuffer | input | dtmf buffer clearing | Table 18 |
| | | | |
| bargein | input | interruption of | Table 19 |
| | | prompts | |
| | | | |
| timeout | input | timeout for user | Table 20 |
| | | input | |
| | | | |
| interdigittimeout | input | timeout between | Table 21 |
| | | digits | |
| | | | |
| termtimeout | input | terminating timeout | Table 22 |
| | | | |
| termchar | input | terminating | Table 23 |
| | | character | |
| | | | |
| maxdigits | input | maximum number of | Table 24 |
| | | digits | |
| | | | |
| grammar | input | custom grammar | Table 25 |
| | | | |
| skipinterval | input | Interval to skip | Table 26 |
| | | Backwards/Forwards | |
| | | | |
| ffkey | input | Maps a DTMF key to a | Table 27 |
| | | fast forward | |
| | | operation equal to | |
| | | skipinterval | |
| | | | |
| rwkey | input | Maps a DTMF key to a | Table 28 |
| | | rewind operation | |
| | | equal to | |
| | | skipinterval | |
| | | | |
| status | output | status code | Table 29 |
| | | | |
| reason | output | reason for status | Table 30 |
| | | | |
| result | output | input collected | Table 31 |
+-------------------+-----------+----------------------+------------+
promptandcollect parameter overview
+-------------+-----------------------------------------------------+ type=date Supported formats: "mdy", "ymd", "dym"
| Name | prompts |
+-------------+-----------------------------------------------------+
| Description | Initial prompts to play |
| | |
| Direction | input |
| | |
| Type | URIList |
| | |
| Optional | Yes |
| | |
| Possible | A valid URIList |
| Values | |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 16: prompts type=time Supported formats: "t12", "t24"
+-------------+-----------------------------------------------------+ type=digits Supported formats: "gen", "ndn", "crn", "ord"
| Name | iterations |
+-------------+-----------------------------------------------------+
| Description | Maximum number of times the promptandcollect dialog |
| | is to be played |
| | |
| Direction | input |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid non-negative integer. A value of 0 |
| Values | indicates the dialog is repeated until halted by |
| | other means. |
| | |
| Default | 0 |
+-------------+-----------------------------------------------------+
Table 17: iterations [Editors Note:IVR10 Further work needed on these definitions. Which
other types and formats need to, or can, be specified? ]
+-------------+-----------------------------------------------------+ This specification is agnostic to the type and codec of media
| Name | cleardigitbuffer | resources into which variable are rendered. For example, an MS
+-------------+-----------------------------------------------------+ choosing to support audio may render the <variable> into one or more
| Description | Clear digit buffer prior to prompt playback | audio media resources.
| | |
| Direction | input |
| | |
| Type | Boolean |
| | |
| Optional | Yes |
| | |
| Possible | A valid boolean value. A value of true indicates |
| Values | that the digitbuffer is to be cleared. A value of |
| | false indicates that the digitbuffer is not to be |
| | cleared. |
| | |
| Default | true |
+-------------+-----------------------------------------------------+
Table 18: cleardigitbuffer It is an error if a <variable> element cannot be rendered
successfully.
+-------------+-----------------------------------------------------+ Execution of this element can seen, at least logically, as conversion
| Name | bargein | of a <variable> into a list of <media> elements. For example,
+-------------+-----------------------------------------------------+
| Description | Indicates whether the user can interrupt the prompt |
| | with their input |
| | |
| Direction | input |
| | |
| Type | Boolean |
| | |
| Optional | Yes |
| | |
| Possible | A valid boolean value. A value of true indicates |
| Values | that bargein is permitted. A value of false |
| | indicates that bargein is not permitted. |
| | |
| Default | true |
+-------------+-----------------------------------------------------+
Table 19: bargein <variable value="2008-02-25" type="date" format="dmy"
xml:lang="en"/>
+-------------+-----------------------------------------------------+ could be transformed into audio saying "twenty-fifth of February two
| Name | timeout | thousand and eight" using a list of <media> resources:
+-------------+-----------------------------------------------------+
| Description | Indicates the time to wait for user input |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 5s |
+-------------+-----------------------------------------------------+
Table 20: timeout <media src="voicebase/en/25th.wav"/>
<media src="voicebase/en/of.wav"/>
<media src="voicebase/en/february.wav"/>
<media src="voicebase/en/2000.wav"/>
<media src="voicebase/en/and.wav"/>
<media src="voicebase/en/8.wav"/>
+-------------+-----------------------------------------------------+ 5.2.3. <dtmf>
| Name | interdigittimeout |
+-------------+-----------------------------------------------------+
| Description | The inter-digit timeout value to use when |
| | recognizing DTMF input |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 2s |
+-------------+-----------------------------------------------------+
Table 21: interdigittimeout The <dtmf> element specifies a sequence of DTMF tones for output.
+-------------+-----------------------------------------------------+ DTMF tones could be generated using <media> resources where the
| Name | termtimeout | output is transported as RTP audio packets. However, <media>
+-------------+-----------------------------------------------------+ resources are not sufficient for cases where DTMF tones are to be
| Description | The terminating timeout to use when recognizing | transported as DTMF RTP ([RFC2833]) or in event packages.
| | DTMF input |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 0s |
+-------------+-----------------------------------------------------+
Table 22: termtimeout A <dtmf> element has the following attributes:
+-------------+-----------------------------------------------------+ digits: specifies the DTMF sequence to output. A valid value is a
| Name | termchar | DTMF string (see Section 8.3). The attribute is mandatory.
+-------------+-----------------------------------------------------+
| Description | The terminating DTMF character for DTMF input |
| | recognition. This parameter is ignored if the |
| | grammar parameter is specified. |
| | |
| Direction | input |
| | |
| Type | DTMFChar |
| | |
| Optional | Yes |
| | |
| Possible | A valid DTMFChar value. To disable termination by |
| Values | a conventional DTMF character, set the parameter to |
| | an unconventional character like 'A'. |
| | |
| Default | # |
+-------------+-----------------------------------------------------+
Table 23: termchar 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
| Name | maxdigits | generated. A valid value is a time designation (see Section 8.7).
+-------------+-----------------------------------------------------+ Implementations may round the value if they only support discrete
| Description | The maximum number of digits to collect using an | durations. The attribute is optional. The default value is
| | internal digits (0-9 only) grammar. This parameter | 100ms.
| | is ignored if the grammar parameter is specified. |
| | |
| Direction | input |
| | |
| Type | Positive Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid positive integer value. |
| Values | |
| | |
| Default | 5 |
+-------------+-----------------------------------------------------+
Table 24: maxdigits interval: specifies the duration of a silence interval following
each generated DTMF tone. A valid value is a time designation
(see Section 8.7). Implementations may round the value if they
only support discrete durations. The attribute is optional. The
default value is 100ms.
+-------------+-----------------------------------------------------+ The <dtmf> element has no children.
| Name | grammar |
+-------------+-----------------------------------------------------+
| Description | A URI reference to a custom DTMF grammar. If this |
| | parameter is specified, then the referenced DTMF |
| | grammar is used instead of the internal digits |
| | grammar (i.e. maxdigits and termchar are ignored |
| | even if specified). Custom grammars permit the |
| | full range of DTMF characters including '*' and '#' |
| | to be specified for DTMF pattern matching. |
| | |
| Direction | input |
| | |
| Type | URI |
| | |
| Optional | Yes |
| | |
| Possible | A valid URI value referencing a valid custom DTMF |
| Values | grammar. |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 25: grammar It is an error if a <dtmf> element cannot be processed successfully.
[Editors note: The format of the custom DTMF grammar is not yet 5.3. <collect>
defined. Possibilities include: [SRGS], [H.248.1], and [RFC4730].
If more than one format is permitted, then an additional input The <collect> element defines how DTMF input is collected.
parameter "grammartype" would indicate the format used in the grammar
parameter.]
+-------------+-----------------------------------------------------+ The <collect> element has the following attributes:
| Name | skipinterval |
+-------------+-----------------------------------------------------+
| Description | An indication of how far a media server should skip |
| | backwards or forwards when the rewind (rwkey) of |
| | fast forward key (ffkey) is pressed. |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid time designation value. |
| Values | |
| | |
| Default | 6s |
+-------------+-----------------------------------------------------+
Table 26: skipinterval cleardigitbuffer: indicates whether the digit buffer is to be
cleared. A valid value is a boolean (see Section 8.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 time to wait for user input. A valid value
| Name | ffkey | is a Time Designation (see Section 8.7). The attribute is
+-------------+-----------------------------------------------------+ optional. The default value is 5s.
| Description | Maps a DTMF key to a fast forward operation equal |
| | to the value of 'skipinterval'. |
| | |
| Direction | input |
| | |
| Type | DTMFChar |
| | |
| Optional | Yes |
| | |
| Possible | A valid DTMFChar value. |
| Values | |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 27: ffkey interdigittimeout: indicates inter-digit timeout value to use when
recognizing DTMF input. A valid value is a Time Designation (see
Section 8.7). The attribute is optional. The default value is
2s.
+-------------+-----------------------------------------------------+ termtimeout: indicates the terminating timeout value to use when
| Name | rwkey | recognizing DTMF input. A valid value is a Time Designation (see
+-------------+-----------------------------------------------------+ Section 8.7). The attribute is optional. The default value is
| Description | Maps a DTMF key to a rewind operation equal to the | 0s.
| | value of 'skipinterval'. |
| | |
| Direction | input |
| | |
| Type | DTMFChar |
| | |
| Optional | Yes |
| | |
| Possible | A valid DTMFChar value. |
| Values | |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 28: rwkey escapekey: specifies a DTMF key that indicates the DTMF collection
is to be re-initiated. A valid value is a DTMF Character (see
Section 8.2). The attribute is optional. There is no default
value.
+-------------+-----------------------------------------------------+ termchar: specifies a DTMF character for terminating DTMF input
| Name | status | collection using the internal grammar. A valid value is a DTMF
+-------------+-----------------------------------------------------+ character (see Section 8.2). To disable termination by a
| Description | A status code indicating success or failure of the | conventional DTMF character, set the parameter to an
| | promptandcollect dialog | unconventional character like 'A'. The attribute is optional.
| | | The default value is '#'.
| Direction | output |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | No |
| | |
| Possible | 1 for success; otherwise an error code (600, 601, |
| Values | 603). See Table 47 |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 29: status maxdigits: The maximum number of digits to collect using an internal
digits (0-9 only) grammar. A valid value is a positive integer
(see Section 8.5). The attribute is optional. The default value
is 5.
+-------------+-----------------------------------------------------+ skipinterval: indicates how far a MS should skip backwards or
| Name | reason | forwards through prompt playback when the rewind (rwkey) of fast
+-------------+-----------------------------------------------------+ forward key (ffkey) is pressed. A valid value is a Time
| Description | A textual description providing a reason for the | Designation (see Section 8.7). The attribute is optional. The
| | status code; e.g. details on an error | default value is 6s.
| | |
| Direction | output |
| | |
| Type | String |
| | |
| Optional | Yes |
| | |
| Possible | A valid String value |
| Values | |
| | |
| Default | Empty string |
+-------------+-----------------------------------------------------+
Table 30: reason 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 8.2). The attribute is optional. There is no default
value.
+-------------+-----------------------------------------------------+ rwkey: maps a DTMF key to a rewind operation equal to the value of
| Name | result | 'skipinterval'. A valid value is a DTMF Character (see
+-------------+-----------------------------------------------------+ Section 8.2). The attribute is optional. There is no default
| Description | The DTMF input collected from the user. | value.
| | |
| Direction | output |
| | |
| Type | DTMFString |
| | |
| Optional | The parameter is mandatory if status is 1; |
| | otherwise, optional. |
| | |
| Possible | A valid DTMFString (no spaces between characters). |
| Values | |
| | |
| Default | Empty String |
+-------------+-----------------------------------------------------+
Table 31: result pauseinterval: indicates how long a MS should pause prompt playback
when the pausekey is pressed. A valid value is a Time Designation
(see Section 8.7). The attribute is optional. The default value
is 10s.
In addition to the prompt extensions described in Table 14, the pausekey: maps a DTMF key to a pause operation equal to the value of
following parameters are under consideration for later versions: 'pauseinterval'. A valid value is a DTMF Character (see
Section 8.2). The attribute is optional. There is no default
value.
+--------------------+----------------------------------------------+ resumekey: maps a DTMF key to a resume operation. A valid value is
| Name | Description | a DTMF Character (see Section 8.2). The attribute is optional.
+--------------------+----------------------------------------------+ There is no default value.
| nomatchprompts | prompts to play when input doesn't match the |
| | DTMF grammar |
| | |
| noinputprompts | prompts to play when there is no user input |
| | |
| successprompts | prompts to play when user input is collected |
| | |
| failureprompts | prompts to play when no valid user input has |
| | been collected after all iterations tried |
| | |
| escapechar | character which causes the dialog to restart |
| | without incrementing the iterations counter |
| | |
| iterationcount | number of iterations (output) |
| | |
| promptplayedamount | duration of initial prompts played if prompt |
| | interrupted (output) |
+--------------------+----------------------------------------------+
5.3. Prompt and Record 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 8.8). The attribute is optional. The default value is
10%.
A template dialog to prompt the user and record their audio (or other volupkey: maps a DTMF key to a volume increase operation equal to
media) input. the value of 'volumeinterval'. A valid value is a DTMF Character
(see Section 8.2). The attribute is optional. There is no
default value.
The dialog is invoked with the URI "promptandrecord". 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 8.2). The attribute is optional. There is no
default value.
The dialog execution model consists of: It is an error if any VCR key (ffkey, rwkey, pausekey, resumekey,
volupkey, voldnkey) is specified with the same value except that the
pausekey and resumekey may have the same value.
1. Playing prompts in the order specified until completion. [Editors Note:IVR11 Do we need a speed VCR control as well? ]
2. Recording input from the user in the mimetype format. Recording [Editors Note:IVR12 it has been proposed that termchar should be
is initiated if user input is received before timeout expires. replaced by termkeys (DTMF string value) to allow termination by
The recording is terminated by DTMF input, the maximum duration multiple characters (e.g. '**'). An additional attribute would
being exceeded or a final silence after recording, as specified probably also be need to control interdigit timing within this
in dtmfterm, maxtime and finalsilence parameters respectively. string. Is this functionality required for this package?]
Use of VAD (Voice Activity Detection) to initiate and terminate
recording is controlled by vadinitial and vadfinal respectively.
3. If recording is not initiated, steps 1 - 2 are repeated for the The <collect> element has the following child elements:
value of iterations.
4. Returning status, reason and result parameters. <grammar>: indicates a custom grammar format (see Section 5.3.1).
The element is optional.
The input and output parameter are summarized and defined below. The custom grammar takes priority over the internal grammar. If a
<grammar> element is specified, it MUST be used for DTMF collection.
+--------------+-----------+---------------------------+------------+ DTMF collection has the following execution model upon
| Name | Direction | Description | Definition | initialization:
+--------------+-----------+---------------------------+------------+
| prompts | input | prompts to play | Table 34 |
| | | | |
| iterations | input | maximum attempts | Table 35 |
| | | | |
| timeout | input | timeout to wait for input | Table 36 |
| | | | |
| mimetype | input | mimetype of the recording | Table 37 |
| | | | |
| vadinitial | input | whether VAD is used to | Table 38 |
| | | initiate recording | |
| | | | |
| vadfinal | input | whether VAD is used to | Table 39 |
| | | terminate recording | |
| | | | |
| dtmf | input | recording terminated by | Table 40 |
| | | DTMF | |
| | | | |
| maxtime | input | maximum duration of | Table 41 |
| | | recording | |
| | | | |
| finalsilence | input | final silence to | Table 42 |
| | | terminate recording | |
| | | | |
| status | output | status code | Table 43 |
| | | | |
| reason | output | reason for status | Table 44 |
| | | | |
| result | output | URI for recording | Table 45 |
+--------------+-----------+---------------------------+------------+
+-------------+-----------------------------------------------------+
| Name | prompts |
+-------------+-----------------------------------------------------+
| Description | Initial prompts to play |
| | |
| Direction | input |
| | |
| Type | URIList |
| | |
| Optional | Yes |
| | |
| Possible | A valid URIList |
| Values | |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 34: prompts 1. If an error occurs during execution, then collection terminates
and the error is reported in the status attribute (see
Section 5.5) of the <dialogexit> event.
+-------------+-----------------------------------------------------+ 2. The digit buffer is cleared if the value of the cleardigitbuffer
| Name | iterations | attribute is true.
+-------------+-----------------------------------------------------+
| Description | Maximum number of times the promptandrecord dialog |
| | is to be played |
| | |
| Direction | input |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | Yes |
| | |
| Possible | A valid non-negative integer. A value of 0 |
| Values | indicates that the dialog is repeated until halted |
| | by other means. |
| | |
| Default | 0 |
+-------------+-----------------------------------------------------+
Table 35: iterations 3. A timer with the duration of the value of the timeout attribute
is activated. If the timer expires before DTMF input collection
has completed, then collection execution terminates and the
dialogexit result contains a <collectinfo> (see Section 5.5.2)
with the termmode attribute set to noinput.
+-------------+-----------------------------------------------------+ 4. If DTMF input matches any VCR keys (for example the ffkey), then
| Name | timeout | the appropriate operation is applied to the active prompts; this
+-------------+-----------------------------------------------------+ is a no-op if a prompt is not specified, or there are no active
| Description | Indicates the time to wait for user input. | prompts. If a seek operation (ffkey, rwkey) attempts to go
| | | beyond the beginning or end of the prompt queue, then it is
| Direction | input | automatically truncated to the prompt beginning or end
| | | respectively. If the pause operation attempts to pause output
| Type | Time Designation | when it is already paused, then the operation is ignored. If the
| | | resume operation attempts to resume when the prompts are not
| Optional | Yes | paused, then the operation is ignored. If a volume operations
| | | attempts to go beyond the minimum or maximum volume supported by
| Possible | A valid TimeDesignation value. | the platform, then the operation is ignored. DTMF input matching
| Values | | VCR controls is ignored for grammar matching.
| | |
| Default | 5s |
+-------------+-----------------------------------------------------+
Table 36: timeout 5. If DTMF input matches the value of the escapekey attribute, then
the timer is canceled and DTMF collection is re-initialized.
+-------------+-----------------------------------------------------+ 6. Other DTMF input is matched to the grammar. Valid DTMF patterns
| Name | mimetype | are either a simple digit string where the maximum length is
+-------------+-----------------------------------------------------+ determined by the maxdigits attribute and may be terminated by
| Description | The media format of the resulting recording. | the character in the termchar attribute; or a custom DTMF grammar
| | | specified with the <grammar> element. The attributes
| Direction | input | interdigittimeout and termtimeout control interdigit timeout and
| | | the terminating timeout respectively.
| Type | mimetype |
| | |
| Optional | Yes |
| | |
| Possible | A valid mimetype value. |
| Values | |
| | |
| Default | None |
+-------------+-----------------------------------------------------+
Table 37: mimetype 7. If the input completely matches the grammar, the timer is
canceled, collection execution terminates and the dialogexit
result contains a <collectinfo> (see Section 5.5.2) with the
termmode attribute set to match.
+-------------+-----------------------------------------------------+ 8. If the input does not match the grammar, the timer is canceled,
| Name | vadinitial | collection execution terminates and the dialogexit result
+-------------+-----------------------------------------------------+ contains a <collectinfo> (see Section 5.5.2) with the termmode
| Description | Control whether voice activity detection can be | attribute set to nomatch.
| | used to initiate recording |
| | |
| Direction | input |
| | |
| Type | Boolean |
| | |
| Optional | Yes |
| | |
| Possible | A valid Boolean value. A value of true indicates |
| Values | recording may be initiated using voice activity |
| | detection. A value of false indicates that |
| | recording must not be initiated using voice |
| | activity detection. |
| | |
| Default | true |
+-------------+-----------------------------------------------------+
Table 38: vadinitial 5.3.1. <grammar>
+-------------+-----------------------------------------------------+ The <grammar> element allows a custom grammar, inline or external, to
| Name | vadfinal | be specified. Custom grammars permit the full range of DTMF
+-------------+-----------------------------------------------------+ characters including '*' and '#' to be specified for DTMF pattern
| Description | Control whether voice activity detection can be | matching.
| | used to terminate recording |
| | |
| Direction | input |
| | |
| Type | Boolean |
| | |
| Optional | Yes |
| | |
| Possible | A valid Boolean value. A value of true indicates |
| Values | recording may be terminated using voice activity |
| | detection. A value of false indicates that |
| | recording must not be terminated using voice |
| | activity detection. |
| | |
| Default | true |
+-------------+-----------------------------------------------------+
Table 39: vadfinal The <grammar> element has the following attributes:
+-------------+-----------------------------------------------------+ src: specifies the location of an external grammar. A valid value
| Name | dtmfterm | is a URI (see Section 8.9). The attribute is optional. There is
+-------------+-----------------------------------------------------+ no default value.
| Description | Indicates whether recording can be terminated by |
| | DTMF input |
| | |
| Direction | input |
| | |
| Type | Boolean |
| | |
| Optional | Yes |
| | |
| Possible | A valid Boolean value. A value of true indicates |
| Values | that recording can be terminated by DTMF. A value |
| | of false indicates that recording cannot be |
| | terminated by DTMF. |
| | |
| Default | true |
+-------------+-----------------------------------------------------+
Table 40: dtmfterm type: identifies the preferred type of the grammar document
identified by the src attribute. A valid value is a MIME type
(see Section 8.10). The attribute is optional. There is no
default value.
+-------------+-----------------------------------------------------+ The <grammar> element allows inline grammars to be specified. XML
| Name | maxtime | grammar formats MUST use a namespace other than the one used in this
+-------------+-----------------------------------------------------+ specification. Non-XML grammar formats MAY use a CDATA section.
| Description | The maximum duration of the recording |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 15s |
+-------------+-----------------------------------------------------+
Table 41: maxtime The MS MUST support the [SRGS] grammar format and MS MAY support KPML
([RFC4730]) or other grammar formats.
+-------------+-----------------------------------------------------+ It is an error if a grammar format is specified which is not
| Name | finalsilence | supported by the MS.
+-------------+-----------------------------------------------------+
| Description | The interval of silence that indicates end of |
| | speech. This parameter is ignored if vadfinal has |
| | the value false. |
| | |
| Direction | input |
| | |
| Type | Time Designation |
| | |
| Optional | Yes |
| | |
| Possible | A valid TimeDesignation value. |
| Values | |
| | |
| Default | 5s |
+-------------+-----------------------------------------------------+
Table 42: finalsilence [Editors Note:IVR13 One drawback of using <grammar> with an inline
custom grammar is that nested <grammar> elements are needed for SRGS:
i.e. custom <grammar> element and inside that a <grammar> element in
the SRGS namespace. The alternative would be (a) <grammar> element
is only for external grammars, and (b) inline grammars are specified
as children of <collect> (with suitable co-occurrence restrictions).
Feedback is required to determined if the nesting is confusing or
not. ]
+-------------+-----------------------------------------------------+ Example: in CONTROL message from AS to MS, the following request
| Name | status | starts a dialog where DTMF collection is determined by an inline SRGS
+-------------+-----------------------------------------------------+ grammar:
| Description | A status code indicating success or failure of the |
| | promptandrecord dialog |
| | |
| Direction | output |
| | |
| Type | Non-Negative Integer |
| | |
| Optional | No |
| | |
| Possible | 1 for success; otherwise an error code (600, 601, |
| Values | 603). See Table 47 |
| | |
| Default | none |
+-------------+-----------------------------------------------------+
Table 43: status <dialogstart connectionid="con1">
<basicivr>
<collect cleardigitbuffer="false" timeout="20s"
interdigittimeout="1s" skipinterval="10s"
rwkey="4" ffkey="6">
<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">
| Name | reason | <one-of>
+-------------+-----------------------------------------------------+ <item>
| Description | A textual description providing a reason for the | <item repeat="4">
| | status code; e.g. details on an error | <ruleref uri="#digit"/>
| | | </item>#</item>
| Direction | output | <item>* 9</item>
| | | </one-of>
| Type | String | </rule>
| | |
| Optional | Yes |
| | |
| Possible | A valid String value |
| Values | |
| | |
| Default | Empty string |
+-------------+-----------------------------------------------------+
Table 44: reason </grammar>
</grammar>
</collect>
</basicivr>
</dialogstart>
+-------------+-----------------------------------------------------+ The same grammar could also be referenced externally (and take
| Name | result | advantage of HTTP caching):
+-------------+-----------------------------------------------------+
| Description | A URI referencing the media recording |
| | |
| Direction | output |
| | |
| Type | URI |
| | |
| Optional | The parameter is mandatory if status is 1; |
| | otherwise, optional. |
| | |
| Possible | A valid URI value |
| Values | |
| | |
| Default | Empty string |
+-------------+-----------------------------------------------------+
Table 45: result <dialogstart connectionid="con1">
<basicivr>
<collect cleardigitbuffer="false" timeout="20s"
interdigittimeout="1s" skipinterval="10s"
rwkey="4" ffkey="6">
<grammar type=""application/srgs+xml"
src="http://example.org/pin.grxml/>
</collect>
</basicivr>
</dialogstart>
In addition to the prompt extensions described in Table 14, the See Section 6 and Section 7 for further examples.
following additional parameters are under consideration for a later
version.
+--------------------+----------------------------------------------+ 5.4. <record>
| Name | Description |
+--------------------+----------------------------------------------+
| destination | URI to send recording using HTTP |
| | |
| beep | indicates whether a platform-specific beep |
| | is used immediately prior to recording |
| | |
| noinputprompts | prompts to play when there is no user input |
| | |
| successprompts | prompts to play when recording is successful |
| | |
| failureprompts | prompts to play when no recording has been |
| | made after all the iterations tried |
| | |
| duration | duration of the recording (output) |
| | |
| mimetype | mimetype of the recording (output) |
| | |
| iterationcount | number of iterations (output) |
| | |
| terminationmode | indication of why recording terminated: e.g. |
| | dtmf, maxtime reached, externalevent or |
| | finalsilence detected (output) |
| | |
| promptplayedamount | duration of initial prompts played if prompt |
| | interrupted (output) |
+--------------------+----------------------------------------------+
5.4. Status Codes The <record> element defines how media input is recorded.
The following table describes the codes returned in the status output The <record> element has the following attributes:
parameter for template dialogs.
+-----------+-------------------------------------------------------+ timeout: indicates the time to wait for user input. A valid value
| status | description | is a Time Designation (see Section 8.7). The attribute is
+-----------+-------------------------------------------------------+ optional. The default value is 5s.
| 0 | dialog terminated externally |
| | |
| 1 | success |
| | |
| 600 | unspecified error |
| | |
| 601 | invalid input parameter |
| | |
| 602 | no prompts defined (only playannouncement) |
| | |
| 603 | maximum iterations reached without valid input (not |
| | playannouncement) |
+-----------+-------------------------------------------------------+
Table 47: status codes for all templates dialogs type: specifies the type of the resulting recording format. The
type value may include additional parameters for guiding
recording; for example, [RFC4281] defines a 'codec' parameter for
'bucket' media types like video/3gpp. A valid value is a MIME
type (see Section 8.10). The attribute is optional. There is no
default value (recording format is MS-specific).
5.5. Type Definitions dest: specifies the location of the resulting recording. The MS MAY
stream the recorded data to the location as recording occurs. A
valid value is a URI (see Section 8.9). The attribute is
optional. If not specified, the MS MUST provide a recording
location URI; this recording is available until the connection or
conference associated with the dialog is destroyed.
This section defines types referenced in template parameters. vadinitial: Control whether voice activity detection can be used to
initiate the recording operation. A valid value is a boolean (see
Section 8.1). A value of true indicates recording may be
initiated using voice activity detection. A value of false
indicates that recording must not be initiated using voice
activity detection. The attribute is optional. The default value
is true.
5.5.1. Boolean vadfinal: Control whether voice activity detection can be used to
terminate the recording operation. A valid value is a boolean
(see Section 8.1). A value of true indicates recording may be
terminated using voice activity detection. A value of false
indicates that recording must not be terminated using voice
activity detection. The attribute is optional. The default value
is true.
The value space of boolean is the set {true, false}. dtmfterm: Indicates whether the recording operation is terminated by
DTMF input. A valid value is a boolean (see Section 8.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.
5.5.2. DTMFChar maxtime: indicates The maximum duration of the recording. A valid
value is a Time Designation (see Section 8.7). The attribute is
optional. The default value is 15s.
A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6, beep: indicates whether a 'beep' should be played immediately prior
7, 8, 9, #, *, A, B, C, D}. to initiation of the recording operation. A valid value is a
boolean (see Section 8.1). The attribute is optional. The
default value is false.
5.5.3. DTMFString finalsilence: indicates the interval of silence that indicates end
of speech. This parameter is ignored if vadfinal (vadfinal) has
the value false. A valid value is a Time Designation (see
Section 8.7). The attribute is optional. The default value is
5s.
A String composed of one or more DTMFChars. It is an error if a dest attribute is specified and the MS does not
understand the URI protocol, cannot locate the URI, or cannot send
recorded data successfully to the location.
5.5.4. Non-Negative Integer The <record> element has no child elements.
The value space of non-negative integer is the infinite set Recording has the following execution model upon initialization:
{0,1,2,...}.
5.5.5. Positive Integer 1. If an error occurs during execution, then recording terminates
and the error is reported in the status attribute (see
Section 5.5) of the <dialogexit> event.
The value space of positive integer is the infinite set {1,2,...}. 2. If a beep attribute with the value of true is specified, then a
beep tone is played.
5.5.6. String 3. A timer with the duration of the value of the timeout attribute
is activated. If the timer expires before the recording
operation is completed, then recording execution terminates and
the dialogexit result contains a <recordinfo> (see Section 5.5.3)
with the termmode attribute set to noinput.
A string in the character encoding associated with the XML element. 4. 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 operations is initiated when voice activity is
detected.
5.5.7. Time Designation 5. When the recording operation is initiated, a timer is started for
the value of the maxtime attribute. If the timer expires before
the recording operation is complete, then recording execution
terminates and the dialogexit result contains a <recordinfo> (see
Section 5.5.3) with the termmode attribute set to maxtime.
A time designation consists of a non-negative real number followed by 6. During the record operation user media input is recording in the
a time unit identifier. format specified by the value of the type attribute. If the dest
attribute is specified, then recorded input is sent to that
location. Otherwise, MS uses an internal location.
The time unit identifiers are: "ms" (milliseconds) and "s" (seconds). 7. If the dtmfterm attribute has the value true and DTMF input is
detected during the record operation, then the recording
terminates and and the dialogexit result contains a <recordinfo>
(see Section 5.5.3) with the termmode attribute set to dtmf.
Examples include: "3s", "850ms", "0.7s", ".5s" and "+1.5s". 8. If vadfinal attribute has the value true, then the recording
operation is terminated when a period of silence, with the
duration specified by the value of the finalsilence attribute, is
detected. The dialogexit result contains a <recordinfo> (see
Section 5.5.3) with the termmode attribute set to finalsilence.
5.5.8. Percentage 5.5. Exit Information
A percentage consists of a Positive Integer followed by "%". When a basic ivr dialog exits, information is reported in a
<dialogexit> notification event.
Examples include: "100%", "500%" and "10%". The content model of the <dialogexit> element defined in
Section 4.3.2 is extended with the following child elements:
5.5.9. URI <promptinfo>: reports information about the prompt execution (see
Section 5.5.1). The element is optional.
Uniform Resource Indicator as defined in [RFC2396]. <collectinfo>: reports information about the collect execution (see
Section 5.5.2). The element is optional.
5.5.10. URIList <recordinfo>: reports information about the record execution (see
Section 5.5.3). The element is optional.
A list of URIs. 5.5.1. <promptinfo>
5.5.11. mimetype The <promptinfo> element reports the information about prompt
execution. It has the following attributes:
A string formated as a IANA mimetype. duration: indicates the cumulative duration of prompt playing in
milliseconds. A valid value is a non-negative integer (see
Section 8.4). The attribute is optional. There is no default
value.
6. AS-MS Interaction Examples iterations: indicates the number of iterations played completely. A
valid value is a positive integer (see Section 8.5). The
attribute is optional. There is no default value.
termmode: indicates how playback was terminated. Valid values are:
'completed', 'maxduration' or 'bargein'. The attribute is
mandatory.
The <promptinfo> element has no child elements.
5.5.2. <collectinfo>
The <collectinfo> element reports the information about collect
execution. It has the following attributes:
dtmf: DTMF input collected from the user. A valid value is a DTMF
string (see Section 8.3 with no space between characters. The
attribute is optional. There is no default value.
termmode: indicates how collection was terminated. Valid values
are: 'match', 'noinput' or 'nomatch'. The attribute is mandatory.
The <collectinfo> element has no child elements.
5.5.3. <recordinfo>
The <recordinfo> element reports the information about record
execution. It has the following attributes:
recording: references the location to which media is recorded. A
valid value is a URI (see Section 8.9). The attribute is
optional. There is no default value.
type: indicates the format of the recording. A valid value is a
MIME type (see Section 8.10). The attribute is optional. There
is no default value.
duration: indicates the duration of the recording in milliseconds.
A valid value is a non-negative integer (see Section 8.4). The
attribute is optional. There is no default value.
size: indicates the size of the recording in bytes. A valid value
is a non-negative integer (see Section 8.4). The attribute is
optional. There is no default value.
termmode: indicates how recording was terminated. Valid values are:
'noinput', 'dtmf', 'maxtime', and 'finalsilence'. The attribute
is mandatory.
The <recordinfo> element has no child elements.
6. AS-MS Dialog Interaction Examples
The following example assume a control channel has been established The following example assume a control channel has been established
as described in the SIP Control Framework [SIPCF]. as described in the Media Control Channel Framework ([MCCF]).
The XML messages are in angled brackets; the REPORT status is in The XML messages are in angled brackets; the REPORT status is in
round brackets. Other aspects of the protocol are omitted for round brackets. Other aspects of the protocol are omitted for
readability. readability.
6.1. Starting an IVR dialog 6.1. Starting an IVR dialog
An IVR dialog is started successfully, and dialogexit notification An IVR dialog is started successfully, and dialogexit notification
<event> is sent from the MS to the AS when the dialog exits normally. <event> is sent from the MS to the AS when the dialog exits normally.
Application Server (AS) Media Server (MS) Application Server (AS) Media Server (MS)
| | | |
| (1) CONTROL: <dialogstart> | | (1) CONTROL: <dialogstart> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (2) 202 | | (2) 202 |
| <--------------------------------------- | | <--------------------------------------- |
| | | |
| (3) REPORT: (pending) |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| | | |
| (5) REPORT: <response status="200"/> | | (3) REPORT: <response status="200"/> |
| (terminate) | | (terminate) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (6) 200 | | (4) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (7) REPORT:<event name="dialogexit"/> | | (5) CONTROL: <event ... /> |
| (notify) | | |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (8) 200 | | (6) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
6.2. IVR dialog fails to start 6.2. IVR dialog fails to start
An IVR dialog fails to start due to an unknown template. An IVR dialog fails to start due to an unknown dialog type.
Application Server (AS) Media Server (MS) Application Server (AS) Media Server (MS)
| | | |
| (1) CONTROL: <dialogstart> | | (1) CONTROL: <dialogstart> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (2) 202 | | (2) 202 |
| <--------------------------------------- | | <--------------------------------------- |
| | | |
| (3) REPORT: (pending) | | (3) REPORT: <response status="409"/> |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) REPORT: <response status="409"/> |
| (terminate) | | (terminate) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (6) 200 | | (4) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
6.3. Preparing and starting an IVR dialog 6.3. Preparing and starting an IVR dialog
An IVR dialog is prepared and started successfully, and then the An IVR dialog is prepared and started successfully, and then the
dialog exits normally. dialog exits normally.
Application Server (AS) Media Server (MS) Application Server (AS) Media Server (MS)
| | | |
| (1) CONTROL: <dialogprepare> | | (1) CONTROL: <dialogprepare> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (2) 202 | | (2) 202 |
| <--------------------------------------- | | <--------------------------------------- |
| | | |
| (3) REPORT: (pending) | | (3) REPORT: <response status="200"/> |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) REPORT: <response status="200"/> |
| (terminate) | | (terminate) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (6) 200 | | (4) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (7) CONTROL: <dialogstart> | | (5) CONTROL: <dialogstart> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (8) 202 | | (6) 202 |
| <--------------------------------------- | | <--------------------------------------- |
| | | |
| (9) REPORT: (pending) | | (7) REPORT: <response status="200"/> |
| <---------------------------------------- |
| |
| (10) 200 |
| ---------------------------------------> |
| |
| (11) REPORT: <response status="200"/> |
| (terminate) | | (terminate) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (12) 200 | | (8) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (13) REPORT:<event name="dialogexit"/>| | (9) CONTROL: <event .../> |
| (notify) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (14) 200 | | (10) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
6.4. Terminating a dialog immediately 6.4. Terminating a dialog
An IVR dialog is started successfully, and then terminated An IVR dialog is started successfully, and then terminated by the AS.
immediately by the AS. No dialog notification <event>s are sent back The dialogexit event is sent by to the AS when the dialog exits.
to the AS.
Application Server (AS) Media Server (MS) Application Server (AS) Media Server (MS)
| | | |
| (1) CONTROL: <dialogstart> | | (1) CONTROL: <dialogstart> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (2) 202 | | (2) 202 |
| <--------------------------------------- | | <--------------------------------------- |
| | | |
| (3) REPORT: (pending) | | (3) REPORT: <response status="200"/> |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) REPORT: <response status="200"/> |
| (terminate) | | (terminate) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (6) 200 |
| ----------------------------------------> |
| |
| (7) CONTROL: <dialogterminate> |
| ----------------------------------------> |
| |
| (8) 200: <response status="200"/> |
| <---------------------------------------- |
| |
Note that in (8) the response to the <dialogterminate/> request is
carried on a framework 200 response.
6.5. Terminating a dialog non-immediately
An IVR dialog is started successfully, and then terminated non-
immediately by the AS, allowing the MS to send a dialogexit
notification <event> with information collected during the dialog.
Application Server (AS) Media Server (MS)
| |
| (1) CONTROL: <dialogstart> |
| ----------------------------------------> |
| |
| (2) 202 |
| <--------------------------------------- |
| |
| (3) REPORT: (pending) |
| <---------------------------------------- |
| |
| (4) 200 | | (4) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (5) REPORT: <response status="200"/> | | (5) CONTROL: <dialogterminate> |
| (terminate) |
| <---------------------------------------- |
| |
| (6) 200 |
| ----------------------------------------> |
| |
| (7) CONTROL: <dialogterminate> |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
| (8) 200: <response status="200"/> | | (6) 200: <response status="200"/> |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (9) REPORT:<event name="dialogexit"/> | | (7) CONTROL: <event .../> |
| (notify) |
| <---------------------------------------- | | <---------------------------------------- |
| | | |
| (10) 200 | | (8) 200 |
| ----------------------------------------> | | ----------------------------------------> |
| | | |
Note that in (8) the response to the <dialogterminate/> request is Note that in (6) the <response> payload to the <dialogterminate/>
carried on a framework 200 response. request is carried on a framework 200 response since it could
complete the requested operation before the transaction timeout.
7. Template Dialog Examples 7. Basic IVR Dialog Examples
The following examples show how playannouncement, promptandcollect The following examples show how <basicivr> is used with
and promptandrecord template dialogs are used with <dialogprepare>, <dialogprepare>, <dialogstart> and <event> elements to play prompts,
<dialogstart> and <event> elements. collect DTMF input and record user input.
The examples do not specify all messages between the AS and MS. The examples do not specify all messages between the AS and MS.
7.1. playannouncement 7.1. Playing announcements
This example prepares an announcement composed of two prompts. This example prepares an announcement composed of two prompts.
<dialogprepare src="basicivr:playannouncement"> <dialogprepare>
<data> <basicivr>
<item name="prompts" <prompt>
value="http://www.example.com/media/Number_09.wav <media src="http://www.example.com/media/Number_09.wav"/>
http://www.example.com/media/Number_11.wav"/> <media src="http://www.example.com/media/Number_11.wav"/>
<item name="iterations" value="2"/> </prompt>
</data> </basicivr>
</dialogprepare> </dialogprepare>
If the dialog is prepared successfully, a dialogprepared message is If the dialog is prepared successfully, a <response> with status 200
returned: is returned:
<response status="200" dialogid="vxi78"/> <response status="200" dialogid="vxi78"/>
The prepared dialog is then started on a conference playing the The prepared dialog is then started on a conference playing the
prompts twice: prompts twice:
<dialogstart prepareddialogid="vxi78" conf-id="conference11"/> <dialogstart prepareddialogid="vxi78" conferenceid="conference11"/>
In the case of a successful dialog, the output is provided in In the case of a successful dialog, the output is provided in
<event>; for example <event>; for example
<event name="dialogexit" dialogid="vxi78"> <event dialogid="vxi78">
<data> <dialogexit status="1">
<item name="status" value="1"/> <promptinfo termmode="completed"/>
</data> </dialogexit>
</event>
In this example, the dialog is started on a sip dialog connection,
but no <data> is specified:
<dialogstart src="basicivr:playannouncement"
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"/>
and an error message is returned:
<event name="dialogexit" dialogid="vxi79">
<data>
<item name="status" value="602"/>
<item name="reason" value="prompts not defined"/>
</data>
</event> </event>
7.2. promptandcollect 7.2. Prompt and collect
This example plays no prompts and just waits for input from the user: This example plays no prompts and just waits for DTMF input from the
user:
<dialogstart src="basicivr:promptandcollect" <dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"/> <basicivr>
<collect/>
</basicivr>
</dialogstart>
If the dialog is successful, then "dialogexit" <event> contains the If the dialog is successful, then "dialogexit" <event> contains the
dtmf collected in its result parameter: dtmf collected in its result parameter:
<event name="dialogexit" dialogid="vxi80"> <event dialogid="vxi80">
<data> <dialogexit status="1">
<item name="status" value="1"/> <collectinfo dtmf="12345" termmode="match"/>
<item name="result" value="12345"/> </dialogexit>
</data>
</event> </event>
In this example, a prompt is played and then we wait for 3 hours for In this example, a prompt is played and then we wait for 3 hours for
a two digit sequence: a two digit sequence:
<dialogstart src="basicivr:promptandcollect" <dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <basicivr>
<data> <prompt>
<item name="prompts" value="http://www.example.com/prompt1.wav"/> <media src="http://www.example.com/prompt1.wav"/>
<item name="timeout" value="1080s"/> </prompt>
<item name="maxdigits" value="2"/> <collect timeout="1080s" maxdigits="2"/>
<item name="iterations" value="1"/> </basicivr>
</data>
</dialogstart> </dialogstart>
If no user input is collected within 3 hours, then following would be If no user input is collected within 3 hours, then following would be
returned: returned:
<event name="dialogexit" dialogid="vxi81"> <event dialogid="vxi81">
<data> <dialogexit status="1" >
<item name="status" value="603"/> <collectinfo termmode="noinput"/>
</data> </dialogexit>
</event> </event>
And finally in this example, one of the input parameters is invalid: And finally in this example, one of the input parameters is invalid:
<dialogstart src="basicivr:promptandcollect" <dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <basicivr>
<data> <prompt iterations="two">
<item name="prompts" value="http://www.example.com/prompt1.wav"/> <media src="http://www.example.com/prompt1.wav"/>
<item name="iterations" value="two"/> </prompt>
<item name="cleardigitbuffer" value="true"/> <collect cleardigitbuffer="true" bargein="true"
<item name="bargein" value="true"/> timeout="4s" interdigittimeout="2s"
<item name="timeout" value="4s"/> termtimeout="0s maxdigits="2"/>
<item name="interdigittimeout" value="2s"/> </basicivr>
<item name="termtimeout" value="0s"/>
<item name="maxdigits" value="2"/>
</data>
</dialogstart> </dialogstart>
The error is reported in a dialogexit <event>: The error is reported in a the response:
<event name="dialogexit" dialogid="vxi82">
<data>
<item name="status" value="601"/>
<item name="reason" value="iterations invalid: two"/>
</data>
</event> <response status="411" dialogid="vxi82"
reason="iterations value invalid: two"/>
7.3. promptandrecord 7.3. Prompt and record
In this example, the user is prompted, then their input is recorded In this example, the user is prompted, then their input is recorded
for a maximum of 30 seconds. for a maximum of 30 seconds.
<dialogstart src="basicivr:promptandrecord" <dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns"> <basicivr>
<data> <prompt>
<item name="prompts" <media src="http://www.example.com/media/sayname.wav"/>
value="http://www.example.com/media/sayname.wav </prompt>
http://www.example.com/media/beep.wav"/> <record dtmfterm="false" maxtime="30s" beep="true"/>
<item name="dtmfterm" value="false"/> </basicivr>
<item name="maxtime" value="30s"/>
</data>
</dialogstart> </dialogstart>
If successful, the following is returned in a dialogexit <event>: If successful, the following is returned in a dialogexit <event>:
<event name="dialogexit" dialogid="vxi83"> <event dialogid="vxi83">
<data> <dialogexit status="1">
<item name="status" value="1"/> <recordinfo recording="http://www.example.com/recording1.wav"
<item name="result" value="http://www.example.com/recording1.wav"/> termmode="dtmf"/>
</data> </dialogexit>
</event> </event>
8. Formal Syntax 8. Type Definitions
[Editors Note: A later version of the XML schema will provide more This section defines types referenced in attribute definitions.
constraints as expressed in the textual definitions; for example,
single occurrence of <data> elements, co-occurence on attributes,
etc.]
[Editors Note: The schema in the 05 version does not allign with 8.1. Boolean
changes made since the 04 version. These changes will occur in the
next version of the document.]
<?xml version="1.0" encoding="UTF-8"?> The value space of boolean is the set {true, false}.
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr-basic"
xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
elementFormDefault="qualified"
xmlns="urn:ietf:params:xml:ns:msc-ivr-basic"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation> 8.2. DTMFChar
<xsd:documentation>Basic IVR 1.0 schema (20061019)</xsd:documentation>
</xsd:annotation>
<xsd:import A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6,
namespace="urn:ietf:params:xml:ns:control:framework-attributes" 7, 8, 9, #, *, A, B, C, D}.
schemaLocation="framework.xsd"/>
<xsd:element name="dialogprepare"> 8.3. DTMFString
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> A String composed of one or more DTMFChars.
<xsd:element ref="data"/>
<xsd:element ref="subscribe"/> 8.4. Non-Negative Integer
<xsd:any namespace="##other" processContents="strict"/>
The value space of non-negative integer is the infinite set
{0,1,2,...}.
8.5. Positive Integer
The value space of positive integer is the infinite set {1,2,...}.
8.6. String
A string in the character encoding associated with the XML element.
8.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".
8.8. Percentage
A percentage consists of a Positive Integer followed by "%".
Examples include: "100%", "500%" and "10%".
8.9. URI
Uniform Resource Indicator as defined in [RFC3986].
8.10. mimetype
A string formated as a IANA mimetype.
8.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 RFC3066 ([RFC3066]) code where the language code is
required and a country code or other subtag identifier is optional.
9. Formal Syntax
This package defines two XML schema:
1. msc-ivr-common.xsd: defines the common datatypes, attributes and
dialog management elements. It does not use a namespace.
2. msc-ivr-basic.xsd: defines the basic ivr elements and uses schema
redefinition to extend dialog management elements. All elements
in this schema, including the imported dialog management
elements, are in the urn:ietf:params:xml:ns:msc-ivr-basic
namespace.
The schema are dependent upon the schema (framework.xsd) defined in
Section 16.1 of the Control Framework [MCCF]
Both schema are fully extensible: attributes and elements from other
namespaces are permitted, and extensions can be specified using the
<redefine> mechanism.
The schema of extension control packages MUST imported one of these
schema and specify how they extend the elements. Extensions to the
<basicivr> element use msc-ivr-basic.xsd. Extensions to the dialog
management elements use msc-ivr-common.xsd.
[Editors Note:IVR14 A later version of this document may provide a
RelaxNG schema which provides better support for co-occurrence
constraints than XML schema. Does anyone want/need such a schema?]
9.1. msc-ivr-common.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
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 Common 1.0 (20080225)
This is the common core schema of the IVR packages defined
as part of the Basic IVR Control Package. It specifies common
datatypes, attributes and dialog control element definitions.
</xsd:documentation>
</xsd:annotation>
<!--
###################################################
SCHEMA IMPORTS
###################################################
-->
<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>
<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>
<!--
#####################################################
COMMON ELEMENTS
#####################################################
-->
<!-- dialogprepare -->
<xsd:attributeGroup name="msc.ivr.common.dialogprepare.attlist">
<xsd:attribute name="src" type="xsd:anyURI" />
<xsd:attribute name="type" type="mime.datatype" />
<xsd:attribute name="dialogid" type="dialogid.datatype" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.dialogprepare.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="src" type="URI.datatype" use="required"/> </xsd:group>
<xsd:attribute name="dialogid" type="dialogid.datatype"/> <xsd:group name="msc.ivr.common.dialogprepare.content">
<xsd:anyAttribute namespace="##other" processContents="strict"/> <xsd:sequence>
<xsd:group ref="msc.ivr.common.dialogprepare.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.dialogprepare.type">
<xsd:group ref="msc.ivr.common.dialogprepare.content" />
<xsd:attributeGroup ref="msc.ivr.common.dialogprepare.attlist" />
</xsd:complexType>
<xsd:element name="dialogprepare"
type="msc.ivr.common.dialogprepare.type" />
<!-- dialogstart -->
<xsd:attributeGroup name="msc.ivr.common.dialogstart.attlist">
<xsd:attribute name="src" type="xsd:anyURI" />
<xsd:attribute name="type" type="mime.datatype" />
<xsd:attribute name="dialogid" type="dialogid.datatype" />
<xsd:attribute name="prepareddialogid" type="dialogid.datatype" />
<xsd:attributeGroup ref="fw:framework-attributes" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.dialogstart.mix">
<xsd:choice>
<xsd:element ref="stream" minOccurs="0" maxOccurs="unbounded" />
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.dialogstart.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.dialogstart.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.dialogstart.type">
<xsd:group ref="msc.ivr.common.dialogstart.content" />
<xsd:attributeGroup ref="msc.ivr.common.dialogstart.attlist" />
</xsd:complexType>
<xsd:element name="dialogstart"
type="msc.ivr.common.dialogstart.type" />
<!-- dialogterminate -->
<xsd:attributeGroup name="msc.ivr.common.dialogterminate.attlist">
<xsd:attribute name="dialogid" type="dialogid.datatype"
use="required" />
<xsd:attribute name="immediate" type="boolean.datatype"
default="false" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.dialogterminate.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.dialogterminate.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.dialogterminate.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.dialogterminate.type">
<xsd:group ref="msc.ivr.common.dialogterminate.content" />
<xsd:attributeGroup ref="msc.ivr.common.dialogterminate.attlist" />
</xsd:complexType> </xsd:complexType>
<xsd:element name="dialogterminate"
type="msc.ivr.common.dialogterminate.type" />
<!-- response -->
<xsd:attributeGroup name="msc.ivr.common.response.attlist">
<xsd:attribute name="status" type="status.datatype" use="required" />
<xsd:attribute name="reason" type="xsd:string" />
<xsd:attribute name="dialogid" type="dialogid.datatype" />
<xsd:attributeGroup ref="fw:framework-attributes" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.response.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.response.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.response.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.response.type">
<xsd:group ref="msc.ivr.common.response.content" />
<xsd:attributeGroup ref="msc.ivr.common.response.attlist" />
</xsd:complexType>
<xsd:element name="response" type="msc.ivr.common.response.type" />
<!-- event -->
<xsd:attributeGroup name="msc.ivr.common.event.attlist">
<xsd:attribute name="dialogid" type="dialogid.datatype"
use="required" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.event.mix">
<xsd:choice>
<xsd:element ref="dialogexit" />
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.event.content">
<xsd:choice>
<xsd:group ref="msc.ivr.common.event.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:complexType name="msc.ivr.common.event.type">
<xsd:group ref="msc.ivr.common.event.content" />
<xsd:attributeGroup ref="msc.ivr.common.event.attlist" />
</xsd:complexType>
<xsd:element name="event" type="msc.ivr.common.event.type" />
<!-- dialogexit-->
<xsd:attributeGroup name="msc.ivr.common.dialogexit.attlist">
<xsd:attribute name="status" type="xsd:positiveInteger"
use="required" />
<xsd:attribute name="reason" type="xsd:string" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.common.dialogexit.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.dialogexit.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.dialogexit.mix"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.dialogexit.type">
<xsd:group ref="msc.ivr.common.dialogexit.content" />
<xsd:attributeGroup ref="msc.ivr.common.dialogexit.attlist" />
</xsd:complexType>
<xsd:element name="dialogexit"
type="msc.ivr.common.dialogexit.type" />
<!-- stream -->
<xsd:attributeGroup name="msc.ivr.common.stream.attlist">
<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:attributeGroup ref="msc.common.attribs" />
</xsd:element> </xsd:attributeGroup>
<xsd:group name="msc.ivr.common.stream.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.stream.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.stream.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.common.stream.type">
<xsd:group ref="msc.ivr.common.stream.content" />
<xsd:attributeGroup ref="msc.ivr.common.stream.attlist" />
</xsd:complexType>
<xsd:element name="stream" type="msc.ivr.common.stream.type" />
<!--
#####################################################
<xsd:element name="dialogstart"> COMMON ATTRIBUTES AND ELEMENTS
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> #####################################################
<xsd:element ref="stream"/> -->
<xsd:element ref="data"/> <xsd:attributeGroup name="msc.common.attribs">
<xsd:element ref="subscribe"/> <xsd:annotation>
<xsd:any namespace="##other" processContents="strict"/> <xsd:documentation>
group allowing attributes from other namespaces
</xsd:documentation>
</xsd:annotation>
<xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:attributeGroup>
<xsd:group name="msc.common.content">
<xsd:annotation>
<xsd:documentation>
group allowing elements from other namespaces
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<!--
####################################################
COMMON DATATYPES
####################################################
-->
<xsd:simpleType name="mime.datatype">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
<xsd:simpleType name="dialogid.datatype">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
<xsd:simpleType name="boolean.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="true" />
<xsd:enumeration value="false" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="status.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<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: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>
</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:schema>
9.2. msc-ivr-basic.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr-basic"
elementFormDefault="qualified"
xmlns="urn:ietf:params:xml:ns:msc-ivr-basic"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>
IETF MediaCtrl IVR Basic 1.0 (20080225)
This is the schema of the Basic IVR control package. It imports
the msc-ivr-common schema (dialogprepare, etc) and specifies
basicivr, prompt, collect and record elements.
The schema namespace is urn:ietf:params:xml:ns:msc-ivr-basic
</xsd:documentation>
</xsd:annotation>
<!--
#############################################################
SCHEMA IMPORTS
#############################################################
-->
<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:redefine schemaLocation="msc-ivr-common.xsd">
<xsd:annotation>
<xsd:documentation>
This import brings in the IVR common package and redefines some
elements as follows: [1] adds basicivr element to dialogprepare
[2] adds basicivr element to dialogstart [3] adds promptinfo,
collectinfo and recordinfo as children of dialogexit element
</xsd:documentation>
</xsd:annotation>
<xsd:group name="msc.ivr.common.dialogprepare.mix">
<xsd:choice>
<xsd:group ref="msc.ivr.common.dialogprepare.mix" />
<xsd:element ref="basicivr" minOccurs="0" maxOccurs="1" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.dialogstart.mix">
<xsd:choice>
<xsd:group ref="msc.ivr.common.dialogstart.mix" />
<xsd:element ref="basicivr" minOccurs="0" maxOccurs="1" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.common.dialogexit.mix">
<xsd:choice>
<xsd:group ref="msc.ivr.common.dialogexit.mix" />
<xsd:element ref="promptinfo" minOccurs="0" maxOccurs="1" />
<xsd:element ref="collectinfo" minOccurs="0" maxOccurs="1" />
<xsd:element ref="recordinfo" minOccurs="0" maxOccurs="1" />
</xsd:choice>
</xsd:group>
</xsd:redefine>
<!--
#############################################################
BASIC IVR ELEMENTS
#############################################################
-->
<!-- basicivr -->
<xsd:attributeGroup name="msc.ivr.basicivr.basicivr.attlist">
<xsd:attribute name="version" type="xsd:string" default="1.0" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.basicivr.mix">
<xsd:choice>
<xsd:element ref="prompt" minOccurs="0" maxOccurs="1" />
<xsd:element ref="collect" minOccurs="0" maxOccurs="1" />
<xsd:element ref="record" minOccurs="0" maxOccurs="1" />
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="src" type="URI.datatype"/> </xsd:group>
<xsd:attribute name="dialogid" type="dialogid.datatype"/>
<xsd:attribute name="prepareddialogid" type="dialogid.datatype"/> <xsd:group name="msc.ivr.basicivr.basicivr.content">
<xsd:attributeGroup ref="fw:framework-attributes"/> <xsd:sequence>
<xsd:anyAttribute namespace="##other" processContents="strict"/> <xsd:group ref="msc.ivr.basicivr.basicivr.mix" minOccurs="1"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.basicivr.type">
<xsd:group ref="msc.ivr.basicivr.basicivr.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.basicivr.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="dialogterminate"> <xsd:element name="basicivr" type="msc.ivr.basicivr.basicivr.type" />
<xsd:complexType> <!-- prompt -->
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/> <xsd:attributeGroup name="msc.ivr.basicivr.prompt.attlist">
<xsd:attribute ref="xml:base" />
<xsd:attribute name="bargein" type="boolean.datatype"
default="true" />
<xsd:attribute name="iterations" type="xsd:nonNegativeInteger"
default="1" />
<xsd:attribute name="duration" type="timedesignation.datatype" />
<xsd:attribute name="volume" type="percentage.datatype"
default="100%" />
<xsd:attribute name="offset" type="timedesignation.datatype"
default="0s" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.prompt.mix">
<xsd:choice>
<xsd:element ref="media" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="variable" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="dtmf" minOccurs="0" maxOccurs="unbounded" />
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="dialogid" type="dialogid.datatype" </xsd:group>
use="required"/>
<xsd:attribute name="immediate" type="boolean.datatype" <xsd:group name="msc.ivr.basicivr.prompt.content">
default="false"/> <xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/> <xsd:group ref="msc.ivr.basicivr.prompt.mix"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.prompt.type">
<xsd:group ref="msc.ivr.basicivr.prompt.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.prompt.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="response"> <xsd:element name="prompt" type="msc.ivr.basicivr.prompt.type" />
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <!-- media -->
<xsd:any namespace="##other" processContents="strict"/>
<xsd:attributeGroup name="msc.ivr.basicivr.media.attlist">
<xsd:attribute name="src" type="xsd:anyURI" use="required" />
<xsd:attribute name="type" type="mime.datatype" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.media.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="status" type="status.datatype" </xsd:group>
use="required"/>
<xsd:attribute name="reason" type="xsd:string"/> <xsd:group name="msc.ivr.basicivr.media.content">
<xsd:attribute name="dialogid" type="dialogid.datatype"/> <xsd:sequence>
<xsd:attributeGroup ref="fw:framework-attributes"/> <xsd:group ref="msc.ivr.basicivr.media.mix" minOccurs="0"
<xsd:anyAttribute namespace="##other" processContents="strict"/> maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.media.type">
<xsd:group ref="msc.ivr.basicivr.media.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.media.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="event"> <xsd:element name="media" type="msc.ivr.basicivr.media.type" />
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <!-- variable -->
<xsd:element ref="data"/>
<xsd:any namespace="##other" processContents="strict"/> <xsd:attributeGroup name="msc.ivr.basicivr.variable.attlist">
<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 ref="xml:lang" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.variable.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="name" type="eventname.datatype" </xsd:group>
use="required"/>
<xsd:attribute name="dialogid" type="dialogid.datatype"
use="required"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/> <xsd:group name="msc.ivr.basicivr.variable.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.variable.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.variable.type">
<xsd:group ref="msc.ivr.basicivr.variable.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.variable.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<!-- DATATYPES --> <xsd:element name="variable" type="msc.ivr.basicivr.variable.type" />
<xsd:simpleType name="URI.datatype"> <!-- dtmf -->
<xsd:restriction base="xsd:anyURI"/>
</xsd:simpleType>
<xsd:simpleType name="dialogid.datatype"> <xsd:attributeGroup name="msc.ivr.basicivr.dtmf.attlist">
<xsd:restriction base="xsd:string"/> <xsd:attribute name="digits" type="dtmfstring.datatype"
</xsd:simpleType> 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:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:simpleType name="boolean.datatype"> <xsd:group name="msc.ivr.basicivr.dtmf.mix">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:choice>
<xsd:enumeration value="true"/> <xsd:group ref="msc.common.content" minOccurs="0"
<xsd:enumeration value="false"/> maxOccurs="unbounded" />
</xsd:restriction> </xsd:choice>
</xsd:simpleType> </xsd:group>
<xsd:simpleType name="eventname.datatype"> <xsd:group name="msc.ivr.basicivr.dtmf.content">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:sequence>
<xsd:pattern value="[a-zA-Z0-9\.]+"/> <xsd:group ref="msc.ivr.basicivr.dtmf.mix" minOccurs="0"
</xsd:restriction> maxOccurs="unbounded" />
</xsd:simpleType> </xsd:sequence>
</xsd:group>
<xsd:simpleType name="status.datatype"> <xsd:complexType name="msc.ivr.basicivr.dtmf.type">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:group ref="msc.ivr.basicivr.dtmf.content" />
<xsd:pattern value="[0-9][0-9][0-9]"/> <xsd:attributeGroup ref="msc.ivr.basicivr.dtmf.attlist" />
</xsd:restriction> </xsd:complexType>
</xsd:simpleType>
<xsd:simpleType name="media.datatype"> <xsd:element name="dtmf" type="msc.ivr.basicivr.dtmf.type" />
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="label.datatype"> <!-- collect -->
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="direction.datatype"> <xsd:attributeGroup name="msc.ivr.basicivr.collect.attlist">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:attribute name="cleardigitbuffer" type="boolean.datatype"
<xsd:enumeration value="sendrecv"/> default="true" />
<xsd:enumeration value="sendonly"/> <xsd:attribute name="timeout" type="timedesignation.datatype"
<xsd:enumeration value="recvonly"/> default="5s" />
</xsd:restriction>
</xsd:simpleType>
<!-- SHARED ELEMENTS --> <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" type="xsd:positiveInteger"
default="5" />
<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" type="percentage.datatype"
default="10%" />
<xsd:attribute name="volupkey" type="dtmfchar.datatype" />
<xsd:attribute name="voldnkey" type="dtmfchar.datatype" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:element name="data"> <xsd:group name="msc.ivr.basicivr.collect.mix">
<xsd:complexType> <xsd:choice>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="grammar" minOccurs="0" maxOccurs="1" />
<xsd:element ref="item"/> <xsd:group ref="msc.common.content" minOccurs="0"
<xsd:any namespace="##other" processContents="strict"/> maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:group>
<xsd:group name="msc.ivr.basicivr.collect.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.collect.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.collect.type">
<xsd:group ref="msc.ivr.basicivr.collect.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.collect.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="item"> <xsd:element name="collect" type="msc.ivr.basicivr.collect.type" />
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" <!-- grammar -->
use="required"/> <xsd:attributeGroup name="msc.ivr.basicivr.grammar.attlist">
<xsd:attribute name="value" type="xsd:string" <xsd:attribute name="src" type="xsd:anyURI" />
use="required"/> <xsd:attribute name="type" type="mime.datatype" />
<xsd:anyAttribute namespace="##other" processContents="strict"/> <xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.grammar.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.basicivr.grammar.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.grammar.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.grammar.type"
mixed="true">
<xsd:group ref="msc.ivr.basicivr.grammar.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.grammar.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="stream"> <xsd:element name="grammar" type="msc.ivr.basicivr.grammar.type" />
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <!-- record -->
<xsd:any namespace="##other" processContents="strict"/>
<xsd:attributeGroup name="msc.ivr.basicivr.record.attlist">
<xsd:attribute name="timeout" type="timedesignation.datatype"
default="5s" />
<xsd:attribute name="type" type="mime.datatype" />
<xsd:attribute name="dest" type="xsd:anyURI" />
<xsd:attribute name="beep" type="boolean.datatype" default="false" />
<xsd:attribute name="vadinitial" type="boolean.datatype"
default="true" />
<xsd:attribute name="vadfinal" type="boolean.datatype"
default="true" />
<xsd:attribute name="dtmfterm" type="boolean.datatype"
default="true" />
<xsd:attribute name="maxtime" type="timedesignation.datatype"
default="15s" />
<xsd:attribute name="finalsilence" type="timedesignation.datatype"
default="5s" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.record.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="media" type="media.datatype" </xsd:group>
use="required"/>
<xsd:attribute name="label" type="label.datatype"/> <xsd:group name="msc.ivr.basicivr.record.content">
<xsd:attribute name="direction" type="direction.datatype" <xsd:sequence>
default="sendrecv" /> <xsd:group ref="msc.ivr.basicivr.record.mix" minOccurs="0"
<xsd:anyAttribute namespace="##other" processContents="strict"/> maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.record.type">
<xsd:group ref="msc.ivr.basicivr.record.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.record.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="subscribe"> <xsd:element name="record" type="msc.ivr.basicivr.record.type" />
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <!-- promptinfo -->
<xsd:element ref="notify"/>
<xsd:attributeGroup name="msc.ivr.basicivr.promptinfo.attlist">
<xsd:attribute name="duration" type="xsd:nonNegativeInteger" />
<xsd:attribute name="iterations" type="xsd:positiveInteger" />
<xsd:attribute name="termmode" type="prompt_termmode.datatype"
use="required" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.promptinfo.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/> </xsd:group>
<xsd:group name="msc.ivr.basicivr.promptinfo.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.promptinfo.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.promptinfo.type">
<xsd:group ref="msc.ivr.basicivr.promptinfo.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.promptinfo.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
<xsd:element name="notify"> <xsd:element name="promptinfo"
<xsd:complexType> type="msc.ivr.basicivr.promptinfo.type" />
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element ref="data"/> <!-- collectinfo -->
<xsd:attributeGroup name="msc.ivr.basicivr.collectinfo.attlist">
<xsd:attribute name="dtmf" type="dtmfstring.datatype" />
<xsd:attribute name="termmode" type="collect_termmode.datatype"
use="required" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.collectinfo.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:group>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
<xsd:group name="msc.ivr.basicivr.collectinfo.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.collectinfo.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.collectinfo.type">
<xsd:group ref="msc.ivr.basicivr.collectinfo.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.collectinfo.attlist" />
</xsd:complexType> </xsd:complexType>
</xsd:element>
</xsd:schema> <xsd:element name="collectinfo"
9. Security Considerations type="msc.ivr.basicivr.collectinfo.type" />
Security Considerations to be included in later versions of this <!-- recordinfo -->
document.
10. IANA Considerations <xsd:attributeGroup name="msc.ivr.basicivr.recordinfo.attlist">
<xsd:attribute name="recording" type="xsd:anyURI" />
<xsd:attribute name="type" type="mime.datatype" />
<xsd:attribute name="duration" type="xsd:nonNegativeInteger" />
<xsd:attribute name="size" type="xsd:nonNegativeInteger" />
<xsd:attribute name="termmode" type="record_termmode.datatype"
use="required" />
This document registers a new SIP Control Framework Package, a new <xsd:attributeGroup ref="msc.common.attribs" />
XML namespace and a new URI scheme "basicivr:". </xsd:attributeGroup>
10.1. Control Package Registration <xsd:group name="msc.ivr.basicivr.recordinfo.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.basicivr.recordinfo.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.recordinfo.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.recordinfo.type">
<xsd:group ref="msc.ivr.basicivr.recordinfo.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.recordinfo.attlist" />
</xsd:complexType>
<xsd:element name="recordinfo"
type="msc.ivr.basicivr.recordinfo.type" />
<!--
#############################################################
BASIC IVR DATATYPES
#############################################################
-->
<xsd:simpleType name="prompt_termmode.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="completed" />
<xsd:enumeration value="maxduration" />
<xsd:enumeration value="bargein" />
</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: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" />
<xsd:enumeration value="finalsilence" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
10. Security Considerations
As this control package uses XML markup, implementation MUST address
the security considerations of [RFC3023].
11. IANA Considerations
This specification instructs IANA to register a new Media Control
Channel Framework Package, a new XML namespace and a new mime type.
11.1. Control Package Registration
Control Package name: msc-ivr-basic/1.0 Control Package name: msc-ivr-basic/1.0
10.2. URN Sub-Namespace Registration 11.2. URN Sub-Namespace Registration
XML namespace: urn:ietf:params:xml:ns:msc-ivr-basic XML namespace: urn:ietf:params:xml:ns:msc-ivr-basic
11. Change Summary 11.3. Mime Type Registration
MIME type: application/msc-ivr-basic+xml
12. Change Summary
Note to RFC Editor: Please remove this whole section.
The following are the major changes between the -06 of the draft and
the -05 version.
o Event notifications are sent in CONTROL messages with the MS
acting as Control Framework Client. Compared with the previous
approach, this means that a <dialogstart> transaction is now
complete when the MS sends a <response>. A new transaction is
initiated by the MS each time the MS sends a notification <event>
to the AS.
o Changed conf-id to conferenceid and connection-id to connectionid.
o Clarification of the state model for dialogs
o <dialogprepare>: modified definition of src attribute to allow
reference to external dialog documents; added (MIME) type
attribute; removed <data> child element.
o <dialogstart>: modified definition of src attribute to allow
reference to external dialog documents; added (MIME) type
attribute; removed <data> child element;
o <dialogterminate>: modified so that a dialogexit event is always
sent for active dialogs (i.e. the dialogexit event is a
terminating notification)
o <event> notification simplified and make more extensible. Manual
notifications (via <subscribe> element) are removed from the basic
package. A <dialogexit> event is defined as <event> child and it
can be extended with additional child elements
o <data> element is removed.
o <subscribe> element removed.
o Replaced dialog templates with a general <basicivr> element. It
has child elements for playing media resource (<prompt>),
collecting DTMF (<collect>) and recording (<record>). The
functionality is largely unchanged.
o <dialogprepare> and <dialogstart> are extended with <basicivr>
child element.
o <event> is extended with a <dialogexit> element which contains
status and reported information (replacement for output parameters
in template dialogs)
o Prompts: now structured as a <prompt> element with <media>,
<variable> and <dtmf> children. The <prompt> element has xml:base
attribute, bargein, iterations, duration, volume and offset
attributes. The speed attribute is removed. A <media> element
has src and type attributes. The maxage and maxstale attributes
are removed.
o DTMF input: parameters now specified as attributes of a <collect>
element. Custom grammar specified with a <grammar> element as
child of <collect> element. Added 'escapekey' to allow the dialog
to be retried. Added 'pauseinterval', 'pausekey' and 'resumekey'
to allow the prompts to paused/resumed. Added 'volumeinterval',
'volupkey' and voldnkey' to add prompt volume to be increased/
decreased. Moved 'bargein' attribute to prompt.
o Recording: parameters now specified as attributes of <record>
element. Added 'dest' and 'beep' attributes.
The following are the major changes between the -05 of the draft and The following are the major changes between the -05 of the draft and
the -04 version. the -04 version.
o Mainly an allignment/evaluation exercise with requirements o Mainly an alignment/evaluation exercise with requirements produced
produced by MEDIACTRL IVR design team. by MEDIACTRL IVR design team.
o playannouncement parameters from Table 7 of '04' version are now o playannouncement parameters from Table 7 of '04' version are now
reflected in text - schema to be updated. reflected in text - schema to be updated.
o Added VCR commands based on MSCML. o Added VCR commands based on MSCML.
The following are the major changes between the -04 of the draft and The following are the major changes between the -04 of the draft and
the -03 version. the -03 version.
o None. o None.
skipping to change at page 66, line 5 skipping to change at page 72, line 5
o re-organized so that template details after general package o re-organized so that template details after general package
framework and element description. framework and element description.
The following are the primary changes between the -01 of the draft The following are the primary changes between the -01 of the draft
and the -00 version. and the -00 version.
o Removed requirement for VoiceXML dialog support o Removed requirement for VoiceXML dialog support
o Added requirement for template dialog support o Added requirement for template dialog support
12. Contributors 13. Contributors
Asher Shiratzky from Radvision provided valuable support and Asher Shiratzky from Radvision provided valuable support and
contributions to the early versions of this document. contributions to the early versions of this document.
The authors would like to thank the IVR design team consisting of The authors would like to thank the IVR design team consisting of
Roni Even, Lorenzo Miniero, Adnan Saleem and Diego Besprosvan who Roni Even, Lorenzo Miniero, Adnan Saleem and Diego Besprosvan who
provided valuable feedback, input and text to this document. provided valuable feedback, input and text to this document.
13. Acknowledgments 14. Acknowledgments
The authors would like to thank Adnan Saleem of Radisys, Gene The authors would like to thank Adnan Saleem of Radisys, Gene
Shtirmer of Intel and Dave Burke of Google for useful reviews of this Shtirmer of Intel, Dave Burke of Google and Dan York of Voxeo for
work. useful reviews of this work.
14. References 15. References
14.1. Normative References 15.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
14.2. Informative References 15.2. Informative References
[CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version [CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version
1.0", W3C Working Draft (work in progress), January 2007. 1.0", W3C Working Draft (work in progress), January 2007.
[H.248.1] "Gateway control protocol: Version 3", ITU-T [H.248.1] "Gateway control protocol: Version 3", ITU-T
Recommendation H.248.1. Recommendation H.248.1.
[H.248.9] "Gateway control protocol: Advanced media server [H.248.9] "Gateway control protocol: Advanced media server
packages", ITU-T Recommendation H.248.9. packages", ITU-T Recommendation H.248.9.
[MSCP] McGlashan, S., Auburn, R., Burke, D., Candell, E., and R. [I-D.ietf-mediactrl-requirements]
Surapaneni, "Media Server Control Protocol (MSCP)", Dolly, M. and R. Even, "Media Server Control Protocol
draft-mcglashan-mscp-03 (work in progress), March 2007. Requirements", draft-ietf-mediactrl-requirements-03 (work
in progress), December 2007.
[MSML] Saleem, A., Xin, Y., and G. Sharratt, "Media Session [MCCF] Boulton, C., Melanchuk, T., McGlashan, S., and A.
Markup Language (MSML)", draft-saleem-msml-05 (work in Shiratzky, "Media Control Channel Framework",
progress), August 2007. draft-ietf-mediactrl-sip-control-framework-01 (work in
progress), February 2008.
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [MSML] Saleem, A., Xin, Y., and G. Sharratt, "Media Session
Resource Identifiers (URI): Generic Syntax", RFC 2396, Markup Language (MSML)", draft-saleem-msml-06 (work in
August 1998. progress), February 2008.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2833] Schulzrinne, H. and S. Petrack, "RTP Payload for DTMF
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Digits, Telephony Tones and Telephony Signals", RFC 2833,
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. May 2000.
[RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio [RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio
Package", RFC 2897, August 2000. Package", RFC 2897, August 2000.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, January 2001.
[RFC3066] Alvestrand, H., "Tags for the Identification of
Languages", RFC 3066, January 2001.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E. A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261, Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002. June 2002.
[RFC3262] Rosenberg, J. and H. Schulzrinne, "Reliability of [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Provisional Responses in Session Initiation Protocol Resource Identifier (URI): Generic Syntax", STD 66,
(SIP)", RFC 3262, June 2002. RFC 3986, January 2005.
[RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation
Protocol (SIP): Locating SIP Servers", RFC 3263,
June 2002.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264,
June 2002.
[RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network [RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network
Media Services with SIP", RFC 4240, December 2005. Media Services with SIP", RFC 4240, December 2005.
[RFC4281] Gellens, R., Singer, D., and P. Frojdh, "The Codecs
Parameter for "Bucket" Media Types", RFC 4281,
November 2005.
[RFC4574] Levin, O. and G. Camarillo, "The Session Description [RFC4574] Levin, O. and G. Camarillo, "The Session Description
Protocol (SDP) Label Attribute", RFC 4574, August 2006. Protocol (SDP) Label Attribute", RFC 4574, August 2006.
[RFC4730] Burger, E. and M. Dolly, "A Session Initiation Protocol [RFC4730] Burger, E. and M. Dolly, "A Session Initiation Protocol
(SIP) Event Package for Key Press Stimulus (KPML)", (SIP) Event Package for Key Press Stimulus (KPML)",
RFC 4730, November 2006. RFC 4730, November 2006.
[RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server [RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server
Control Markup Language (MSCML) and Protocol", RFC 5022, Control Markup Language (MSCML) and Protocol", RFC 5022,
September 2007. September 2007.
[SIPCF] Boulton, C., Melanchuk, T., McGlashan, S., and A.
Shiratzky, "A Control Framework for the Session Initiation
Protocol (SIP)",
draft-ietf-mediactrl-sip-control-framework-00 (work in
progress), August 2007.
[SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar [SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar
Specification Version 1.0", W3C Recommendation, Specification Version 1.0", W3C Recommendation,
March 2004. 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.
[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.
[VXMLCP] Boulton, C., Melanchuk, T., and S. McGlashan, "A VoiceXML
Interactive Voice Response (IVR) Control Package for the
Media Control Channel Framework",
draft-boulton-ivr-vxml-control-package-04 (work in
progress), February 2008.
[XML] Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E., [XML] Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E.,
and F. Yergeau, "Extensible Markup Language (XML) 1.0 and F. Yergeau, "Extensible Markup Language (XML) 1.0
(Third Edition)", W3C Recommendation, February 2004. (Third Edition)", W3C Recommendation, February 2004.
Authors' Addresses Authors' Addresses
Chris Boulton Chris Boulton
Avaya Avaya
Building 3 Building 3
Wern Fawr Lane Wern Fawr Lane
St Mellons St Mellons
Cardiff, South Wales CF3 5EA Cardiff, South Wales CF3 5EA
Email: cboulton@avaya.com Email: cboulton@avaya.com
Tim Melanchuk Tim Melanchuk
TJM Consulting Rain Willow Communications
Email: tim.melanchuk@gmail.com Email: tim.melanchuk@gmail.com
Scott McGlashan Scott McGlashan
Hewlett-Packard Hewlett-Packard
Gustav III:s boulevard 36 Gustav III:s boulevard 36
SE-16985 Stockholm, Sweden SE-16985 Stockholm, Sweden
Email: scott.mcglashan@hp.com Email: scott.mcglashan@hp.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
 End of changes. 392 change blocks. 
1812 lines changed or deleted 2243 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/