One document matched: draft-boulton-ivr-control-package-06.txt
Differences from draft-boulton-ivr-control-package-05.txt
Network Working Group C. Boulton
Internet-Draft Avaya
Intended status: Standards Track T. Melanchuk
Expires: August 26, 2008 Rain Willow Communications
S. McGlashan
Hewlett-Packard
February 23, 2008
A Basic Interactive Voice Response (IVR) Control Package for the Media
Control Channel Framework
draft-boulton-ivr-control-package-06
Status of this Memo
By submitting this Internet-Draft, each author represents that any
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
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 26, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2008).
Boulton, et al. Expires August 26, 2008 [Page 1]
Internet-Draft Media Server Control Package February 2008
Abstract
This document defines a Media Control Channel Framework Package for
basic Interactive Voice Response (IVR) interaction.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 7
3. Control Package Definition . . . . . . . . . . . . . . . . . . 8
3.1. Control Package Name . . . . . . . . . . . . . . . . . . . 8
3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 8
3.3. Common XML Support . . . . . . . . . . . . . . . . . . . . 9
3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . . 9
3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 9
4. Dialog Management Element Definitions . . . . . . . . . . . . 11
4.1. Requests . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 12
4.1.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 13
4.1.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 16
4.2. Responses . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1. <response> . . . . . . . . . . . . . . . . . . . . . . 17
4.3. Notifications . . . . . . . . . . . . . . . . . . . . . . 19
4.3.1. <event> . . . . . . . . . . . . . . . . . . . . . . . 19
4.3.2. <dialogexit> . . . . . . . . . . . . . . . . . . . . . 19
5. Basic IVR Dialog Element Definitions . . . . . . . . . . . . . 21
5.1. <basicivr> . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2. <prompt> . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.1. <media> . . . . . . . . . . . . . . . . . . . . . . . 25
5.2.2. <variable> . . . . . . . . . . . . . . . . . . . . . . 26
5.2.3. <dtmf> . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3. <collect> . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3.1. <grammar> . . . . . . . . . . . . . . . . . . . . . . 31
5.4. <record> . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.5. Exit Information . . . . . . . . . . . . . . . . . . . . . 36
5.5.1. <promptinfo> . . . . . . . . . . . . . . . . . . . . . 37
5.5.2. <collectinfo> . . . . . . . . . . . . . . . . . . . . 37
5.5.3. <recordinfo> . . . . . . . . . . . . . . . . . . . . . 37
6. AS-MS Dialog Interaction Examples . . . . . . . . . . . . . . 39
6.1. Starting an IVR dialog . . . . . . . . . . . . . . . . . . 39
6.2. IVR dialog fails to start . . . . . . . . . . . . . . . . 39
6.3. Preparing and starting an IVR dialog . . . . . . . . . . . 40
6.4. Terminating a dialog . . . . . . . . . . . . . . . . . . . 41
7. Basic IVR Dialog Examples . . . . . . . . . . . . . . . . . . 43
7.1. Playing announcements . . . . . . . . . . . . . . . . . . 43
7.2. Prompt and collect . . . . . . . . . . . . . . . . . . . . 44
7.3. Prompt and record . . . . . . . . . . . . . . . . . . . . 45
Boulton, et al. Expires August 26, 2008 [Page 2]
Internet-Draft Media Server Control Package February 2008
8. Type Definitions . . . . . . . . . . . . . . . . . . . . . . . 46
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 48
9.1. msc-ivr-common.xsd . . . . . . . . . . . . . . . . . . . . 48
9.2. msc-ivr-basic.xsd . . . . . . . . . . . . . . . . . . . . 55
10. Security Considerations . . . . . . . . . . . . . . . . . . . 67
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 68
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
Boulton, et al. Expires August 26, 2008 [Page 3]
Internet-Draft Media Server Control Package February 2008
1. Introduction
The Media Control Channel Framework [MCCF] provides a generic
approach for establishment and reporting capabilities of remotely
initiated commands. The Framework utilizes many functions provided
by the Session Initiation Protocol [RFC3261] (SIP) for the rendezvous
and establishment of a reliable channel for control interactions.
The Control Framework also introduces the concept of a Control
Package. A Control Package is an explicit usage of the Control
Framework for a particular interaction set. This document defines a
Control Package for basic IVR dialogs.
This package has been designed to satisfy the IETF MediaCtrl
requirements ([I-D.ietf-mediactrl-requirements]) by building upon two
major approaches to IVR dialog design. These approaches address a
wide range of IVR use cases and are used in many applications which
are extensively deployed today.
First, the package is designed to provide the major IVR functionality
of SIP Media Server languages such as netann ([RFC4240]), MSCML
([RFC5022]) and MSML ([MSML]) which themselves build upon more
traditional non-SIP languages ([H.248.9], [RFC2897]). A key
differentiator is that this package provides the functionality using
the Media Control Channel Framework.
Second, its design is aligned with key concepts in W3C Voice Browser
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.
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.
The scope of this package is 'basic' IVR functionality of a media
server which includes:
Boulton, et al. Expires August 26, 2008 [Page 4]
Internet-Draft Media Server Control Package February 2008
o playing one or more media resources as a prompt to the user
o collecting DTMF input from the user according to a grammar
o recording user media input
Out of scope of this package are more advanced functions including
ASR (Automatic Speech Recognition), TTS (Text-to-Speech), VoiceXML,
fax and media transformation. Such functionality may be addressed by
extension packages.
This functionality of this package is defined by messages, containing
XML [XML] elements, transported using the Media Control Channel
Framework. The XML elements can be divided into two types: dialog
management elements; and carried within those, elements which define
the specific IVR operations for the dialog.
Dialog management elements are designed to manage the general
lifecycle of a dialog. Elements are provided for preparing a dialog,
starting the dialog on a conference or connection, and terminating
execution of a dialog. Each of these elements is contained in a
Media Control Channel Framework CONTROL message sent to the media
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
Boulton, et al. Expires August 26, 2008 [Page 5]
Internet-Draft Media Server Control Package February 2008
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).
Boulton, et al. Expires August 26, 2008 [Page 6]
Internet-Draft Media Server Control Package February 2008
2. Conventions and Terminology
In this document, BCP 14/RFC 2119 [RFC2119] defines the key words
"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL". In addition, BCP 15 indicates requirement levels for
compliant implementations.
The following additional terms are defined for use in this document:
Dialog: A dialog performs media interaction with a user. A dialog
is specified as inline XML, or via a URI reference to an external
XML document type. Dialogs typically feature basic capabilities
such as playing audio prompts, collecting DTMF input and recording
audio input from the user. More advanced dialogs may also feature
synthesized speech, recording and playback of video, recognition
of spoken input, and mixed initiative conversations.
Application server: A SIP [RFC3261] application server (AS) hosts
and executes services such as interactive media and conferencing
in an operator's network. An AS influences and impacts the SIP
session, in particular by terminating SIP sessions on a media
server, which is under its control.
Media Server: A media server (MS) processes media streams on behalf
of an AS by offering functionality such as interactive media,
conferencing, and transcoding to the end user. Interactive media
functionality is realized by way of dialogs which are initiated by
the application server.
Boulton, et al. Expires August 26, 2008 [Page 7]
Internet-Draft Media Server Control Package February 2008
3. Control Package Definition
This section fulfills the mandatory requirement for information that
MUST be specified during the definition of a Control Framework
Package, as detailed in Section 8 of [MCCF].
3.1. Control Package Name
The Control Framework requires a Control Package to specify and
register a unique name and version.
The name and version of this Control Package is "msc-ivr-basic/1.0"
(Media Server Control - Interactive Voice Response - Basic - version
1.0). Its IANA registration is specified in Section 11.1.
3.2. Framework Message Usage
The Control Framework requires a Control Package to explicitly detail
the control messages that can be used as well as provide an
indication of directionality between entities. This will include
which role type is allowed to initiate a request type.
This package defines XML elements for dialog management in Section 4;
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.
In this package, the MS operates as a Control Framework Server in
receiving requests from, and sending responses to, the AS (operating
as Control Framework Client). These requests are carried in CONTROL
message bodies from AS to MS; <dialogprepare>, <dialogstart> and
<dialogterminate> elements are defined as package requests.
Responses to these requests are carried either in REPORT messages or
Control Framework 200 response bodies with <response> element
payload.
Note that package responses are different from framework response
codes. Framework error response codes (see Section 8 of [MCCF]) are
used when the request or event notification is invalid; for example,
a request is invalid XML (400), or not understood (500). Package
responses are carried in 200 response or REPORT message bodies. This
package's response codes are defined in Section 4.2.1.
The MS also operates as a Control Framework Client in sending event
notifications to the AS (Control Framework Server). Event
notifications are carried in CONTROL message bodies; the <event>
Boulton, et al. Expires August 26, 2008 [Page 8]
Internet-Draft Media Server Control Package February 2008
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
The Control Framework requires a Control Package definition to
specify if the attributes for media dialog or conference references
are required.
This package requires that the XML Schema in Section 16.1 of [MCCF]
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
The Control Framework requires a Control Package to define the
control body that can be contained within a CONTROL command request
and to indicate the location of detailed syntax definitions and
semantics for the appropriate body types.
When operating as Control 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
The Control Framework requires a control package definition to define
the REPORT body that can be contained within a REPORT command
request, or that no report package body is required. This section
should indicate the location of detailed syntax definitions and
semantics for the appropriate body types.
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.
When operating as Control Framework Client, the MS receives REPORT
messages which SHOULD NOT contain a body.
[Editors Note:IVR01 need to clarify the behavior when the MS receives
Boulton, et al. Expires August 26, 2008 [Page 9]
Internet-Draft Media Server Control Package February 2008
a REPORT in response to sending an event notification CONTROL.]
Boulton, et al. Expires August 26, 2008 [Page 10]
Internet-Draft Media Server Control Package February 2008
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
Requests are send to the MS (operating as a Control Framework Server)
in the body of CONTROL messages.
The following request elements are defined:
<dialogprepare>: prepare an IVR dialog for later execution
<dialogstart>: start an IVR dialog on a connection or conference
<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.
Boulton, et al. Expires August 26, 2008 [Page 11]
Internet-Draft Media Server Control Package February 2008
4.1.1. <dialogprepare>
The <dialogprepare> request is sent to the MS to request preparation
of an IVR dialog. Dialog preparation consists of (a) retrieving an
external dialog document (if specified), and (b) validating the
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:
src: specifies the location of an external dialog document to
prepare. A valid value is a URI (see Section 8.9). It is an
error if the document cannot be retrieved or processed (e.g. URI
protocol not supported). The attribute is optional.
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
attribute is not specified, the MS creates a unique name for the
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
with the same name already exists on the MS. The attribute is
optional.
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.
The dialog to prepare can either be specified inline as a child
element or externally using the src attribute (but not both). It is
an error if both an inline dialog element and a src attribute are
specified.
When an MS receives a <dialogprepare> request, the dialog is in a
PREPARING state. If dialog preparation was successful, the dialog is
in a PREPARED state; otherwise the dialog is in a TERMINATED state.
The MS MUST reply to <dialogprepare> request with a <response>
element (Section 4.2), reporting whether dialog preparation was
successful or not.
Example: in CONTROL message from AS to MS, the following request
prepares a basic IVR dialog where a single prompt is played once:
Boulton, et al. Expires August 26, 2008 [Page 12]
Internet-Draft Media Server Control Package February 2008
<dialogprepare>
<basicivr>
<prompt>
<media src="http://www.example.com/prompt1.wav"/>
</prompt>
</basicivr>
</dialogprepare>
Alternatively, the same dialog could be referenced:
<dialogprepare type="application/msc-ivr-basic+xml"
src="http://example.org/basic1.xml"/>
if the dialog is prepared successful, then a Control Framework 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.1.2. <dialogstart>
The <dialogstart> element is sent by the AS to start a dialog. The
dialog may be specified in the <dialogstart> request itself, or
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:
src: specifies the location of an external dialog document to start.
A valid value is a URI (see Section 8.9). It is an error if the
document cannot be retrieved or processed (e.g. URI protocol not
supported). The attribute is optional.
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.
Boulton, et al. Expires August 26, 2008 [Page 13]
Internet-Draft Media Server Control Package February 2008
dialogid: string indicating a unique name for the dialog. If this
attribute is not specified, the MS creates a unique name for the
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
with the same name already exists on the MS. The attribute is
optional.
prepareddialogid: string identifying a dialog previously prepared
using a dialogprepare request. The attribute is optional.
connectionid: string identifying the SIP dialog connection on which
this dialog is to be started (see Section 16.1 of [MCCF]). The
attribute is optional.
conferenceid: string identifying the conference on which this dialog
is to be started (see Section 16.1 of [MCCF]). The attribute is
optional.
Exactly one of the connectionid or conferenceid attributes MUST be
specified. It is an error to specify both connectionid and
conferenceid attributes or neither.
The <dialogstart> element has the following child elements defined:
<stream>: contains the following attributes:
media: a string indicating the type of media associated with the
stream. It is strongly RECOMMENDED that the following values
are used for common types of media: "audio" for audio media,
and "video" for video media. The attribute is mandatory.
label: a string indicating the SDP label associated with a media
stream ([RFC4574]). The attribute is optional.
direction: a string indicating the direction of the media flow
between a dialog and its end point conference or connection.
Defined values are: "sendrecv" (media can be sent and
received), "sendonly" (media can only be sent), and "recvonly"
(media can only be received). The default value is "sendrecv".
The attribute is optional.
One or more <stream> elements may be specified so that individual
media streams can be controlled independently; for example, audio
only for transmission, but video only for reception. The <stream>
element is optional. If no <stream> elements are specified, then
the default is the media configuration of the connection or
conference. It is an error if a <stream> element is in conflict
with (a) another <stream> element, (b) with dialog, connection or
Boulton, et al. Expires August 26, 2008 [Page 14]
Internet-Draft Media Server Control Package February 2008
conference media capabilities, or (c) with a SDP label value as
part of the connectionid (see Section 16.1 of [MCCF]).
The <dialogstart> 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.
The dialog to start can be specified either inline, or externally, or
reference a previously prepared dialog. Exactly one of the src
attribute, the prepareddialogid or a dialog type child element MUST
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.
When an MS receives a <dialogstart> request, the dialog is either in
an IDLE or PREPARED state (if a previously prepared dialog is being
started). If in the IDLE state, then the dialog is first prepared
and if successful, transitions to the PREPARED state. When the
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.
[Editors Note:IVR02 This specification does not defined the behavior
when more than one dialog is started on the same connection or
conference. Various models could be applied:
reject: only one dialog per connection or conference
replace: the current dialog is stopped and the new one started
queue: the new dialog is queued for starting after current dialog
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
Boulton, et al. Expires August 26, 2008 [Page 15]
Internet-Draft Media Server Control Package February 2008
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>
Alternatively, the same dialog could be referenced:
<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>
A dialog that has been successfully prepared or started can be
terminated by sending a <dialogterminate> request element to the MS.
The <dialogterminate> element has the following attributes:
dialogid: string identifying the dialog to terminate. The attribute
is mandatory.
immediate: indicates whether the dialog is to be terminated
immediately or not. A valid value is a boolean (see Section 8.1).
A value of true indicates that the dialog is terminated and a
dialogexit <event> notification MUST be sent immediately. A value
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.
It is an error if the dialogid is invalid.
Boulton, et al. Expires August 26, 2008 [Page 16]
Internet-Draft Media Server Control Package February 2008
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"/>
if the dialog is terminated successfully, then a Control Framework
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
Responses are generated in response to <dialogprepare>, <dialogstart>
and <dialogterminate> requests. Responses are specified in a
<response> element.
4.2.1. <response>
Responses to requests are indicated by a <response> element.
The <response> element has following attributes:
status: numeric code indicating the response status. The attribute
is mandatory.
Boulton, et al. Expires August 26, 2008 [Page 17]
Internet-Draft Media Server Control Package February 2008
reason: string specifying a reason for the response status. The
attribute is optional.
dialogid: string identifying the dialog. The attribute is optional.
connectionid: string identifying the SIP dialog connection
associated with the dialog (see Section 16.1 of [MCCF]). The
attribute is optional.
conferenceid: string identifying the conference associated with the
dialog (see Section 16.1 of [MCCF]). The attribute is optional.
The following status codes are defined:
+-----------+-------------------------------------------------------+
| code | description |
+-----------+-------------------------------------------------------+
| 200 | OK |
| | |
| 401 | dialogid already exists |
| | |
| 402 | dialogid does not exist |
| | |
| 403 | connectionid does not exist |
| | |
| 404 | conferenceid does not exist |
| | |
| 405 | Unknown or unsupported element |
| | |
| 406 | Element required |
| | |
| 407 | Unknown or unsupported attribute |
| | |
| 408 | Attribute required |
| | |
| 409 | dialog type not supported |
| | |
| 410 | Retrieving document resource failed |
| | |
| 411 | Invalid attribute value |
| | |
| 499 | other error |
+-----------+-------------------------------------------------------+
Table 1: <response> status codes
[Editors Note:IVR03 more status codes may need to be defined.]
Boulton, et al. Expires August 26, 2008 [Page 18]
Internet-Draft Media Server Control Package February 2008
For example, a response when a dialog was prepared successfully:
<response status="200" dialogid="vxi1"/>
The response if dialog preparation failed due to an unsupported
dialog type:
<response status="409" dialogid="vxi1"
reason="Unsupported dialog type: application/basicirv+xml"/>
For example, a response when the dialog was started successfully.
<response status="200" dialogid="vxi1"
connectionid="7HDY839~HJKSkyHS"/>
See Section 6 and Section 7 for further examples.
4.3. Notifications
Event notifications are specified in an <event> element.
Event notifications MUST NOT be sent unless the dialog is in a
STARTED state.
4.3.1. <event>
When a dialog generates a notification event, the MS sends the event
to the AS using an <event> element.
The <event> element has the following attributes:
dialogid: string identifying the dialog which generated the event.
The attribute is mandatory.
The <event> element has the following child elements:
<dialogexit>: indicates that the dialog has exited. The element is
optional.
Extension packages may define other child elements for notifications
which they support.
See Section 6 and Section 7 for examples.
4.3.2. <dialogexit>
The <dialogexit> event indicates that an active dialog has exited
because it is complete, has been terminated, or because an error
Boulton, et al. Expires August 26, 2008 [Page 19]
Internet-Draft Media Server Control Package February 2008
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 <dialogexit> element has 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.
reason: a textual description providing a reason for the status
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.
[Editors Note:IVR04 do we need to specify specific error codes?]
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.
Example: when a STARTED <basicivr> dialog exits normally the MS sends
a dialogexit <event>:
<event dialogid="vxi1"/>
<dialogexit status="1">
<collectinfo dtmf="1234" termmode="match"/>
</dialogexit>
See Section 6 and Section 7 for further examples.
Boulton, et al. Expires August 26, 2008 [Page 20]
Internet-Draft Media Server Control Package February 2008
5. Basic IVR Dialog Element Definitions
The basic IVR dialog is an instance of a dialog described in
Section 4.1. The MS MUST support the Basic IVR dialog type in this
package.
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 basic IVR dialog is a simple XML container - <basicivr> - for
executing basic IVR operations of playing prompts (<prompt> - see
Section 5.2), collecting DTMF (<collect> - see Section 5.3),and
recording user input (<record> - see Section 5.4. Results of the
dialog execution are reported in a dialogexit notification event.
Three execution models are defined:
playannouncements: only a <prompt> element is specified in the
container. The prompt media resources are played in sequence.
promptandcollect: a <collect> element is specified and, optionally,
a <prompt> element. If a <prompt> element is specified and
bargein is enabled, playing of the prompt is terminated when
bargein occurs, and DTMF collection is initiated; otherwise, the
prompt is played to completion before DTMF collection is
initiated. If no prompt element is specified, DTMF collection is
initiated immediately.
promptandrecord: a <record> element is specified and, optionally, a
<prompt> element. If a <prompt> element is specified and bargein
is enabled, playing of the prompt is terminated when bargein
occurs, and recording is initiated; otherwise, the prompt is
played to completion before recording is initiated. If no prompt
element is specified, recording is initiated immediately.
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.
Execution results are reported in the <dialogexit> notification event
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:
Boulton, et al. Expires August 26, 2008 [Page 21]
Internet-Draft Media Server Control Package February 2008
<prompt> only: <promptinfo> (see Section 5.5.1) with at least the
termmode attribute specified.
<collect>: <collectinfo> (see Section 5.5.2) with the dtmf and
termmode attributes specified.
<record>: <recordinfo> (see Section 5.5.3) with at least the
recording, type and termmode attributes specified.
The media format requirements for basic IVR dialogs are undefined.
This package is agnostic to the media types and codecs for media
resources and recording which need to be supported by an
implementation. For example, a MS implementation may choose to
support only audio and in particular the 'audio/basic' codec for
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.
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.
[Editors Note:IVR05 One use case which is not covered by this
specification is that of attaching a dialog to a connection, which
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:
1. A signalmode attribute/element is added to <basicivr> indicating
the conditions under which the dialog sends a (non-terminating)
notification event (TBD). If any of its child elements completes
with a termmode value matching a condition (e.g. a 'match' from
<collect>), then information collected by the children is
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).
2. If the signalmode attribute/element is not specified, then the
behavior is as currently defined.
Boulton, et al. Expires August 26, 2008 [Page 22]
Internet-Draft Media Server Control Package February 2008
3. Note that if media prompts were specified, the same prompts would
play repeatedly - a more sophisticated approach would be required
to play different prompts on different termmodes like nomatch,
noinput, etc
Working Group input is needed to determined if this use case is in
scope for this package and whether this type of solution is
adequate.]
5.1. <basicivr>
A dialog to play prompts to the user, collect DTMF or record input.
The dialog is specified using a <basicivr> element with the namespace
defined in Section 11.2.
A <basicivr> element has the following attributes:
version: a string specifying the version of the basicivr package.
The attribute is optional. The default value is '1.0'.
The <basicivr> element has the following child elements:
<prompt>: defines media resources to play in sequence (see
Section 5.2). The element is optional.
<collect>: defines how DTMF is collected (see Section 5.3). The
element is optional.
<record>: defines how recording takes place (see Section 5.4). The
element is optional.
It is an error if no child element is specified. The behavior is not
defined if both <collect> and <record> are specified.
5.2. <prompt>
The <prompt> element specifies a sequence of media resources to play.
A <prompt> element has the following attributes:
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.
bargein: Indicates whether user input stops prompt playback. A
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
Boulton, et al. Expires August 26, 2008 [Page 23]
Internet-Draft Media Server Control Package February 2008
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
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.
The attribute is optional. The default value is 1.
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
percentage (see Section 8.4). The value indicates increase or
decrease relative to the original recorded volume of the media. A
value of 100% (the default) plays the media at its recorded
volume, a value of 200% will play the media twice recorded volume,
50% at half its recorded volume, and so on. The attribute is
optional. The default value is 100%.
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
in determining maximum duration of the prompt.
[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
scaling?]
The <prompt> element has the following child elements:
<media>: media resource (see Section 5.2.1) to play. Multiple
instances of this element are permitted. The element is optional.
<variable>: specifies a variable media announcement (see
Section 5.2.2) to play. Multiple instances of this element are
permitted. The element is optional.
Boulton, et al. Expires August 26, 2008 [Page 24]
Internet-Draft Media Server Control Package February 2008
<dtmf>: generates one or more DTMF tones (see Section 5.2.3) to
play. Multiple instances of this element are permitted. The
element is optional.
It is an error if no child element is specified.
Prompt playing has the following execution model upon initialization:
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.
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>
and <dtmf> in document order. The value of the volume attribute
is applied to each <media> and <variable> if they are rendered as
audio media. If the offset attribute is specified, playback
begins at that offset. If the offset is greater than the
cumulative duration of the child elements, then no prompts are
played in the cycle.
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
counter is updated. If the counter reaches the value of the
iterations attribute, then playback is terminated and the
dialogexit result contains a <promptinfo> termmode attribute set
to completed (see Section 5.5.1). Otherwise, another playback
cycle is initiated.
[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>
The <media> element specifies a media resource to play.
A <media> element has the following attributes:
Boulton, et al. Expires August 26, 2008 [Page 25]
Internet-Draft Media Server Control Package February 2008
src: specifies the location of the media resource. A valid value is
a URI (see Section 8.9). The attribute is mandatory.
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.
The <media> element has no children.
It is an error if the media resource cannot be retrieved or played.
5.2.2. <variable>
The <variable> element specifies variable announcements using
predefined media resources. Each variable has at least a type (e.g.
date) and a value (e.g. 2008-02-25). The value is rendered according
to the variable type (e.g. 25th February 2008) as well as other
defined attributes.
A <variable> element has the following attributes:
value: specifies the string to be rendered. A valid value is a
string (see Section 8.6). The attribute is mandatory.
type: specifies the type to use for rendering. A valid value is a
string (see Section 8.6). The attribute is mandatory.
format: specifies format information to use in conjunction with the
type for the rendering. A valid value is a string (see
Section 8.6). The attribute is optional. There is no default
value.
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:IVR09 do we need a gender attribute for variable
announcements? ]
The <variable> element has no children.
This package is agnostic to which <variable> values, types and
formats are supported by an implementation. However it is
RECOMMENDED that an implementation support the following type/format
combinations:
Boulton, et al. Expires August 26, 2008 [Page 26]
Internet-Draft Media Server Control Package February 2008
type=date Supported formats: "mdy", "ymd", "dym"
type=time Supported formats: "t12", "t24"
type=digits Supported formats: "gen", "ndn", "crn", "ord"
[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
resources into which variable are rendered. For example, an MS
choosing to support audio may render the <variable> into one or more
audio media resources.
It is an error if a <variable> element cannot be rendered
successfully.
Execution of this element can seen, at least logically, as conversion
of a <variable> into a list of <media> elements. For example,
<variable value="2008-02-25" type="date" format="dmy"
xml:lang="en"/>
could be transformed into audio saying "twenty-fifth of February two
thousand and eight" using a list of <media> resources:
<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>
The <dtmf> element specifies a sequence of DTMF tones for output.
DTMF tones could be generated using <media> resources where the
output is transported as RTP audio packets. However, <media>
resources are not sufficient for cases where DTMF tones are to be
transported as DTMF RTP ([RFC2833]) or in event packages.
A <dtmf> element has the following attributes:
digits: specifies the DTMF sequence to output. A valid value is a
DTMF string (see Section 8.3). The attribute is mandatory.
Boulton, et al. Expires August 26, 2008 [Page 27]
Internet-Draft Media Server Control Package February 2008
level: used to define the power level for which the DTMF tones will
be generated. Values are expressed in dBm0. A valid value is an
integer in the range of 0 to -96 (dBm0). Larger negative values
express lower power levels. Note that values lower than -55 dBm0
will be rejected by most receivers (TR-TSY-000181, ITU-T Q.24A).
The attribute is optional. The default value is -6 (dBm0).
duration: specifies the duration for which each DTMF tone is
generated. A valid value is a time designation (see Section 8.7).
Implementations may round the value if they only support discrete
durations. The attribute is optional. The default value is
100ms.
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.
It is an error if a <dtmf> element cannot be processed successfully.
5.3. <collect>
The <collect> element defines how DTMF input is collected.
The <collect> element has the following attributes:
cleardigitbuffer: indicates whether the digit buffer is to be
cleared. A valid value is a boolean (see Section 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
is a Time Designation (see Section 8.7). The attribute is
optional. The default value is 5s.
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
recognizing DTMF input. A valid value is a Time Designation (see
Section 8.7). The attribute is optional. The default value is
0s.
Boulton, et al. Expires August 26, 2008 [Page 28]
Internet-Draft Media Server Control Package February 2008
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
collection using the internal grammar. A valid value is a DTMF
character (see Section 8.2). To disable termination by a
conventional DTMF character, set the parameter to an
unconventional character like 'A'. The attribute is optional.
The default value is '#'.
maxdigits: The maximum number of digits to collect using an internal
digits (0-9 only) grammar. 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
forwards through prompt playback when the rewind (rwkey) of fast
forward key (ffkey) is pressed. A valid value is a Time
Designation (see Section 8.7). The attribute is optional. The
default value is 6s.
ffkey: maps a DTMF key to a fast forward operation equal to the
value of 'skipinterval'. A valid value is a DTMF Character (see
Section 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
'skipinterval'. A valid value is a DTMF Character (see
Section 8.2). The attribute is optional. There is no default
value.
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.
pausekey: maps a DTMF key to a pause operation equal to the value of
'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
a DTMF Character (see Section 8.2). The attribute is optional.
There is no default value.
Boulton, et al. Expires August 26, 2008 [Page 29]
Internet-Draft Media Server Control Package February 2008
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%.
volupkey: maps a DTMF key to a volume increase operation equal to
the value of 'volumeinterval'. A valid value is a DTMF Character
(see Section 8.2). The attribute is optional. There is no
default value.
voldnkey: maps a DTMF key to a volume decrease operation equal to
the value of 'volumeinterval'.A valid value is a DTMF Character
(see Section 8.2). The attribute is optional. There is no
default value.
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.
[Editors Note:IVR11 Do we need a speed VCR control as well? ]
[Editors Note:IVR12 it has been proposed that termchar should be
replaced by termkeys (DTMF string value) to allow termination by
multiple characters (e.g. '**'). An additional attribute would
probably also be need to control interdigit timing within this
string. Is this functionality required for this package?]
The <collect> element has the following child elements:
<grammar>: indicates a custom grammar format (see Section 5.3.1).
The element is optional.
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
initialization:
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
attribute is true.
3. A timer with the duration of the value of the timeout attribute
is activated. If the timer expires before DTMF input collection
Boulton, et al. Expires August 26, 2008 [Page 30]
Internet-Draft Media Server Control Package February 2008
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
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
prompts. If a seek operation (ffkey, rwkey) attempts to go
beyond the beginning or end of the prompt queue, then it is
automatically truncated to the prompt beginning or end
respectively. If the pause operation attempts to pause output
when it is already paused, then the operation is ignored. If the
resume operation attempts to resume when the prompts are not
paused, then the operation is ignored. If a volume operations
attempts to go beyond the minimum or maximum volume supported by
the platform, then the operation is ignored. DTMF input matching
VCR controls is ignored for grammar matching.
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
are either a simple digit string where the maximum length is
determined by the maxdigits attribute and may be terminated by
the character in the termchar attribute; or a custom DTMF grammar
specified with the <grammar> element. The attributes
interdigittimeout and termtimeout control interdigit timeout and
the terminating timeout respectively.
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,
collection execution terminates and the dialogexit result
contains a <collectinfo> (see Section 5.5.2) with the termmode
attribute set to nomatch.
5.3.1. <grammar>
The <grammar> element allows a custom grammar, inline or external, to
be specified. Custom grammars permit the full range of DTMF
characters including '*' and '#' to be specified for DTMF pattern
matching.
The <grammar> element has the following attributes:
Boulton, et al. Expires August 26, 2008 [Page 31]
Internet-Draft Media Server Control Package February 2008
src: specifies the location of an external grammar. A valid value
is a URI (see Section 8.9). The attribute is optional. There is
no default value.
type: identifies the preferred type of the grammar document
identified by the src attribute. A valid value is a MIME type
(see Section 8.10). The attribute is optional. There is no
default value.
The <grammar> element allows inline grammars to be specified. XML
grammar formats MUST use a namespace other than the one used in this
specification. Non-XML grammar formats MAY use a CDATA section.
The MS MUST support the [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
supported by the MS.
[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
starts a dialog where DTMF collection is determined by an inline SRGS
grammar:
Boulton, et al. Expires August 26, 2008 [Page 32]
Internet-Draft Media Server Control Package February 2008
<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">
<one-of>
<item>
<item repeat="4">
<ruleref uri="#digit"/>
</item>#</item>
<item>* 9</item>
</one-of>
</rule>
</grammar>
</grammar>
</collect>
</basicivr>
</dialogstart>
The same grammar could also be referenced externally (and take
advantage of HTTP caching):
Boulton, et al. Expires August 26, 2008 [Page 33]
Internet-Draft Media Server Control Package February 2008
<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>
See Section 6 and Section 7 for further examples.
5.4. <record>
The <record> element defines how media input is recorded.
The <record> element has the following attributes:
timeout: indicates the time to wait for user input. A valid value
is a Time Designation (see Section 8.7). The attribute is
optional. The default value is 5s.
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).
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.
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.
Boulton, et al. Expires August 26, 2008 [Page 34]
Internet-Draft Media Server Control Package February 2008
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.
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.
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.
beep: indicates whether a 'beep' should be played immediately prior
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.
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.
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.
The <record> element has no child elements.
Recording has the following execution model upon initialization:
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.
2. If a beep attribute with the value of true is specified, then a
beep tone is played.
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
Boulton, et al. Expires August 26, 2008 [Page 35]
Internet-Draft Media Server Control Package February 2008
the dialogexit result contains a <recordinfo> (see Section 5.5.3)
with the termmode attribute set to noinput.
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. 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.
6. During the record operation user media input is recording in the
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.
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.
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. Exit Information
When a basic ivr dialog exits, information is reported in a
<dialogexit> notification event.
The content model of the <dialogexit> element defined in
Section 4.3.2 is extended with the following child elements:
<promptinfo>: reports information about the prompt execution (see
Section 5.5.1). The element is optional.
<collectinfo>: reports information about the collect execution (see
Section 5.5.2). The element is optional.
Boulton, et al. Expires August 26, 2008 [Page 36]
Internet-Draft Media Server Control Package February 2008
<recordinfo>: reports information about the record execution (see
Section 5.5.3). The element is optional.
5.5.1. <promptinfo>
The <promptinfo> element reports the information about prompt
execution. It has the following attributes:
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.
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.
Boulton, et al. Expires August 26, 2008 [Page 37]
Internet-Draft Media Server Control Package February 2008
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.
Boulton, et al. Expires August 26, 2008 [Page 38]
Internet-Draft Media Server Control Package February 2008
6. AS-MS Dialog Interaction Examples
The following example assume a control channel has been established
as described in the Media Control Channel Framework ([MCCF]).
The XML messages are in angled brackets; the REPORT status is in
round brackets. Other aspects of the protocol are omitted for
readability.
6.1. Starting an IVR dialog
An IVR dialog is started successfully, and dialogexit notification
<event> is sent from the MS to the AS when the dialog exits normally.
Application Server (AS) Media Server (MS)
| |
| (1) CONTROL: <dialogstart> |
| ----------------------------------------> |
| |
| (2) 202 |
| <--------------------------------------- |
| |
| |
| (3) REPORT: <response status="200"/> |
| (terminate) |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) CONTROL: <event ... /> |
| |
| <---------------------------------------- |
| |
| (6) 200 |
| ----------------------------------------> |
| |
6.2. IVR dialog fails to start
An IVR dialog fails to start due to an unknown dialog type.
Boulton, et al. Expires August 26, 2008 [Page 39]
Internet-Draft Media Server Control Package February 2008
Application Server (AS) Media Server (MS)
| |
| (1) CONTROL: <dialogstart> |
| ----------------------------------------> |
| |
| (2) 202 |
| <--------------------------------------- |
| |
| (3) REPORT: <response status="409"/> |
| (terminate) |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
6.3. Preparing and starting an IVR dialog
An IVR dialog is prepared and started successfully, and then the
dialog exits normally.
Boulton, et al. Expires August 26, 2008 [Page 40]
Internet-Draft Media Server Control Package February 2008
Application Server (AS) Media Server (MS)
| |
| (1) CONTROL: <dialogprepare> |
| ----------------------------------------> |
| |
| (2) 202 |
| <--------------------------------------- |
| |
| (3) REPORT: <response status="200"/> |
| (terminate) |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) CONTROL: <dialogstart> |
| ----------------------------------------> |
| |
| (6) 202 |
| <--------------------------------------- |
| |
| (7) REPORT: <response status="200"/> |
| (terminate) |
| <---------------------------------------- |
| |
| (8) 200 |
| ----------------------------------------> |
| |
| (9) CONTROL: <event .../> |
| <---------------------------------------- |
| |
| (10) 200 |
| ----------------------------------------> |
| |
6.4. Terminating a dialog
An IVR dialog is started successfully, and then terminated by the AS.
The dialogexit event is sent by to the AS when the dialog exits.
Boulton, et al. Expires August 26, 2008 [Page 41]
Internet-Draft Media Server Control Package February 2008
Application Server (AS) Media Server (MS)
| |
| (1) CONTROL: <dialogstart> |
| ----------------------------------------> |
| |
| (2) 202 |
| <--------------------------------------- |
| |
| (3) REPORT: <response status="200"/> |
| (terminate) |
| <---------------------------------------- |
| |
| (4) 200 |
| ----------------------------------------> |
| |
| (5) CONTROL: <dialogterminate> |
| ----------------------------------------> |
| |
| (6) 200: <response status="200"/> |
| <---------------------------------------- |
| |
| (7) CONTROL: <event .../> |
| <---------------------------------------- |
| |
| (8) 200 |
| ----------------------------------------> |
| |
Note that in (6) the <response> payload to the <dialogterminate/>
request is carried on a framework 200 response since it could
complete the requested operation before the transaction timeout.
Boulton, et al. Expires August 26, 2008 [Page 42]
Internet-Draft Media Server Control Package February 2008
7. Basic IVR Dialog Examples
The following examples show how <basicivr> is used with
<dialogprepare>, <dialogstart> and <event> elements to play prompts,
collect DTMF input and record user input.
The examples do not specify all messages between the AS and MS.
7.1. Playing announcements
This example prepares an announcement composed of two prompts.
<dialogprepare>
<basicivr>
<prompt>
<media src="http://www.example.com/media/Number_09.wav"/>
<media src="http://www.example.com/media/Number_11.wav"/>
</prompt>
</basicivr>
</dialogprepare>
If the dialog is prepared successfully, a <response> with status 200
is returned:
<response status="200" dialogid="vxi78"/>
The prepared dialog is then started on a conference playing the
prompts twice:
<dialogstart prepareddialogid="vxi78" conferenceid="conference11"/>
In the case of a successful dialog, the output is provided in
<event>; for example
<event dialogid="vxi78">
<dialogexit status="1">
<promptinfo termmode="completed"/>
</dialogexit>
</event>
Boulton, et al. Expires August 26, 2008 [Page 43]
Internet-Draft Media Server Control Package February 2008
7.2. Prompt and collect
This example plays no prompts and just waits for DTMF input from the
user:
<dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
<basicivr>
<collect/>
</basicivr>
</dialogstart>
If the dialog is successful, then "dialogexit" <event> contains the
dtmf collected in its result parameter:
<event dialogid="vxi80">
<dialogexit status="1">
<collectinfo dtmf="12345" termmode="match"/>
</dialogexit>
</event>
In this example, a prompt is played and then we wait for 3 hours for
a two digit sequence:
<dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
<basicivr>
<prompt>
<media src="http://www.example.com/prompt1.wav"/>
</prompt>
<collect timeout="1080s" maxdigits="2"/>
</basicivr>
</dialogstart>
If no user input is collected within 3 hours, then following would be
returned:
<event dialogid="vxi81">
<dialogexit status="1" >
<collectinfo termmode="noinput"/>
</dialogexit>
</event>
And finally in this example, one of the input parameters is invalid:
Boulton, et al. Expires August 26, 2008 [Page 44]
Internet-Draft Media Server Control Package February 2008
<dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
<basicivr>
<prompt iterations="two">
<media src="http://www.example.com/prompt1.wav"/>
</prompt>
<collect cleardigitbuffer="true" bargein="true"
timeout="4s" interdigittimeout="2s"
termtimeout="0s maxdigits="2"/>
</basicivr>
</dialogstart>
The error is reported in a the response:
<response status="411" dialogid="vxi82"
reason="iterations value invalid: two"/>
7.3. Prompt and record
In this example, the user is prompted, then their input is recorded
for a maximum of 30 seconds.
<dialogstart connectionid="7HDY839~HJKSkyHS~HUwkuh7ns">
<basicivr>
<prompt>
<media src="http://www.example.com/media/sayname.wav"/>
</prompt>
<record dtmfterm="false" maxtime="30s" beep="true"/>
</basicivr>
</dialogstart>
If successful, the following is returned in a dialogexit <event>:
<event dialogid="vxi83">
<dialogexit status="1">
<recordinfo recording="http://www.example.com/recording1.wav"
termmode="dtmf"/>
</dialogexit>
</event>
Boulton, et al. Expires August 26, 2008 [Page 45]
Internet-Draft Media Server Control Package February 2008
8. Type Definitions
This section defines types referenced in attribute definitions.
8.1. Boolean
The value space of boolean is the set {true, false}.
8.2. DTMFChar
A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6,
7, 8, 9, #, *, A, B, C, D}.
8.3. DTMFString
A String composed of one or more DTMFChars.
8.4. Non-Negative Integer
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%".
Boulton, et al. Expires August 26, 2008 [Page 46]
Internet-Draft Media Server Control Package February 2008
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.
Boulton, et al. Expires August 26, 2008 [Page 47]
Internet-Draft Media Server Control Package February 2008
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>
<!--
###################################################
Boulton, et al. Expires August 26, 2008 [Page 48]
Internet-Draft Media Server Control Package February 2008
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:group>
<xsd:group name="msc.ivr.common.dialogprepare.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.common.dialogprepare.mix" minOccurs="0"
Boulton, et al. Expires August 26, 2008 [Page 49]
Internet-Draft Media Server Control Package February 2008
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"
Boulton, et al. Expires August 26, 2008 [Page 50]
Internet-Draft Media Server Control Package February 2008
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: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>
Boulton, et al. Expires August 26, 2008 [Page 51]
Internet-Draft Media Server Control Package February 2008
<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" />
Boulton, et al. Expires August 26, 2008 [Page 52]
Internet-Draft Media Server Control Package February 2008
</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" />
<!--
#####################################################
COMMON ATTRIBUTES AND ELEMENTS
#####################################################
-->
<xsd:attributeGroup name="msc.common.attribs">
<xsd:annotation>
<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
Boulton, et al. Expires August 26, 2008 [Page 53]
Internet-Draft Media Server Control Package February 2008
####################################################
-->
<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]" />
Boulton, et al. Expires August 26, 2008 [Page 54]
Internet-Draft Media Server Control Package February 2008
</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
Boulton, et al. Expires August 26, 2008 [Page 55]
Internet-Draft Media Server Control Package February 2008
#############################################################
-->
<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" />
Boulton, et al. Expires August 26, 2008 [Page 56]
Internet-Draft Media Server Control Package February 2008
<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:group>
<xsd:group name="msc.ivr.basicivr.basicivr.content">
<xsd:sequence>
<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:element name="basicivr" type="msc.ivr.basicivr.basicivr.type" />
Boulton, et al. Expires August 26, 2008 [Page 57]
Internet-Draft Media Server Control Package February 2008
<!-- prompt -->
<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:group>
<xsd:group name="msc.ivr.basicivr.prompt.content">
<xsd:choice>
<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:element name="prompt" type="msc.ivr.basicivr.prompt.type" />
<!-- media -->
<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>
Boulton, et al. Expires August 26, 2008 [Page 58]
Internet-Draft Media Server Control Package February 2008
<xsd:group name="msc.ivr.basicivr.media.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.basicivr.media.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.media.mix" minOccurs="0"
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:element name="media" type="msc.ivr.basicivr.media.type" />
<!-- variable -->
<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:group>
<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" />
Boulton, et al. Expires August 26, 2008 [Page 59]
Internet-Draft Media Server Control Package February 2008
<xsd:attributeGroup ref="msc.ivr.basicivr.variable.attlist" />
</xsd:complexType>
<xsd:element name="variable" type="msc.ivr.basicivr.variable.type" />
<!-- dtmf -->
<xsd:attributeGroup name="msc.ivr.basicivr.dtmf.attlist">
<xsd:attribute name="digits" type="dtmfstring.datatype"
use="required" />
<xsd:attribute name="level" type="xsd:integer" default="-6" />
<xsd:attribute name="duration" type="timedesignation.datatype"
default="100ms" />
<xsd:attribute name="interval" type="timedesignation.datatype"
default="100ms" />
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<xsd:group name="msc.ivr.basicivr.dtmf.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.basicivr.dtmf.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.dtmf.mix" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
<xsd:complexType name="msc.ivr.basicivr.dtmf.type">
<xsd:group ref="msc.ivr.basicivr.dtmf.content" />
<xsd:attributeGroup ref="msc.ivr.basicivr.dtmf.attlist" />
</xsd:complexType>
<xsd:element name="dtmf" type="msc.ivr.basicivr.dtmf.type" />
<!-- collect -->
<xsd:attributeGroup name="msc.ivr.basicivr.collect.attlist">
<xsd:attribute name="cleardigitbuffer" type="boolean.datatype"
default="true" />
<xsd:attribute name="timeout" type="timedesignation.datatype"
default="5s" />
Boulton, et al. Expires August 26, 2008 [Page 60]
Internet-Draft Media Server Control Package February 2008
<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:group name="msc.ivr.basicivr.collect.mix">
<xsd:choice>
<xsd:element ref="grammar" minOccurs="0" maxOccurs="1" />
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</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:element name="collect" type="msc.ivr.basicivr.collect.type" />
<!-- grammar -->
Boulton, et al. Expires August 26, 2008 [Page 61]
Internet-Draft Media Server Control Package February 2008
<xsd:attributeGroup name="msc.ivr.basicivr.grammar.attlist">
<xsd:attribute name="src" type="xsd:anyURI" />
<xsd:attribute name="type" type="mime.datatype" />
<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:element name="grammar" type="msc.ivr.basicivr.grammar.type" />
<!-- record -->
<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>
Boulton, et al. Expires August 26, 2008 [Page 62]
Internet-Draft Media Server Control Package February 2008
<xsd:group name="msc.ivr.basicivr.record.mix">
<xsd:choice>
<xsd:group ref="msc.common.content" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
<xsd:group name="msc.ivr.basicivr.record.content">
<xsd:sequence>
<xsd:group ref="msc.ivr.basicivr.record.mix" minOccurs="0"
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:element name="record" type="msc.ivr.basicivr.record.type" />
<!-- promptinfo -->
<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: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" />
Boulton, et al. Expires August 26, 2008 [Page 63]
Internet-Draft Media Server Control Package February 2008
<xsd:attributeGroup ref="msc.ivr.basicivr.promptinfo.attlist" />
</xsd:complexType>
<xsd:element name="promptinfo"
type="msc.ivr.basicivr.promptinfo.type" />
<!-- 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:group>
<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:element name="collectinfo"
type="msc.ivr.basicivr.collectinfo.type" />
<!-- recordinfo -->
<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" />
Boulton, et al. Expires August 26, 2008 [Page 64]
Internet-Draft Media Server Control Package February 2008
<xsd:attributeGroup ref="msc.common.attribs" />
</xsd:attributeGroup>
<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" />
Boulton, et al. Expires August 26, 2008 [Page 65]
Internet-Draft Media Server Control Package February 2008
<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>
Boulton, et al. Expires August 26, 2008 [Page 66]
Internet-Draft Media Server Control Package February 2008
10. Security Considerations
As this control package uses XML markup, implementation MUST address
the security considerations of [RFC3023].
Boulton, et al. Expires August 26, 2008 [Page 67]
Internet-Draft Media Server Control Package February 2008
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
11.2. URN Sub-Namespace Registration
XML namespace: urn:ietf:params:xml:ns:msc-ivr-basic
11.3. Mime Type Registration
MIME type: application/msc-ivr-basic+xml
Boulton, et al. Expires August 26, 2008 [Page 68]
Internet-Draft Media Server Control Package February 2008
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.
Boulton, et al. Expires August 26, 2008 [Page 69]
Internet-Draft Media Server Control Package February 2008
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 -04 version.
o Mainly an alignment/evaluation exercise with requirements produced
by MEDIACTRL IVR design team.
o playannouncement parameters from Table 7 of '04' version are now
reflected in text - schema to be updated.
o Added VCR commands based on MSCML.
The following are the major changes between the -04 of the draft and
the -03 version.
o None.
The following are the major changes between the -03 of the draft and
the -02 version.
o added "basicivr:" protocol to template dialog types which must be
supported as values of the "src" attribute in <dialogprepare> and
<dialogstart>. Note alternative: "/basicivr/playannouncement"
offered in [RFC4240].
o added "basicivr:" URI schema to IANA considerations
Boulton, et al. Expires August 26, 2008 [Page 70]
Internet-Draft Media Server Control Package February 2008
o Added mimetype, vadinitial and vadfinal parameters to
'promptandrecord' dialog type
o updated references
The following are the major changes between the -02 of the draft and
the -01 version.
o added version 1.0 to package name
o separate section for element definitions
o dialogterminate treated as request rather than notification
o simplified responses: single element <response>
o removed response elements: <dialogprepared>, <dialogstarted>,
<errordialognotprepared>, <errordialognotstarted>
o simplified event notifications to single <event> element carried
in a REPORT
o <dialogexit> element replaced with <event name="dialogexit">
o removed <dialoguser> element
o added <stream> element as child of <dialogstart>
o removed 'type' attribute from <dialogprepare> and <dialogstart>
o added dialogid attribute to <dialogprepare> and <dialogstart>
o removed template "Sample Implementation" section
o renamed <namelist> to <data>
o re-organized so that template details after general package
framework and element description.
The following are the primary changes between the -01 of the draft
and the -00 version.
o Removed requirement for VoiceXML dialog support
o Added requirement for template dialog support
Boulton, et al. Expires August 26, 2008 [Page 71]
Internet-Draft Media Server Control Package February 2008
13. Contributors
Asher Shiratzky from Radvision provided valuable support and
contributions to the early versions of this document.
The authors would like to thank the IVR design team consisting of
Roni Even, Lorenzo Miniero, Adnan Saleem and Diego Besprosvan who
provided valuable feedback, input and text to this document.
Boulton, et al. Expires August 26, 2008 [Page 72]
Internet-Draft Media Server Control Package February 2008
14. Acknowledgments
The authors would like to thank Adnan Saleem of Radisys, Gene
Shtirmer of Intel, Dave Burke of Google and Dan York of Voxeo for
useful reviews of this work.
Boulton, et al. Expires August 26, 2008 [Page 73]
Internet-Draft Media Server Control Package February 2008
15. References
15.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
15.2. Informative References
[CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version
1.0", W3C Working Draft (work in progress), January 2007.
[H.248.1] "Gateway control protocol: Version 3", ITU-T
Recommendation H.248.1.
[H.248.9] "Gateway control protocol: Advanced media server
packages", ITU-T Recommendation H.248.9.
[I-D.ietf-mediactrl-requirements]
Dolly, M. and R. Even, "Media Server Control Protocol
Requirements", draft-ietf-mediactrl-requirements-03 (work
in progress), December 2007.
[MCCF] Boulton, C., Melanchuk, T., McGlashan, S., and A.
Shiratzky, "Media Control Channel Framework",
draft-ietf-mediactrl-sip-control-framework-01 (work in
progress), February 2008.
[MSML] Saleem, A., Xin, Y., and G. Sharratt, "Media Session
Markup Language (MSML)", draft-saleem-msml-06 (work in
progress), February 2008.
[RFC2833] Schulzrinne, H. and S. Petrack, "RTP Payload for DTMF
Digits, Telephony Tones and Telephony Signals", RFC 2833,
May 2000.
[RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio
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,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
Boulton, et al. Expires August 26, 2008 [Page 74]
Internet-Draft Media Server Control Package February 2008
June 2002.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, January 2005.
[RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network
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
Protocol (SDP) Label Attribute", RFC 4574, August 2006.
[RFC4730] Burger, E. and M. Dolly, "A Session Initiation Protocol
(SIP) Event Package for Key Press Stimulus (KPML)",
RFC 4730, November 2006.
[RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server
Control Markup Language (MSCML) and Protocol", RFC 5022,
September 2007.
[SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar
Specification Version 1.0", W3C Recommendation,
March 2004.
[VXML20] McGlashan, S., Burnett, D., Carter, J., Danielsen, P.,
Ferrans, J., Hunt, A., Lucas, B., Porter, B., Rehor, K.,
and S. Tryphonas, "Voice Extensible Markup Language
(VoiceXML) Version 2.0", W3C Recommendation, March 2004.
[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.,
and F. Yergeau, "Extensible Markup Language (XML) 1.0
(Third Edition)", W3C Recommendation, February 2004.
Boulton, et al. Expires August 26, 2008 [Page 75]
Internet-Draft Media Server Control Package February 2008
Authors' Addresses
Chris Boulton
Avaya
Building 3
Wern Fawr Lane
St Mellons
Cardiff, South Wales CF3 5EA
Email: cboulton@avaya.com
Tim Melanchuk
Rain Willow Communications
Email: tim.melanchuk@gmail.com
Scott McGlashan
Hewlett-Packard
Gustav III:s boulevard 36
SE-16985 Stockholm, Sweden
Email: scott.mcglashan@hp.com
Boulton, et al. Expires August 26, 2008 [Page 76]
Internet-Draft Media Server Control Package February 2008
Full Copyright Statement
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Boulton, et al. Expires August 26, 2008 [Page 77]
| PAFTECH AB 2003-2026 | 2026-04-23 11:04:03 |