< draft-ietf-mediactrl-ivr-control-package-08.txt   draft-ietf-mediactrl-ivr-control-package-09.txt >
Network Working Group S. McGlashan Network Working Group S. McGlashan
Internet-Draft Hewlett-Packard Internet-Draft Hewlett-Packard
Intended status: Standards Track T. Melanchuk Intended status: Standards Track T. Melanchuk
Expires: August 29, 2010 Rain Willow Communications Expires: May 15, 2011 Rain Willow Communications
C. Boulton C. Boulton
NS-Technologies NS-Technologies
February 25, 2010 November 11, 2010
An Interactive Voice Response (IVR) Control Package for the Media An Interactive Voice Response (IVR) Control Package for the Media
Control Channel Framework Control Channel Framework
draft-ietf-mediactrl-ivr-control-package-08 draft-ietf-mediactrl-ivr-control-package-09
Abstract Abstract
This document defines a Media Control Channel Framework Package for This document defines a Media Control Channel Framework Package for
Interactive Voice Response (IVR) dialog interaction on media Interactive Voice Response (IVR) dialog interaction on media
connections and conferences. The package defines dialog management connections and conferences. The package defines dialog management
request elements for preparing, starting and terminating dialog request elements for preparing, starting and terminating dialog
interactions, as well as associated responses and notifications. interactions, as well as associated responses and notifications.
Dialog interactions are specified in a dialog language. This package Dialog interactions are specified in a dialog language. This package
defines a lightweight IVR dialog language (supporting prompt defines a lightweight IVR dialog language (supporting prompt
playback, runtime controls, DTMF collect and media recording) and playback, runtime controls, Dual-Tone Multi-Frequency (DTMF)
allows other dialog languages to be used. The package also defines collection and media recording) and allows other dialog languages to
elements for auditing package capabilities and IVR dialogs. be used. The package also defines elements for auditing package
capabilities and IVR dialogs.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This Internet-Draft will expire on May 15, 2011.
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 29, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this 10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process. modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 9 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 10
3. Control Package Definition . . . . . . . . . . . . . . . . . 10 3. Control Package Definition . . . . . . . . . . . . . . . . . 11
3.1. Control Package Name . . . . . . . . . . . . . . . . . . 10 3.1. Control Package Name . . . . . . . . . . . . . . . . . . 11
3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 10 3.2. Framework Message Usage . . . . . . . . . . . . . . . . . 11
3.3. Common XML Support . . . . . . . . . . . . . . . . . . . 11 3.3. Common XML Support . . . . . . . . . . . . . . . . . . . 12
3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . 11 3.4. CONTROL Message Body . . . . . . . . . . . . . . . . . . 12
3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 11 3.5. REPORT Message Body . . . . . . . . . . . . . . . . . . . 12
3.6. Audit . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.6. Audit . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 12 3.7. Examples . . . . . . . . . . . . . . . . . . . . . . . . 13
4. Element Definitions . . . . . . . . . . . . . . . . . . . . . 13 4. Element Definitions . . . . . . . . . . . . . . . . . . . . . 14
4.1. <mscivr> . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1. <mscivr> . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2. Dialog Management Elements . . . . . . . . . . . . . . . 15 4.2. Dialog Management Elements . . . . . . . . . . . . . . . 16
4.2.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 18 4.2.1. <dialogprepare> . . . . . . . . . . . . . . . . . . . 19
4.2.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 21 4.2.2. <dialogstart> . . . . . . . . . . . . . . . . . . . . 22
4.2.2.1. <subscribe> . . . . . . . . . . . . . . . . . . . 24 4.2.2.1. <subscribe> . . . . . . . . . . . . . . . . . . . 25
4.2.2.1.1. <dtmfsub> . . . . . . . . . . . . . . . . . . 25 4.2.2.1.1. <dtmfsub> . . . . . . . . . . . . . . . . . . 26
4.2.2.2. <stream> . . . . . . . . . . . . . . . . . . . . 26 4.2.2.2. <stream> . . . . . . . . . . . . . . . . . . . . 27
4.2.2.2.1. <region> . . . . . . . . . . . . . . . . . . 27 4.2.2.2.1. <region> . . . . . . . . . . . . . . . . . . 28
4.2.2.2.2. <priority> . . . . . . . . . . . . . . . . . 27 4.2.2.2.2. <priority> . . . . . . . . . . . . . . . . . 28
4.2.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 28 4.2.3. <dialogterminate> . . . . . . . . . . . . . . . . . . 29
4.2.4. <response> . . . . . . . . . . . . . . . . . . . . . 28 4.2.4. <response> . . . . . . . . . . . . . . . . . . . . . 30
4.2.5. <event> . . . . . . . . . . . . . . . . . . . . . . . 30 4.2.5. <event> . . . . . . . . . . . . . . . . . . . . . . . 31
4.2.5.1. <dialogexit> . . . . . . . . . . . . . . . . . . 30 4.2.5.1. <dialogexit> . . . . . . . . . . . . . . . . . . 31
4.2.5.2. <dtmfnotify> . . . . . . . . . . . . . . . . . . 32 4.2.5.2. <dtmfnotify> . . . . . . . . . . . . . . . . . . 33
4.2.6. <params> . . . . . . . . . . . . . . . . . . . . . . 32 4.2.6. <params> . . . . . . . . . . . . . . . . . . . . . . 33
4.2.6.1. <param> . . . . . . . . . . . . . . . . . . . . . 33 4.2.6.1. <param> . . . . . . . . . . . . . . . . . . . . . 34
4.3. IVR Dialog Elements . . . . . . . . . . . . . . . . . . . 34 4.3. IVR Dialog Elements . . . . . . . . . . . . . . . . . . . 35
4.3.1. <dialog> . . . . . . . . . . . . . . . . . . . . . . 35 4.3.1. <dialog> . . . . . . . . . . . . . . . . . . . . . . 36
4.3.1.1. <prompt> . . . . . . . . . . . . . . . . . . . . 38 4.3.1.1. <prompt> . . . . . . . . . . . . . . . . . . . . 39
4.3.1.1.1. <variable> . . . . . . . . . . . . . . . . . 39 4.3.1.1.1. <variable> . . . . . . . . . . . . . . . . . 40
4.3.1.1.2. <dtmf> . . . . . . . . . . . . . . . . . . . 41 4.3.1.1.1.1. Date type . . . . . . . . . . . . . . . . 41
4.3.1.1.3. <par> . . . . . . . . . . . . . . . . . . . . 42 4.3.1.1.1.2. Time type . . . . . . . . . . . . . . . . 42
4.3.1.1.3.1. <seq> . . . . . . . . . . . . . . . . . . 43 4.3.1.1.1.3. Digits type . . . . . . . . . . . . . . . 43
4.3.1.2. <control> . . . . . . . . . . . . . . . . . . . . 45 4.3.1.1.2. <dtmf> . . . . . . . . . . . . . . . . . . . 43
4.3.1.3. <collect> . . . . . . . . . . . . . . . . . . . . 48 4.3.1.1.3. <par> . . . . . . . . . . . . . . . . . . . . 44
4.3.1.3.1. <grammar> . . . . . . . . . . . . . . . . . . 50 4.3.1.1.3.1. <seq> . . . . . . . . . . . . . . . . . . 46
4.3.1.4. <record> . . . . . . . . . . . . . . . . . . . . 52 4.3.1.2. <control> . . . . . . . . . . . . . . . . . . . . 47
4.3.1.5. <media> . . . . . . . . . . . . . . . . . . . . . 56 4.3.1.3. <collect> . . . . . . . . . . . . . . . . . . . . 50
4.3.2. Exit Information . . . . . . . . . . . . . . . . . . 57 4.3.1.3.1. <grammar> . . . . . . . . . . . . . . . . . . 53
4.3.2.1. <promptinfo> . . . . . . . . . . . . . . . . . . 58 4.3.1.4. <record> . . . . . . . . . . . . . . . . . . . . 54
4.3.2.2. <controlinfo> . . . . . . . . . . . . . . . . . . 58 4.3.1.5. <media> . . . . . . . . . . . . . . . . . . . . . 58
4.3.2.2.1. <controlmatch> . . . . . . . . . . . . . . . 58 4.3.2. Exit Information . . . . . . . . . . . . . . . . . . 60
4.3.2.3. <collectinfo> . . . . . . . . . . . . . . . . . . 58 4.3.2.1. <promptinfo> . . . . . . . . . . . . . . . . . . 60
4.3.2.4. <recordinfo> . . . . . . . . . . . . . . . . . . 59 4.3.2.2. <controlinfo> . . . . . . . . . . . . . . . . . . 60
4.3.2.4.1. <mediainfo> . . . . . . . . . . . . . . . . . 59 4.3.2.2.1. <controlmatch> . . . . . . . . . . . . . . . 60
4.4. Audit Elements . . . . . . . . . . . . . . . . . . . . . 60 4.3.2.3. <collectinfo> . . . . . . . . . . . . . . . . . . 60
4.4.1. <audit> . . . . . . . . . . . . . . . . . . . . . . . 60 4.3.2.4. <recordinfo> . . . . . . . . . . . . . . . . . . 61
4.4.2. <auditresponse> . . . . . . . . . . . . . . . . . . . 61 4.3.2.4.1. <mediainfo> . . . . . . . . . . . . . . . . . 61
4.4.2.1. <codecs> . . . . . . . . . . . . . . . . . . . . 63 4.4. Audit Elements . . . . . . . . . . . . . . . . . . . . . 62
4.4.2.1.1. <codec> . . . . . . . . . . . . . . . . . . . 64 4.4.1. <audit> . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.2.2. <capabilities> . . . . . . . . . . . . . . . . . 64 4.4.2. <auditresponse> . . . . . . . . . . . . . . . . . . . 64
4.4.2.2.1. <dialoglanguages> . . . . . . . . . . . . . . 66 4.4.2.1. <codecs> . . . . . . . . . . . . . . . . . . . . 65
4.4.2.2.2. <grammartypes> . . . . . . . . . . . . . . . 67 4.4.2.1.1. <codec> . . . . . . . . . . . . . . . . . . . 66
4.4.2.2.3. <recordtypes> . . . . . . . . . . . . . . . . 67 4.4.2.2. <capabilities> . . . . . . . . . . . . . . . . . 67
4.4.2.2.4. <prompttypes> . . . . . . . . . . . . . . . . 67 4.4.2.2.1. <dialoglanguages> . . . . . . . . . . . . . . 68
4.4.2.2.5. <variables> . . . . . . . . . . . . . . . . . 68 4.4.2.2.2. <grammartypes> . . . . . . . . . . . . . . . 69
4.4.2.2.5.1. <variabletype> . . . . . . . . . . . . . 68 4.4.2.2.3. <recordtypes> . . . . . . . . . . . . . . . . 69
4.4.2.2.6. <maxpreparedduration> . . . . . . . . . . . . 69 4.4.2.2.4. <prompttypes> . . . . . . . . . . . . . . . . 69
4.4.2.2.7. <maxrecordduration> . . . . . . . . . . . . . 69 4.4.2.2.5. <variables> . . . . . . . . . . . . . . . . . 70
4.4.2.3. <dialogs> . . . . . . . . . . . . . . . . . . . . 69 4.4.2.2.5.1. <variabletype> . . . . . . . . . . . . . 70
4.4.2.3.1. <dialogaudit> . . . . . . . . . . . . . . . . 69 4.4.2.2.6. <maxpreparedduration> . . . . . . . . . . . . 71
4.5. Response Status Codes . . . . . . . . . . . . . . . . . . 70 4.4.2.2.7. <maxrecordduration> . . . . . . . . . . . . . 71
4.6. Type Definitions . . . . . . . . . . . . . . . . . . . . 76 4.4.2.3. <dialogs> . . . . . . . . . . . . . . . . . . . . 71
5. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 78 4.4.2.3.1. <dialogaudit> . . . . . . . . . . . . . . . . 71
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.5. Response Status Codes . . . . . . . . . . . . . . . . . . 72
6.1. AS-MS Dialog Interaction Examples . . . . . . . . . . . . 105 4.6. Type Definitions . . . . . . . . . . . . . . . . . . . . 78
6.1.1. Starting an IVR dialog . . . . . . . . . . . . . . . 105 5. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1.2. IVR dialog fails to start . . . . . . . . . . . . . . 106 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.1.3. Preparing and starting an IVR dialog . . . . . . . . 106 6.1. AS-MS Dialog Interaction Examples . . . . . . . . . . . . 108
6.1.4. Terminating a dialog . . . . . . . . . . . . . . . . 107 6.1.1. Starting an IVR dialog . . . . . . . . . . . . . . . 108
6.2. IVR Dialog Examples . . . . . . . . . . . . . . . . . . . 108 6.1.2. IVR dialog fails to start . . . . . . . . . . . . . . 109
6.2.1. Playing announcements . . . . . . . . . . . . . . . . 108 6.1.3. Preparing and starting an IVR dialog . . . . . . . . 109
6.2.2. Prompt and collect . . . . . . . . . . . . . . . . . 109 6.1.4. Terminating a dialog . . . . . . . . . . . . . . . . 110
6.2.3. Prompt and record . . . . . . . . . . . . . . . . . . 111 6.2. IVR Dialog Examples . . . . . . . . . . . . . . . . . . . 111
6.2.4. Runtime controls . . . . . . . . . . . . . . . . . . 112 6.2.1. Playing announcements . . . . . . . . . . . . . . . . 111
6.2.5. Subscriptions and notifications . . . . . . . . . . . 113 6.2.2. Prompt and collect . . . . . . . . . . . . . . . . . 112
6.2.6. Dialog repetition until DTMF collection complete . . 113 6.2.3. Prompt and record . . . . . . . . . . . . . . . . . . 114
6.3. Other Dialog Languages . . . . . . . . . . . . . . . . . 114 6.2.4. Runtime controls . . . . . . . . . . . . . . . . . . 115
6.4. Foreign Namespace Attributes and Elements . . . . . . . . 115 6.2.5. Subscriptions and notifications . . . . . . . . . . . 116
7. Security Considerations . . . . . . . . . . . . . . . . . . . 117 6.2.6. Dialog repetition until DTMF collection complete . . 116
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 120 6.3. Other Dialog Languages . . . . . . . . . . . . . . . . . 117
8.1. Control Package Registration . . . . . . . . . . . . . . 120 6.4. Foreign Namespace Attributes and Elements . . . . . . . . 118
8.2. URN Sub-Namespace Registration . . . . . . . . . . . . . 120 7. Security Considerations . . . . . . . . . . . . . . . . . . . 120
8.3. XML Schema Registration . . . . . . . . . . . . . . . . . 121 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 123
8.1. Control Package Registration . . . . . . . . . . . . . . 123
8.2. URN Sub-Namespace Registration . . . . . . . . . . . . . 123
8.3. XML Schema Registration . . . . . . . . . . . . . . . . . 124
8.4. MIME Media Type Registration for 8.4. MIME Media Type Registration for
'application/msc-ivr+xml' . . . . . . . . . . . . . . . . 121 'application/msc-ivr+xml' . . . . . . . . . . . . . . . . 124
9. Change Summary . . . . . . . . . . . . . . . . . . . . . . . 123 8.5. IVR Prompt Variable Type Registration Information . . . . 125
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 137 9. Using VoiceXML as a dialog language . . . . . . . . . . . . . 127
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 138 10. Change Summary . . . . . . . . . . . . . . . . . . . . . . . 135
12. Appendix A: Using VoiceXML as a dialog language . . . . . . . 139 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 151
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 147 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 152
13.1. Normative References . . . . . . . . . . . . . . . . . . 147 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 153
13.2. Informative References . . . . . . . . . . . . . . . . . 148 13.1. Normative References . . . . . . . . . . . . . . . . . . 153
13.2. Informative References . . . . . . . . . . . . . . . . . 154
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 150 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 157
1. Introduction 1. Introduction
The Media Control Channel Framework The Media Control Channel Framework
([I-D.ietf-mediactrl-sip-control-framework]) provides a generic ([I-D.ietf-mediactrl-sip-control-framework]) provides a generic
approach for establishment and reporting capabilities of remotely approach for establishment and reporting capabilities of remotely
initiated commands. The Control Framework utilizes many functions initiated commands. The Channel Framework - an equivalent term for
the Media Control Channel Framework - utilizes many functions
provided by the Session Initiation Protocol [RFC3261] (SIP) for the provided by the Session Initiation Protocol [RFC3261] (SIP) for the
rendezvous and establishment of a reliable channel for control rendezvous and establishment of a reliable channel for control
interactions. The Control Framework also introduces the concept of a interactions. The Control Framework also introduces the concept of a
Control Package. A Control Package is an explicit usage of the Control Package. A Control Package is an explicit usage of the
Control Framework for a particular interaction set. This document Control Framework for a particular interaction set. This document
defines a Control Package for Interactive Voice Response (IVR) defines a Control Package for Interactive Voice Response (IVR)
dialogs on media connections and conferences. The term 'dialog' in dialogs on media connections and conferences. The term 'dialog' in
this document refers to an IVR dialog and is completely unrelated to this document refers to an IVR dialog and is completely unrelated to
the notion of a SIP dialog. The term 'IVR' is used in its inclusive the notion of a SIP dialog. The term 'IVR' is used in its inclusive
sense, allowing media other than voice for dialog interaction. sense, allowing media other than voice for dialog interaction.
The package defines dialog management request elements for preparing, The package defines dialog management request elements for preparing,
starting and terminating dialog interactions, as well as associated starting and terminating dialog interactions, as well as associated
responses and notifications. Dialog interactions are specified using responses and notifications. Dialog interactions are specified using
a dialog language where the language specifies a well-defined syntax a dialog language where the language specifies a well-defined syntax
and semantics for permitted operations (play a prompt, record input and semantics for permitted operations (play a prompt, record input
from the user, etc). This package defines a lightweight IVR dialog from the user, etc). This package defines a lightweight IVR dialog
language (supporting prompt playback, runtime controls, DTMF collect language (supporting prompt playback, runtime controls, DTMF
and media recording) and allows other dialog languages to be used. collection and media recording) and allows other dialog languages to
These dialog languages are specified inside dialog management be used. These dialog languages are specified inside dialog
elements for preparing and starting dialog interactions. The package management elements for preparing and starting dialog interactions.
also defines elements for auditing package capabilities and IVR The package also defines elements for auditing package capabilities
dialogs. and IVR dialogs.
This package has been designed to satisfy IVR requirements documented This package has been designed to satisfy IVR requirements documented
in the Media Server Control Protocol Requirements document in the Media Server Control Protocol Requirements document
([RFC5167]); more specifically REQ-MCP-28, REQ-MCP-29 and REQ-MCP-30. ([RFC5167]); more specifically REQ-MCP-28, REQ-MCP-29 and REQ-MCP-30.
It achieves this by building upon two major approaches to IVR dialog It achieves this by building upon two major approaches to IVR dialog
design. These approaches address a wide range of IVR use cases and design. These approaches address a wide range of IVR use cases and
are used in many applications which are extensively deployed today. are used in many applications which are extensively deployed today.
First, the package is designed to provide the major IVR functionality First, the package is designed to provide the major IVR functionality
of SIP Media Server languages such as netann ([RFC4240]), MSCML of SIP Media Server languages such as netann ([RFC4240]), MSCML
([RFC5022]) and MSML ([RFC5707]) which themselves build upon more ([RFC5022]) and MSML ([RFC5707]) which themselves build upon more
traditional non-SIP languages ([H.248.9], [RFC2897]). A key traditional non-SIP languages ([H.248.9], [RFC2897]). A key
differentiator is that this package provides IVR functionality using differentiator is that this package provides IVR functionality using
the Media Control Channel Framework. the Channel Framework.
Second, its design is aligned with key concepts of the web model as Second, its design is aligned with key concepts of the web model as
defined in W3C Voice Browser languages. The key dialog management defined in W3C Voice Browser languages. The key dialog management
mechanism is closely aligned with CCXML ([CCXML10]). The dialog mechanism is closely aligned with CCXML ([CCXML10]). The dialog
functionality defined in this package can be largely seen as a subset functionality defined in this package can be largely seen as a subset
of VoiceXML ([VXML20], [VXML21]): where possible, basic prompting, of VoiceXML ([VXML20], [VXML21]): where possible, basic prompting,
DTMF collection and media recording features are incorporated, but DTMF collection and media recording features are incorporated, but
not any advanced VoiceXML constructs (such as <form>, its not any advanced VoiceXML constructs (such as <form>, its
interpretation algorithm, or a dynamic data model). As W3C develops interpretation algorithm, or a dynamic data model). As W3C develops
VoiceXML 3.0 ([VXML30]), we expect to see further alignment, VoiceXML 3.0 ([VXML30]), we expect to see further alignment,
skipping to change at page 9, line 9 skipping to change at page 9, line 10
control package fulfills the requirements for a Media Control Channel control package fulfills the requirements for a Media Control Channel
Framework control package. Section 4 describes the syntax and Framework control package. Section 4 describes the syntax and
semantics of defined elements, including dialog management semantics of defined elements, including dialog management
(Section 4.2), the IVR dialog element (Section 4.3) and audit (Section 4.2), the IVR dialog element (Section 4.3) and audit
elements (Section 4.4). Section 5 describes an XML schema for these elements (Section 4.4). Section 5 describes an XML schema for these
elements and provides extensibility by allowing attributes and elements and provides extensibility by allowing attributes and
elements from other namespaces. Section 6 provides examples of elements from other namespaces. Section 6 provides examples of
package usage. Section 7 describes important security considerations package usage. Section 7 describes important security considerations
for use of this control package. Section 8 provides information on for use of this control package. Section 8 provides information on
IANA registration of this control package, including its name, XML IANA registration of this control package, including its name, XML
namespace and MIME media type. Finally, Section 12 provides namespace and MIME media type. It also establishes a registry for
additional information on using VoiceXML when supported as an prompt variables. Finally, Section 9 provides additional information
external dialog language. on using VoiceXML when supported as an external dialog language.
2. Conventions and Terminology 2. Conventions and Terminology
In this document, BCP 14 [RFC2119] defines the key words "MUST", In this document, BCP 14 [RFC2119] defines the key words "MUST",
"MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". In "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". In
addition, BCP 15 indicates requirement levels for compliant addition, BCP 15 indicates requirement levels for compliant
implementations. implementations.
The following additional terms are defined for use in this document: The following additional terms are defined for use in this document:
skipping to change at page 11, line 15 skipping to change at page 11, line 15
3. Control Package Definition 3. Control Package Definition
This section fulfills the mandatory requirement for information that This section fulfills the mandatory requirement for information that
MUST be specified during the definition of a Control Framework MUST be specified during the definition of a Control Framework
Package, as detailed in Section 8 of Package, as detailed in Section 8 of
[I-D.ietf-mediactrl-sip-control-framework]. [I-D.ietf-mediactrl-sip-control-framework].
3.1. Control Package Name 3.1. Control Package Name
The Control Framework requires a Control Package to specify and The Control Framework requires a Control Package to specify and
register a unique name and version. register a unique name.
The name and version of this Control Package is "msc-ivr/1.0" (Media The name of this Control Package is "msc-ivr/1.0" (Media Server
Server Control - Interactive Voice Response - version 1.0). Its IANA Control - Interactive Voice Response - version 1.0). Its IANA
registration is specified in Section 8.1. registration is specified in Section 8.1.
Since this is the initial ("1.0") version of the control package, Since this is the initial ("1.0") version of the control package,
there are no backwards compatibility issues to address. there are no backwards compatibility issues to address.
3.2. Framework Message Usage 3.2. Framework Message Usage
The Control Framework requires a Control Package to explicitly detail The Control Framework requires a Control Package to explicitly detail
the control messages that can be used as well as provide an the control messages that can be used as well as provide an
indication of directionality between entities. This will include indication of directionality between entities. This will include
skipping to change at page 14, line 40 skipping to change at page 14, line 40
The XML schema supports extensibility by allowing attributes and The XML schema supports extensibility by allowing attributes and
elements from other namespaces. Implementations MAY support elements from other namespaces. Implementations MAY support
additional capabilities by means of attributes and elements from additional capabilities by means of attributes and elements from
other (foreign) namespaces. Attributes and elements from foreign other (foreign) namespaces. Attributes and elements from foreign
namespaces are not described in this section. namespaces are not described in this section.
Some elements in this control package contain attributes whose value Some elements in this control package contain attributes whose value
is a URI. These elements include: <dialogprepare> (Section 4.2.1), is a URI. These elements include: <dialogprepare> (Section 4.2.1),
<dialogstart> (Section 4.2.2), <media> (Section 4.3.1.5), <grammar> <dialogstart> (Section 4.2.2), <media> (Section 4.3.1.5), <grammar>
(Section 4.3.1.3.1), and <record> (Section 4.3.1.4). The MS MUST (Section 4.3.1.3.1), and <record> (Section 4.3.1.4). The MS MUST
support one or more schemes using communication protocols suitable support both HTTP ([RFC2616]) and HTTPS ([RFC2818]) protocol schemes
for fetching resources (e.g. HTTP). for fetching and uploading resources and the MS MAY support other
schemes.
Some elements in this control package contain attributes whose value
is descriptive text. Since the descriptive text is for diagnostic
use only, and is neither a protocol element nor intended for user
display, the descriptive text does not require a language indicator
such as a language tag ([RFC2277]) and thus does not carry one.
These comprise: the reason attribute on <response> (Section 4.2.4),
<dialogexit> (Section 4.2.5.1) and <auditresponse> (Section 4.4.2);
desc attribute on <variabletype> and <format> (Section 4.4.2.2.5.1).
Usage examples are provided in Section 6. Usage examples are provided in Section 6.
4.1. <mscivr> 4.1. <mscivr>
The <mscivr> element has the following attributes (in addition to The <mscivr> element has the following attributes (in addition to
standard XML namespace attributes such as xmlns): standard XML namespace attributes such as xmlns):
version: a string specifying the mscivr package version. The value version: a string specifying the mscivr package version. The value
is fixed as '1.0' for this version of the package. The attribute is fixed as '1.0' for this version of the package. The attribute
skipping to change at page 20, line 6 skipping to change at page 20, line 6
an inline <dialog> element, and (b) validating the dialog document an inline <dialog> element, and (b) validating the dialog document
syntactically and semantically. syntactically and semantically.
A prepared dialog is executed when the MS receives a <dialogstart> A prepared dialog is executed when the MS receives a <dialogstart>
request referencing the prepared dialog identifier (see request referencing the prepared dialog identifier (see
Section 4.2.2). Section 4.2.2).
The <dialogprepare> element has the following attributes: The <dialogprepare> element has the following attributes:
src: specifies the location of an external dialog document to src: specifies the location of an external dialog document to
prepare. A valid value is a URI (see Section 4.6.9) including prepare. A valid value is a URI (see Section 4.6.9). The MS MUST
authentication information if defined by the URI scheme (e.g. support both HTTP ([RFC2616]) and HTTPS ([RFC2818]) schemes and
basic access authentication in HTTP). If the URI scheme is the MS MAY support other schemes. If the URI scheme is
unsupported, the MS sends a <response> with a 420 status code unsupported, the MS sends a <response> with a 420 status code
(Section 4.5). If the document cannot be retrieved within the (Section 4.5). If the document cannot be retrieved within the
timeout interval, the MS sends a <response> with a 409 status timeout interval, the MS sends a <response> with a 409 status
code. If the document contains a type of dialog language which code. If the document contains a type of dialog language which
the MS does not supported, the MS sends a <response> with a 421 the MS does not supported, the MS sends a <response> with a 421
status code. The attribute is optional. There is no default status code. The attribute is optional. There is no default
value. value.
type: specifies the type of the external dialog document indicated type: specifies the type of the external dialog document indicated
in the 'src' attribute. A valid value is a MIME media type (see in the 'src' attribute. A valid value is a MIME media type (see
skipping to change at page 21, line 47 skipping to change at page 21, line 47
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogprepare dialogid="d2" type="application/voicexml+xml" <dialogprepare dialogid="d2" type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml" src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s"/> fetchtimeout="15s"/>
</mscivr> </mscivr>
Since MS support for dialog languages other than the IVR dialog Since MS support for dialog languages other than the IVR dialog
language defined in this package is optional, if the MS does not language defined in this package is optional, if the MS does not
support the dialog language it would send a response with the status support the dialog language it would send a response with the status
code 409 (Section 4.5). Further information on using VoiceXML can be code 421 (Section 4.5). Further information on using VoiceXML can be
found in Section 12. found in Section 9.
4.2.2. <dialogstart> 4.2.2. <dialogstart>
The <dialogstart> element is sent to the MS to start a dialog. If The <dialogstart> element is sent to the MS to start a dialog. If
the dialog has not been prepared, the dialog is prepared (retrieving the dialog has not been prepared, the dialog is prepared (retrieving
external document and/or external resources referenced within external document and/or external resources referenced within
<dialog> element, and the dialog document validated syntactically and <dialog> element, and the dialog document validated syntactically and
semantically). Media processors (e.g. DTMF and prompt queue) are semantically). Media processors (e.g. DTMF and prompt queue) are
activated and associated with the specified connection or conference. activated and associated with the specified connection or conference.
The <dialogstart> element has the following attributes: The <dialogstart> element has the following attributes:
src: specifies the location of an external dialog document to start. src: specifies the location of an external dialog document to start.
A valid value is a URI (see Section 4.6.9) including A valid value is a URI (see Section 4.6.9). The MS MUST support
authentication information if defined by the URI scheme (e.g. both HTTP ([RFC2616]) and HTTPS ([RFC2818]) schemes and the MS MAY
basic access authentication in HTTP). If the URI scheme is support other schemes. If the URI scheme is unsupported, the MS
unsupported, the MS sends a <response> with a 420 status code sends a <response> with a 420 status code (Section 4.5). If the
(Section 4.5). If the document cannot be retrieved with the document cannot be retrieved with the timeout interval, the MS
timeout interval, the MS sends a <response> with a 409 status sends a <response> with a 409 status code. If the document
code. If the document contains a type of dialog language which contains a type of dialog language which the MS does not
the MS does not supported, the MS sends a <response> with a 421 supported, the MS sends a <response> with a 421 status code. The
status code. The attribute is optional. There is no default attribute is optional. There is no default value.
value.
type: specifies the type of the external dialog document indicated type: specifies the type of the external dialog document indicated
in the 'src' attribute. A valid value is a MIME media type (see in the 'src' attribute. A valid value is a MIME media type (see
Section 4.6.10). If the URI scheme used in the src attribute Section 4.6.10). If the URI scheme used in the src attribute
defines a mechanism for establishing the authoratitive MIME media defines a mechanism for establishing the authoratitive MIME media
type of the media resource, the value returned by that mechanism type of the media resource, the value returned by that mechanism
takes precedence over this attribute. The attribute is optional. takes precedence over this attribute. The attribute is optional.
There is no default value. There is no default value.
maxage: Used to set the max-age value of the Cache-Control header in maxage: Used to set the max-age value of the Cache-Control header in
skipping to change at page 25, line 19 skipping to change at page 25, line 19
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="connection1"> <dialogstart connectionid="connection1">
<dialog> <dialog>
<prompt> <prompt>
<media loc="http://www.example.com/getpin.wav"/> <media loc="http://www.example.com/getpin.wav"/>
</prompt> </prompt>
<collect maxdigits="2"/> <collect maxdigits="2"/>
</dialog> </dialog>
<subscribe> <subscribe>
<dmtfsub matchmode="all"/> <dtmfsub matchmode="all"/>
</subscribe> </subscribe>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
In this example, the dialog is started on a conference where the In this example, the dialog is started on a conference where the
conference only receives an audio media stream from the dialog: conference only receives an audio media stream from the dialog:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart conferenceid="conference1"> <dialogstart conferenceid="conference1">
<dialog> <dialog>
<record maxtime="384000s"/> <record maxtime="384000s"/>
</dialog> </dialog>
<stream media="audio" direction="recvonly"/> <stream media="audio" direction="recvonly"/>
</dialogstart>
</mscivr> </mscivr>
4.2.2.1. <subscribe> 4.2.2.1. <subscribe>
The <subscribe> element allows the AS to subscribe to, and be The <subscribe> element allows the AS to subscribe to, and be
notified of, specific events which occur during execution of the notified of, specific events which occur during execution of the
dialog. Notifications of dialog events are delivered using the dialog. Notifications of dialog events are delivered using the
<event> element (see Section 4.2.5). <event> element (see Section 4.2.5).
The <subscribe> element has no attributes. The <subscribe> element has no attributes.
skipping to change at page 26, line 38 skipping to change at page 26, line 39
For example, the AS wishes to subscribe to DTMF key press matching a For example, the AS wishes to subscribe to DTMF key press matching a
runtime control: runtime control:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart dialogid="d3" connectionid="connection1"> <dialogstart dialogid="d3" connectionid="connection1">
<dialog> <dialog>
<prompt> <prompt>
<media loc="http://www.example.com/getpin.wav"/> <media loc="http://www.example.com/getpin.wav"/>
</prompt> </prompt>
<control ffkey="2" rewkey="3"/> <control ffkey="2" rwkey="3"/>
</dialog> </dialog>
<subscribe> <subscribe>
<dmtfsub matchmode="control"/> <dtmfsub matchmode="control"/>
</subscribe> </subscribe>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
Each time a '2' or '3' DTMF input is received, the MS sends a Each time a '2' or '3' DTMF input is received, the MS sends a
notification event: notification event:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="d3"> <event dialogid="d3">
<dtmfnotify matchmode="collect" dtmf="2" <dtmfnotify matchmode="collect" dtmf="2"
timestamp="2008-05-12T12:13:14Z"/> timestamp="2008-05-12T12:13:14Z"/>
</event> </event>
</mscivr> </mscivr>
4.2.2.2. <stream> 4.2.2.2. <stream>
The <stream> element has the following attributes: The <stream> element has the following attributes:
media: a string indicating the type of media associated with the media: a string indicating the type of media associated with the
stream. The following values MUST be used for common types of stream. A valid value is a MIME type-name as defined in Section
media: "audio" for audio media, and "video" for video media. The 4.2 of [RFC4288]. The following values MUST be used for common
types of media: "audio" for audio media, and "video" for video
media. See IANA ([IANA]) for registered MIME type names. The
attribute is mandatory. attribute is mandatory.
label: a string indicating the SDP label associated with a media label: a string indicating the SDP label associated with a media
stream ([RFC4574]). The attribute is optional. stream ([RFC4574]). The attribute is optional.
direction: a string indicating the direction of the media flow direction: a string indicating the direction of the media flow
relative to the endpoint conference or connection. Defined values relative to the endpoint conference or connection. Defined values
are: "sendrecv" (the endpoint can send media to, and receive media are: "sendrecv" (the endpoint can send media to, and receive media
from, the dialog), "sendonly" (the endpoint can only send media to from, the dialog), "sendonly" (the endpoint can only send media to
the dialog), "recvonly" (the endpoint can only receive media from the dialog), "recvonly" (the endpoint can only receive media from
the dialog) and "inactive" (stream is not to be used). The the dialog) and "inactive" (stream is not to be used). The
default value is "sendrecv". The attribute is optional. default value is "sendrecv". The attribute is optional.
The <stream> element has the following sequence of child elements: The <stream> element has the following sequence of child elements:
<region>: an element to specify the region within a mixer video <region>: an element to specify the area within a mixer video layout
layout where a media stream is displayed (Section 4.2.2.2.1). The where a media stream is displayed (Section 4.2.2.2.1). The
element is optional. element is optional.
<priority>: an element to configure priority associated with the <priority>: an element to configure priority associated with the
stream in the conference mix (Section 4.2.2.2.2). The element is stream in the conference mix (Section 4.2.2.2.2). The element is
optional. optional.
If conferenceid is not specified or if the "media" attribute does not If conferenceid is not specified or if the "media" attribute does not
have the value of "video", then the MS ignores the <region> and have the value of "video", then the MS ignores the <region> and
<priority> elements. <priority> elements.
skipping to change at page 28, line 14 skipping to change at page 28, line 14
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="connection1"> <dialogstart connectionid="connection1">
<dialog> <dialog>
<record maxtime="384000s"/> <record maxtime="384000s"/>
</dialog> </dialog>
<stream media="audio" label="camaudio" direction="inactive"/> <stream media="audio" label="camaudio" direction="inactive"/>
<stream media="video" label="camvideo" direction="inactive"/> <stream media="video" label="camvideo" direction="inactive"/>
<stream media="audio" label="useraudio" direction="sendonly"/> <stream media="audio" label="useraudio" direction="sendonly"/>
<stream media="video" label="uservideo" direction="sendonly"/> <stream media="video" label="uservideo" direction="sendonly"/>
</dialogstart>
</mscivr> </mscivr>
Using the <region> element, the dialog can be started on a conference Using the <region> element, the dialog can be started on a conference
mixer so that the video output from the dialog is directed to a mixer so that the video output from the dialog is directed to a
specific region within a video layout. For example: specific area within a video layout. For example:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart conferenceid="conference1"> <dialogstart conferenceid="conference1">
<dialog> <dialog>
<prompt> <prompt>
<media loc="http://www.example.com/presentation.3gp"/> <media loc="http://www.example.com/presentation.3gp"/>
</prompt> </prompt>
</dialog> </dialog>
<stream media="video" direction="recvonly"> <stream media="video" direction="recvonly">
<region>1</region> <region>1</region>
</stream> </stream>
</dialogstart>
</mscivr> </mscivr>
4.2.2.2.1. <region> 4.2.2.2.1. <region>
The <region> element is used to specify the region within a video The <region> element is used to specify a named area within a
layout where a video media stream is displayed. presentation layout where a video media stream is displayed. The MS
could, for example, play video media into an area of a video layout
where the layout and its named regions are specified using the Mixer
Control Package ([I-D.ietf-mediactrl-mixer-control-package]).
The <region> element has no attributes and its content model The <region> element has no attributes and its content model
specifies the name of the region layout. specifies the name of the region.
If the region name is invalid, then the MS reports a 416 status code If the region name is invalid, then the MS reports a 416 status code
(Section 4.5) in the response to the request element containing the (Section 4.5) in the response to the request element containing the
<region> element. <region> element.
4.2.2.2.2. <priority> 4.2.2.2.2. <priority>
The <priority> element is used to explicitly specify the priority of The <priority> element is used to explicitly specify the priority of
the dialog for presentation in a conference mix. the dialog for presentation in a conference mix.
skipping to change at page 30, line 51 skipping to change at page 31, line 10
</mscivr> </mscivr>
In this example a <dialogterminate> request does not specify a In this example a <dialogterminate> request does not specify a
dialogid: dialogid:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogterminate/> <dialogterminate/>
</mscivr> </mscivr>
The response status indicates a 400 (Syntax error) status code and The response status indicates a 400 (Syntax error) status code and
dialogid attribute has an empty string value: the dialogid attribute has an empty string value:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<response status="400" dialogid="" <response status="400" dialogid=" "
reason="Attribute required: dialogid"/> reason="Attribute required: dialogid"/>
</mscivr> </mscivr>
4.2.5. <event> 4.2.5. <event>
When a dialog generates a notification event, the MS sends the event When a dialog generates a notification event, the MS sends the event
using an <event> element. using an <event> element.
The <event> element has the following attributes: The <event> element has the following attributes:
skipping to change at page 32, line 11 skipping to change at page 32, line 16
2 indicates the dialog terminated because the connection or 2 indicates the dialog terminated because the connection or
conference associated with the dialog has terminated. conference associated with the dialog has terminated.
3 indicates the dialog terminated due to exceeding its maximum 3 indicates the dialog terminated due to exceeding its maximum
duration. duration.
4 indicates the dialog terminated due to an execution error. 4 indicates the dialog terminated due to an execution error.
All other valid but undefined values are reserved for future use, All other valid but undefined values are reserved for future use,
where a standards-track RFC is required to define new status where new status codes are assigned using the Standards Action
codes. The AS MUST treat any status code it does not recognize as process defined in [RFC5226]. The AS MUST treat any status code
being equivalent to 4 (dialog execution error). The attribute is it does not recognize as being equivalent to 4 (dialog execution
mandatory. error). The attribute is mandatory.
reason: a textual description which the MS SHOULD use to provide a reason: a textual description which the MS SHOULD use to provide a
reason for the status code; e.g. details about an error. A valid reason for the status code; e.g. details about an error. A valid
value is a string (see Section 4.6.6). The attribute is optional. value is a string (see Section 4.6.6). The attribute is optional.
There is no default value. There is no default value.
The <dialogexit> element has the following sequence of child The <dialogexit> element has the following sequence of child
elements: elements:
<promptinfo>: report information (Section 4.3.2.1) about the prompt <promptinfo>: report information (Section 4.3.2.1) about the prompt
skipping to change at page 32, line 44 skipping to change at page 33, line 6
execution in an IVR <dialog>. The element is optional. execution in an IVR <dialog>. The element is optional.
<params>: reports exit parameters (Section 4.2.6) for a dialog <params>: reports exit parameters (Section 4.2.6) for a dialog
language defined outside this specification. The element is language defined outside this specification. The element is
optional. optional.
For example, an active <dialog> exits normally the MS sends a For example, an active <dialog> exits normally the MS sends a
dialogexit <event> reporting information: dialogexit <event> reporting information:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="d6"/> <event dialogid="d6">
<dialogexit status="1"> <dialogexit status="1">
<collectinfo dtmf="1234" termmode="match"/> <collectinfo dtmf="1234" termmode="match"/>
</dialogexit> </dialogexit>
</event> </event>
</mscivr> </mscivr>
4.2.5.2. <dtmfnotify> 4.2.5.2. <dtmfnotify>
The <dtmfnotify> element provide a notification of DTMF input The <dtmfnotify> element provide a notification of DTMF input
received during the active dialog as requested by a <dtmfsub> received during the active dialog as requested by a <dtmfsub>
skipping to change at page 33, line 35 skipping to change at page 33, line 43
press occurred according to the matchmode. A valid value is a press occurred according to the matchmode. A valid value is a
dateTime expression (Section 4.6.12). The attribute is mandatory. dateTime expression (Section 4.6.12). The attribute is mandatory.
For example, a notification of DTMF input matched during the collect For example, a notification of DTMF input matched during the collect
operation: operation:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="d3"> <event dialogid="d3">
<dtmfnotify matchmode="collect" dtmf="3123" <dtmfnotify matchmode="collect" dtmf="3123"
timestamp="2008-05-12T12:13:14Z"/> timestamp="2008-05-12T12:13:14Z"/>
/event> </event>
</mscivr> </mscivr>
4.2.6. <params> 4.2.6. <params>
The <params> element is a container for <param> elements The <params> element is a container for <param> elements
(Section 4.2.6.1). (Section 4.2.6.1).
The <params> element has no attributes, but the following child The <params> element has no attributes, but the following child
elements are defined (0 or more): elements are defined (0 or more):
skipping to change at page 34, line 30 skipping to change at page 34, line 35
The <param> element has the following attributes: The <param> element has the following attributes:
name: a string indicating the name of the parameter. The attribute name: a string indicating the name of the parameter. The attribute
is mandatory. is mandatory.
type: specifies a type indicating how the inline value of the type: specifies a type indicating how the inline value of the
parameter is to be interpreted. A valid value is a MIME media parameter is to be interpreted. A valid value is a MIME media
type (see Section 4.6.10). The attribute is optional. The type (see Section 4.6.10). The attribute is optional. The
default value is "text/plain". default value is "text/plain".
The <param> element content model (text and/or XML) is the value of encoding: specifies a content-transfer-encoding schema applied to
the parameter. Values in XML format MUST use a namespace other than the inline value of the parameter on top of the MIME media type
the one used in this specification. Note that a text value which specified with the type attribute. A valid value is a content-
contains XML characters (e.g. "<") needs to be escaped following transfer-encoding schema as defined by the "mechanism" token in
standard XML conventions. Section 6.1 of [RFC2045]. The attribute is optional. There is no
default value.
The <param> element content model is the value of the parameter.
Note that a value which contains XML characters (e.g. "<") needs to
be escaped following standard XML conventions.
For example, usage with a dialog language defined outside this For example, usage with a dialog language defined outside this
specification to receive parameters from the dialog when it exits: specification to receive parameters from the dialog when it exits:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="d6"/> <event dialogid="d6">
<dialogexit status="1"> <dialogexit status="1">
<params> <params>
<param name="mode">recording</param> <param name="mode">recording</param>
<param name="recording1" type="audio/x-wav"> <param name="recording1" type="audio/x-wav" encoding="base64">
<![CDATA[
<![CDATA[
R0lGODlhZABqALMAAFrMYr/BvlKOVJKOg2xZUKmenMfDw8tgWJpV R0lGODlhZABqALMAAFrMYr/BvlKOVJKOg2xZUKmenMfDw8tgWJpV
]]> ]]>
</param> </param>
</params> </params>
</dialogexit> </dialogexit>
</event> </event>
</mscivr> </mscivr>
4.3. IVR Dialog Elements 4.3. IVR Dialog Elements
This section describes the IVR dialog language defined as part of This section describes the IVR dialog language defined as part of
this specification. The MS MUST support this dialog language. this specification. The MS MUST support this dialog language.
skipping to change at page 40, line 40 skipping to change at page 40, line 35
its execution status to the dialog container (see Section 4.3) its execution status to the dialog container (see Section 4.3)
with a <promptinfo> (see Section 4.3.2.1) where the termmode with a <promptinfo> (see Section 4.3.2.1) where the termmode
attribute is set to completed and any additional information is attribute is set to completed and any additional information is
set. set.
4.3.1.1.1. <variable> 4.3.1.1.1. <variable>
The <variable> element specifies variable announcements using The <variable> element specifies variable announcements using
predefined media resources. Each variable has at least a type (e.g. 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 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 to the prompt variable type (e.g. 2008-02-25 is rendered as the date
defined attributes. The precise mechanism for generating variable 25th February 2008). The precise mechanism for generating variable
announcements (including the location of associated media resources) announcements (including the location of associated media resources)
is implementation specific. is implementation specific.
A <variable> element has the following attributes: A <variable> element has the following attributes:
value: specifies the string to be rendered. A valid value is a type: specifies the type of prompt variable to render. This
string (see Section 4.6.6). The attribute is mandatory. specification defines three values - date (Section 4.3.1.1.1.1),
time (Section 4.3.1.1.1.2) and digits (Section 4.3.1.1.1.3). All
other valid but undefined values are reserved for future use,
where new values are assigned as described in Section 8.5. A
valid value is a string (see Section 4.6.6). The attribute is
mandatory.
type: specifies the type to use for rendering. A valid value is a value: specifies a string to be rendered according to the prompt
string (see Section 4.6.6). The attribute is mandatory. variable type. A valid value is a string (see Section 4.6.6).
The attribute is mandatory.
format: specifies format information to use in conjunction with the format: specifies format information which the prompt variable type
type for the rendering. A valid value is a string (see uses to render the value attribute. A valid value is a string
Section 4.6.6). The attribute is optional. There is no default (see Section 4.6.6). The attribute is optional. There is no
value. default value.
gender: specifies the gender to use when rendering the variable. gender: specifies the gender which the prompt variable type uses to
Valid values are "male" or "female". The attribute is optional. render the value attribute. Valid values are "male" or "female".
There is no default value. The attribute is optional. There is no default value.
xml:lang: specifies the language to use when rendering the variable. xml:lang: specifies the language which the prompt variable type uses
A valid value is a language identifier (see Section 4.6.11). The to render the value attribute. A valid value is a language
attribute is optional. There is no default value. identifier (see Section 4.6.11). The attribute is optional.
There is no default value.
The <variable> element has no children. The <variable> element has no children.
This package is agnostic to which <variable> values, types and
formats are supported by an implementation. If a <variable> element
configuration specified in a request is not supported by the MS, the
MS sends a <response> with a 425 status code (Section 4.5).
For example, the MS could support <variable> type/format combinations
such as:
type=date Supported formats: "mdy" (month day year), "ymd" (year
month day), "dym" (day month year), "dm" (day month). The value
attribute has the format YYYY-MM-DD (4 digit year, 2 digit month,
2 digit day).
type=time Supported formats: "t12" (12 hour format with am/pm),
"t24" (24 hour format). The value attribute has the format HH:MM
(2 digit hours, 2 digit minutes).
type=digits Supported formats: "gen" (general digit string), "crn"
(cardinal), "ord" (ordinal). The value attribute has the format
of "D+" (one or more digits).
This specification is agnostic to the type and codec of media This specification is agnostic to the type and codec of media
resources into which variable are rendered as well as the rendering resources into which variable are rendered as well as the rendering
mechanism itself. For example, an MS implementation supporting audio mechanism itself. For example, an MS implementation supporting audio
rendering could map the <variable> into one or more audio media rendering could map the <variable> into one or more audio media
resources. resources.
Depending on the specific implementation of the <variable> rendering This package is agnostic to which <variable> types are supported by
on the MS, execution of this element can be seen as conversion of a an implementation. If a <variable> element configuration specified
<variable> into a list of <media> elements. For example, in a request is not supported by the MS, the MS sends a <response>
<variable value="2008-02-25" type="date" format="dmy" with a 425 status code (Section 4.5).
4.3.1.1.1.1. Date type
The date variable type provides a mechanism for dynamically rendering
a date prompt.
The <variable> type attribute MUST have the value "date".
The <variable> format attribute MUST be one of the following values
and comply with its rendering of the value attribute:
mdy indicating that the <variable> value attribute is to be rendered
as sequence composed of month, then day, then year.
ymd indicating that the <variable> value attribute is to be rendered
as sequence composed of year, then month, then day.
dym indicating that the <variable> value attribute is to be rendered
as sequence composed of day, then year, then month.
dm indicating that the <variable> value attribute is to be rendered
as sequence composed of day then month.
The <variable> value attribute MUST comply with a lexical
representation of date where
yyyy '-' mm '-' dd
as defined in Section 3.2.9 of [XMLSchema:Part2].
For example,
<variable type="date" format="dmy" value="2010-11-25"
xml:lang="en" gender="male"/> xml:lang="en" gender="male"/>
could be transformed into audio saying "twenty-fifth of February two describe a variable date prompt where the date can be rendered in
thousand and eight" using a list of <media> resources: audio as "twenty-fifth of November two thousand and ten" using a list
of <media> resources:
<media loc="nfs://voicebase/en/male/25th.wav"/> <media loc="nfs://voicebase/en/male/25th.wav"/>
<media loc="nfs://voicebase/en/male/of.wav"/> <media loc="nfs://voicebase/en/male/of.wav"/>
<media loc="nfs://voicebase/en/male/february.wav"/> <media loc="nfs://voicebase/en/male/november.wav"/>
<media loc="nfs://voicebase/en/male/2000.wav"/> <media loc="nfs://voicebase/en/male/2000.wav"/>
<media loc="nfs://voicebase/en/male/and.wav"/> <media loc="nfs://voicebase/en/male/and.wav"/>
<media loc="nfs://voicebase/en/male/8.wav"/> <media loc="nfs://voicebase/en/male/10.wav"/>
4.3.1.1.1.2. Time type
The time variable type provides a mechanism for dynamically rendering
a time prompt.
The <variable> type attribute MUST have the value "time".
The <variable> format attribute MUST be one of the following values
and comply with its rendering of the value attribute:
t12 indicating that the <variable> value attribute is to be rendered
as a time in traditional 12 hour format using am or pm (for
example, "twenty five minutes past 2 pm" for "14:25").
t24 indicating that the <variable> value attribute is to be rendered
as a time in 24 hour format (for example, "fourteen twenty five"
for "14:25").
The <variable> value attribute MUST comply with a lexical
representation of time where
hh ':' mm ( ':' ss )?
as defined in Section 3.2.8 of [XMLSchema:Part2].
4.3.1.1.1.3. Digits type
The digits variable type provides a mechanism for dynamically
rendering a digit sequence.
The <variable> type attribute MUST have the value "digits".
The <variable> format attribute MUST be one of the following values
and comply with its rendering of the value attribute:
gen indicating that the <variable> value attribute is to be rendered
as a general digit string (for example, "one two three" for
"123").
crn indicating that the <variable> value attribute is to be rendered
as a cardinal number (for example, "one hundred and twenty three"
for "123").
ord indicating that the <variable> value attribute is to be rendered
as an ordinal number (for example, "one hundred and twenty third"
for "123").
The <variable> value attribute MUST comply with the lexical
representation
d+
i.e. one or more digits.
4.3.1.1.2. <dtmf> 4.3.1.1.2. <dtmf>
The <dtmf> element specifies a sequence of DTMF tones for output. The <dtmf> element specifies a sequence of DTMF tones for output.
DTMF tones could be generated using <media> resources where the DTMF tones could be generated using <media> resources where the
output is transported as RTP audio packets. However, <media> output is transported as RTP audio packets. However, <media>
resources are not sufficient for cases where DTMF tones are to be resources are not sufficient for cases where DTMF tones are to be
transported as DTMF RTP ([RFC4733]) or in event packages. transported as DTMF RTP ([RFC4733]) or in event packages.
skipping to change at page 43, line 46 skipping to change at page 45, line 21
The MS is responsible for assigning the appropriate media The MS is responsible for assigning the appropriate media
stream(s) when more than one is available. The element is stream(s) when more than one is available. The element is
optional. optional.
<variable>: specifies a variable media announcement (see <variable>: specifies a variable media announcement (see
Section 4.3.1.1.1) to play. The element is optional. Section 4.3.1.1.1) to play. The element is optional.
<dtmf>: generates one or more DTMF tones (see Section 4.3.1.1.2) to <dtmf>: generates one or more DTMF tones (see Section 4.3.1.1.2) to
play. The element is optional. play. The element is optional.
If a <par> element configuration is not supported, the MS sends a It is RECOMMENDED that a <par> element contains only one <media>
<response> with a 435 status code (Section 4.5). element of the same media type (i.e. same type-name as defined in
Section 4.6.10). If a <par> element configuration is not supported,
the MS sends a <response> with a 435 status code (Section 4.5).
Runtime <control>s (Section 4.3.1.2) apply to each child element Runtime <control>s (Section 4.3.1.2) apply to each child element
playing parallel. For example, pause and resume controls cause all playing parallel. For example, pause and resume controls cause all
child elements to be paused and resumed respectively. child elements to be paused and resumed respectively.
If the <par> element is stopped by the prompt container (e.g. bargein If the <par> element is stopped by the prompt container (e.g. bargein
or dialog termination), then playback of all child elements is or dialog termination), then playback of all child elements is
stopped. The playback duration (Section 4.3.2.1) reported for the stopped. The playback duration (Section 4.3.2.1) reported for the
<par> element is the duration of parallel playback, not the <par> element is the duration of parallel playback, not the
cumulative duration of each child element played in parallel. cumulative duration of each child element played in parallel.
skipping to change at page 44, line 21 skipping to change at page 45, line 46
For example, a request to playback audio and video media in parallel: For example, a request to playback audio and video media in parallel:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="c1"> <dialogstart connectionid="c1">
<dialog> <dialog>
<prompt> <prompt>
<par> <par>
<media type="audio/x-wav" <media type="audio/x-wav"
loc="http://www.example.com/media/comments.wav"/> loc="http://www.example.com/media/comments.wav"/>
<media type="video/3gpp;codecs='s263'" <media type="video/3gpp;codecs='s263'"
loc="http://www.example.com/media/camera.3gp"/ loc="http://www.example.com/media/camera.3gp"/>
</par> </par>
</prompt> </prompt>
</dialog> </dialog>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
When the <prompt> element is executed, it begins playback of its When the <prompt> element is executed, it begins playback of its
child element in document order sequence. In this case, there is child element in document order sequence. In this case, there is
only one child element, a <par> element itself containing audio and only one child element, a <par> element itself containing audio and
video <media> child element. Consequently playback of both audio and video <media> child element. Consequently playback of both audio and
video media resources is initiated at the same time. Since the video media resources is initiated at the same time. Since the
endsync attribute is not specified, the default value "last" applies. endsync attribute is not specified, the default value "last" applies.
The <par> element playback is complete when the media resource with The <par> element playback is complete when the media resource with
the longest duration is complete. the longest duration is complete.
4.3.1.1.3.1. <seq> 4.3.1.1.3.1. <seq>
skipping to change at page 45, line 38 skipping to change at page 47, line 21
<media type="audio/x-wav" <media type="audio/x-wav"
loc="http://www.example.com/media/date.wav"/> loc="http://www.example.com/media/date.wav"/>
<media type="audio/x-wav" <media type="audio/x-wav"
loc="http://www.example.com/media/intro.wav"/> loc="http://www.example.com/media/intro.wav"/>
<media type="audio/x-wav" <media type="audio/x-wav"
loc="http://www.example.com/media/main.wav"/> loc="http://www.example.com/media/main.wav"/>
<media type="audio/x-wav" <media type="audio/x-wav"
loc="http://www.example.com/media/end.wav"/> loc="http://www.example.com/media/end.wav"/>
</seq> </seq>
<media type="video/3gpp;codecs='s263'" <media type="video/3gpp;codecs='s263'"
loc="rtsp://www.example.com/media/camera.3gp"/ loc="rtsp://www.example.com/media/camera.3gp"/>
</par> </par>
</prompt> </prompt>
</dialog> </dialog>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
When the <prompt> element is executed, it begins playback of the When the <prompt> element is executed, it begins playback of the
<par> element containing a <seq> element and a video <media> element. <par> element containing a <seq> element and a video <media> element.
The <seq> element itself contains a sequence of audio <media> The <seq> element itself contains a sequence of audio <media>
elements. Consequently playback of the video media resource is elements. Consequently playback of the video media resource is
skipping to change at page 51, line 34 skipping to change at page 53, line 15
4.3.1.3.1. <grammar> 4.3.1.3.1. <grammar>
The <grammar> element allows a custom grammar, inline or external, to The <grammar> element allows a custom grammar, inline or external, to
be specified. Custom grammars permit the full range of DTMF be specified. Custom grammars permit the full range of DTMF
characters including '*' and '#' to be specified for DTMF pattern characters including '*' and '#' to be specified for DTMF pattern
matching. matching.
The <grammar> element has the following attributes: The <grammar> element has the following attributes:
src: specifies the location of an external grammar document. A src: specifies the location of an external grammar document. A
valid value is a URI (see Section 4.6.9) including authentication valid value is a URI (see Section 4.6.9). The MS MUST support
information if defined by the URI scheme (e.g. basic access both HTTP ([RFC2616]) and HTTPS ([RFC2818]) schemes and the MS MAY
authentication in HTTP). If the URI scheme is unsupported, the MS support other schemes. If the URI scheme is unsupported, the MS
sends a <response> with a 420 status code (Section 4.5). If the sends a <response> with a 420 status code (Section 4.5). If the
resource cannot be retrieved within the timeout interval, the MS resource cannot be retrieved within the timeout interval, the MS
sends a <response> with a 409 status code. If the grammar format sends a <response> with a 409 status code. If the grammar format
is not supported, the MS sends a <response> with a 424 status is not supported, the MS sends a <response> with a 424 status
code. The attribute is optional. There is no default value. code. The attribute is optional. There is no default value.
type: identifies the preferred type of the grammar document type: identifies the preferred type of the grammar document
identified by the src attribute. A valid value is a MIME media identified by the src attribute. A valid value is a MIME media
type (see Section 4.6.10). If the URI scheme used in the src type (see Section 4.6.10). If the URI scheme used in the src
attribute defines a mechanism for establishing the authoratitive attribute defines a mechanism for establishing the authoratitive
skipping to change at page 55, line 5 skipping to change at page 56, line 5
itself. This parameter is ignored if the vadfinal attribute has itself. This parameter is ignored if the vadfinal attribute has
the value false. A valid value is a Time Designation (see the value false. A valid value is a Time Designation (see
Section 4.6.7). The attribute is optional. The default value is Section 4.6.7). The attribute is optional. The default value is
5s. 5s.
append: indicates whether recorded data is appended or not to a append: indicates whether recorded data is appended or not to a
recording location if a resource already exists. A valid value is recording location if a resource already exists. A valid value is
a boolean (see Section 4.6.1). A value of true indicates that a boolean (see Section 4.6.1). A value of true indicates that
recorded data is appended to the existing resource at a recording recorded data is appended to the existing resource at a recording
location. A value of false indicates that recorded data is to location. A value of false indicates that recorded data is to
overwrite the existing resource. The attribute is optional. The overwrite the existing resource. The mapping of the append
default value is false. operation onto the upload protocol scheme is implementation-
specific. The attribute is optional. The default value is false.
If either the vadinitial or vadfinal attribute is set to true and the If either the vadinitial or vadfinal attribute is set to true and the
MS does not support VAD, the MS sends a <response> with a 434 status MS does not support VAD, the MS sends a <response> with a 434 status
code (Section 4.5). code (Section 4.5).
The <record> element has the following child element (0 or more The <record> element has the following child element (0 or more
occurrences): occurrences):
<media>: specifies the location and type of the media resource for <media>: specifies the location and type of the media resource for
uploading recorded data (see Section 4.3.1.5). The MS uploads uploading recorded data (see Section 4.3.1.5). The MS MUST
recorded data to this resource as soon as possible after recording support both HTTP ([RFC2616]) and HTTPS ([RFC2818]) schemes for
is complete. The element is optional. uploading recorded data and the MS MAY support other schemes. The
MS uploads recorded data to this resource as soon as possible
after recording is complete. The element is optional.
If multiple <media> elements are specified, then media input is to be If multiple <media> elements are specified, then media input is to be
recorded in parallel to multiple resource locations. recorded in parallel to multiple resource locations.
If no <media> child element is specified, the MS MUST provide a If no <media> child element is specified, the MS MUST record media
recording location where the recording format is implementation- input but the recording location and the recording format are
specific. The recording location and format are reported in implementation-specific (e.g. the MS records audio in the WAV format
<recordinfo> (Section 4.3.2.4) when the dialog terminates. The to a local disk accessible by HTTP). The recording location and
recording MUST be available from this location until the connection format are reported in <recordinfo> (Section 4.3.2.4) when the dialog
or conference associated with the dialog on the MS terminates. terminates. The recording MUST be available from this location until
the connection or conference associated with the dialog on the MS
terminates.
If the MS does not support the configuration required for recording If the MS does not support the configuration required for recording
from the input media streams to one or more <media> elements and a from the input media streams to one or more <media> elements and a
more specific error code is not defined for its child elements, the more specific error code is not defined for its child elements, the
MS sends a <response> with a 423 status code (Section 4.5). MS sends a <response> with a 423 status code (Section 4.5).
Note that an MS MAY support uploading recorded data to recording Note that an MS MAY support uploading recorded data to recording
locations at the same time the recording operation takes place. Such locations at the same time the recording operation takes place. Such
implementations need to be aware of the requirements of certain implementations need to be aware of the requirements of certain
recording formats (e.g. WAV) for metadata at the beginning of the recording formats (e.g. WAV) for metadata at the beginning of the
skipping to change at page 57, line 34 skipping to change at page 58, line 39
4.3.1.5. <media> 4.3.1.5. <media>
The <media> element specifies a media resource to playback from (see The <media> element specifies a media resource to playback from (see
Section 4.3.1.1) or record to (see Section 4.3.1.4). In the playback Section 4.3.1.1) or record to (see Section 4.3.1.4). In the playback
case, the resource is retrieved and in the recording case, recording case, the resource is retrieved and in the recording case, recording
data is uploaded to the resource location. data is uploaded to the resource location.
A <media> element has the following attributes: A <media> element has the following attributes:
loc: specifies the location of the media resource. A valid value is loc: specifies the location of the media resource. A valid value is
a URI (see Section 4.6.9) including authentication information if a URI (see Section 4.6.9). The MS MUST support both HTTP
defined by the URI scheme (e.g. basic access authentication in ([RFC2616]) and HTTPS ([RFC2818]) schemes and the MS MAY support
HTTP). If the URI scheme is not supported by the MS, the MS sends other schemes. If the URI scheme is not supported by the MS, the
a <response> with a 420 status code (Section 4.5). If the MS sends a <response> with a 420 status code (Section 4.5). If
resource is to be retrieved but the MS cannot retrieve it within the resource is to be retrieved but the MS cannot retrieve it
the timeout interval, the MS sends a <response> with a 409 status within the timeout interval, the MS sends a <response> with a 409
code. If the format of the media resource is not supported, the status code. If the format of the media resource is not
MS sends a <response> with a 429 status code. The attribute is supported, the MS sends a <response> with a 429 status code. The
mandatory. attribute is mandatory.
type: specifies the type of the media resource indicated in the loc type: specifies the type of the media resource indicated in the loc
attribute. A valid value is a MIME media type (see attribute. A valid value is a MIME media type (see
Section 4.6.10) which, depending on its definition, can include Section 4.6.10) which, depending on its definition, can include
additional parameters (e.g. [RFC4281]). If the URI scheme used additional parameters (e.g. [RFC4281]). If the URI scheme used
in the loc attribute defines a mechanism for establishing the in the loc attribute defines a mechanism for establishing the
authoratitive MIME media type of the media resource, the value authoratitive MIME media type of the media resource, the value
returned by that mechanism takes precedence over this attribute. returned by that mechanism takes precedence over this attribute.
If additional media parameters are specified, the MS MUST use them If additional media parameters are specified, the MS MUST use them
to determine media processing. For example, [RFC4281] defines a to determine media processing. For example, [RFC4281] defines a
skipping to change at page 63, line 44 skipping to change at page 65, line 4
<prompttypes> <prompttypes>
<mimetype>audio/x-wav</mimetype> <mimetype>audio/x-wav</mimetype>
<mimetype>video/3gpp</mimetype> <mimetype>video/3gpp</mimetype>
</prompttypes> </prompttypes>
<variables> <variables>
<variabletype type="date" desc="value formatted as YYYYMMDD"> <variabletype type="date" desc="value formatted as YYYYMMDD">
<format desc="month year day">mdy</format> <format desc="month year day">mdy</format>
<format desc="year month day">ymd</format> <format desc="year month day">ymd</format>
<format desc="day month year">dmy</format> <format desc="day month year">dmy</format>
<format desc="day month">dm</format> <format desc="day month">dm</format>
</variabletype> </variabletype>
</variables> </variables>
<maxpreparedduration>600s</maxpreparedduration> <maxpreparedduration>600s</maxpreparedduration>
<maxrecordduration>1800s</maxrecordduration> <maxrecordduration>1800s</maxrecordduration>
<codecs> <codecs>
<codec> <codec name="video">
<subtype>H.263</subtype> <subtype>H263</subtype>
</codec> </codec>
<codec> <codec name="video">
<subtype>H.264</subtype> <subtype>H264</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>PCMU</subtype> <subtype>PCMU</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>PCMA</subtype> <subtype>PCMA</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>telephone-event</subtype> <subtype>telephone-event</subtype>
</codec> </codec>
</codecs> </codecs>
</capabilities> </capabilities>
<dialogs> <dialogs>
<dialogaudit dialogid="4532" state="preparing"/> <dialogaudit dialogid="4532" state="preparing"/>
<dialogaudit dialogid="4599" state="prepared"/> <dialogaudit dialogid="4599" state="prepared"/>
<dialogaudit dialogid="1234" state="started" conferenceid="conf1"> <dialogaudit dialogid="1234" state="started" conferenceid="conf1">
<codecs> <codecs>
<codec> <codec name="audio">
<subtype>PCMA</subtype> <subtype>PCMA</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>telephone-event</subtype> <subtype>telephone-event</subtype>
</codec> </codec>
</codecs> </codecs>
</dialogaudit> </dialogaudit>
</dialogs> </dialogs>
</auditresponse> </auditresponse>
</mscivr> </mscivr>
4.4.2.1. <codecs> 4.4.2.1. <codecs>
skipping to change at page 65, line 6 skipping to change at page 66, line 11
The <codecs> element has the following sequence of child elements (0 The <codecs> element has the following sequence of child elements (0
or more occurrences): or more occurrences):
<codec>: audit information for a codec (Section 4.4.2.1.1). The <codec>: audit information for a codec (Section 4.4.2.1.1). The
element is optional. element is optional.
For example, a fragment describing two codecs: For example, a fragment describing two codecs:
<codecs> <codecs>
<codec> <codec name="audio">
<subtype>PCMA</subtype> <subtype>PCMA</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>telephone-event</subtype> <subtype>telephone-event</subtype>
</codec> </codec>
</codecs> </codecs>
4.4.2.1.1. <codec> 4.4.2.1.1. <codec>
The <codec> element describes a codec on the MS. The element is The <codec> element describes a codec on the MS. The element is
modeled on the <codec> element in the XCON conference information modeled on the <codec> element in the XCON conference information
data model ([I-D.ietf-xcon-common-data-model]) but allows addition data model ([I-D.ietf-xcon-common-data-model]) but allows addition
information (e.g. rate, speed, etc) to be specified. information (e.g. rate, speed, etc) to be specified.
The <codec> element has no attributes. The <codec> element has the following attributes:
name: indicates the type name of the codec's media format as defined
in IANA ([IANA]). A valid value is a "type-name" as defined in
Section 4.2 of [RFC4288]. The attribute is manadatory.
The <codec> element has the following sequence of child elements: The <codec> element has the following sequence of child elements:
<subtype>: element describing the codec's name. The possible values <subtype>: element whose content model describes the subtype of the
of this element are the values of the 'subtype' column of the RTP codec's media format as defined in IANA ([IANA]). A valid value
Payload Format media types per [RFC4855] defined in IANA ([IANA]). is a "subtype-name" as defined in Section 4.2 of [RFC4288]. The
The element is mandatory. element is mandatory.
<params>: element (Section 4.2.6) describing additional information <params>: element (Section 4.2.6) describing additional information
about the codec. This package is agnostic to the names and values about the codec. This package is agnostic to the names and values
of the codec parameters supported by an implementation. The of the codec parameters supported by an implementation. The
element is optional. element is optional.
For example, a fragment with a <codec> element describing the H.263 For example, a fragment with a <codec> element describing the H263
codec: video codec:
<codec> <codec name="video">
<subtype>H.263</subtype> <subtype>H263</subtype>
</codec> </codec>
4.4.2.2. <capabilities> 4.4.2.2. <capabilities>
The <capabilities> element provides audit information about package The <capabilities> element provides audit information about package
capabilities. capabilities.
The <capabilities> element has no attributes. The <capabilities> element has no attributes.
The <capabilities> element has the following sequence of child The <capabilities> element has the following sequence of child
skipping to change at page 67, line 22 skipping to change at page 68, line 22
<mimetype>video/3gpp</mimetype> <mimetype>video/3gpp</mimetype>
</recordtypes> </recordtypes>
<prompttypes> <prompttypes>
<mimetype>audio/x-wav</mimetype> <mimetype>audio/x-wav</mimetype>
<mimetype>video/3gpp</mimetype> <mimetype>video/3gpp</mimetype>
</prompttypes> </prompttypes>
<variables/> <variables/>
<maxpreparedduration>30s</maxpreparedduration> <maxpreparedduration>30s</maxpreparedduration>
<maxrecordduration>60s</maxrecordduration> <maxrecordduration>60s</maxrecordduration>
<codecs> <codecs>
<codec> <codec name="video">
<subtype>H.263</subtype> <subtype>H263</subtype>
</codec> </codec>
<codec> <codec name="video">
<subtype>H.264</subtype> <subtype>H264</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>PCMU</subtype> <subtype>PCMU</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>PCMA</subtype> <subtype>PCMA</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>telephone-event</subtype> <subtype>telephone-event</subtype>
</codec> </codec>
</codecs> </codecs>
</capabilities> </capabilities>
4.4.2.2.1. <dialoglanguages> 4.4.2.2.1. <dialoglanguages>
The <dialoglanguages> element provides information about additional The <dialoglanguages> element provides information about additional
dialog languages supported by the package. Dialog languages are dialog languages supported by the package. Dialog languages are
identified by their associated MIME media types. The MS MUST NOT identified by their associated MIME media types. The MS MUST NOT
skipping to change at page 69, line 8 skipping to change at page 70, line 8
The <prompttypes> element has the following sequence of child The <prompttypes> element has the following sequence of child
elements (0 or more occurrences): elements (0 or more occurrences):
<mimetype>: element whose content model describes a mime type <mimetype>: element whose content model describes a mime type
(Section 4.6.10). The element is optional. (Section 4.6.10). The element is optional.
4.4.2.2.5. <variables> 4.4.2.2.5. <variables>
The <variables> element provides information about types and formats The <variables> element provides information about types and formats
for the <variable> element (Section 4.4.2.2.5) supported by the for the <variable> element (Section 4.3.1.1.1) supported by the
package. package.
The <variables> element has no attributes. The <variables> element has no attributes.
The <variables> element has the following sequence of child elements The <variables> element has the following sequence of child elements
(0 or more occurrences): (0 or more occurrences):
<variabletype>: element describing the formats support for a given <variabletype>: element describing the formats support for a given
type (Section 4.4.2.2.5.1). The element is optional. type (Section 4.4.2.2.5.1). The element is optional.
For example, a fragment describing support for <variable> with a For example, a fragment describing support for <variable> with a
"date" type in some common formats. "date" type according to the formats specified in
Section 4.3.1.1.1.1.
<variables> <variables>
<variabletype type="date" desc="value formatted as YYYYMMDD"> <variabletype type="date" desc="value formatted as YYYYMMDD">
<format desc="month year day">mdy</format> <format desc="month year day">mdy</format>
<format desc="year month day">ymd</format> <format desc="year month day">ymd</format>
<format desc="day month year">dmy</format> <format desc="day month year">dmy</format>
<format desc="day month">dm</format> <format desc="day month">dm</format>
</variabletype> </variabletype>
</variables> </variables>
4.4.2.2.5.1. <variabletype> 4.4.2.2.5.1. <variabletype>
The <variabletype> element describes the formats supported for The <variabletype> element describes the formats supported for
<variable> supported type. <variable> supported type.
The <variabletype> element has the following attributes: The <variabletype> element has the following attributes:
type: indicates a supported value associated with the type attribute type: indicates a supported value associated with the type attribute
of <variable> element.The attribute is manadatory. of <variable> element. The attribute is manadatory.
desc: a string providing some textual description of the type and desc: a string providing some textual description of the type and
format. The attribute is optional. format. The attribute is optional.
The <variabletype> element has the following sequence of child The <variabletype> element has the following sequence of child
elements (0 or more occurrences): elements (0 or more occurrences):
<format>: element with a desc attribute (optional description) and a <format>: element with a desc attribute (optional description) and a
content model describing a supported format in the <variable> content model describing a supported format in the <variable>
format attribute. The element is optional. format attribute. The element is optional.
skipping to change at page 71, line 21 skipping to change at page 72, line 21
dialog (see Section 16.1 of dialog (see Section 16.1 of
[I-D.ietf-mediactrl-sip-control-framework]). The attribute is [I-D.ietf-mediactrl-sip-control-framework]). The attribute is
optional. There is no default value. optional. There is no default value.
The <dialogaudit> element has the following child element: The <dialogaudit> element has the following child element:
<codecs> element describing codecs used in the dialog. See <codecs> element describing codecs used in the dialog. See
Section 4.4.2.1. The element is optional. Section 4.4.2.1. The element is optional.
For example, a fragment describing a started dialog which is using For example, a fragment describing a started dialog which is using
PCMU and telephony-event codecs: PCMU and telephony-event audio codecs:
<dialogaudit dialogid="1234" state="started" conferenceid="conf1"> <dialogaudit dialogid="1234" state="started" conferenceid="conf1">
<codecs> <codecs>
<codec> <codec name="audio">
<subtype>PCMU</subtype> <subtype>PCMU</subtype>
</codec> </codec>
<codec> <codec name="audio">
<subtype>telephone-event</subtype> <subtype>telephone-event</subtype>
</codec> </codec>
</codecs> </codecs>
</dialogaudit> </dialogaudit>
4.5. Response Status Codes 4.5. Response Status Codes
This section describes the response codes in Table 1 for the status This section describes the response codes in Table 1 for the status
attribute of dialog management <response> (Section 4.2.4) and audit attribute of dialog management <response> (Section 4.2.4) and audit
<auditresponse> (Section 4.4.2) responses. The MS MUST support the <auditresponse> (Section 4.4.2) responses. The MS MUST support the
status response codes defined here. All other valid but undefined status response codes defined here. All other valid but undefined
values are reserved for future use, where a standards-track RFC is values are reserved for future use, where new status codes are
required to define new status codes. The AS MUST treat any responses assigned using the Standards Action process defined in [RFC5226].
it does not recognize as being equivalent to the x00 response code The AS MUST treat any responses it does not recognize as being
for all classes. For example, if an AS receives an unrecognized equivalent to the x00 response code for all classes. For example, if
response code of 499, it can safely assume that there was something an AS receives an unrecognized response code of 499, it can safely
wrong with its request and treat the response as if it had received a assume that there was something wrong with its request and treat the
400 (Syntax error) response code. response as if it had received a 400 (Syntax error) response code.
4xx responses are definite failure responses from a particular MS. 4xx responses are definite failure responses from a particular MS.
The reason attribute in the response SHOULD identify the failure in The reason attribute in the response SHOULD identify the failure in
more detail, for example, "Mandatory attribute missing: src in media more detail, for example, "Mandatory attribute missing: src in media
element" for a 400 (Syntax error) response code. element" for a 400 (Syntax error) response code.
The AS SHOULD NOT retry the same request without modification (for The AS SHOULD NOT retry the same request without modification (for
example, correcting a syntax error or changing the connectionid to example, correcting a syntax error or changing the connectionid to
use one available on the MS). However, the same request to a use one available on the MS). However, the same request to a
different MS might be successful; for example, if another MS supports different MS might be successful; for example, if another MS supports
skipping to change at page 76, line 21 skipping to change at page 77, line 21
| 429 | Unsupported | request contains a | | | 429 | Unsupported | request contains a | |
| | playback | <prompt> element | | | | playback | <prompt> element | |
| | configuration | (Section 4.3.1.1) | | | | configuration | (Section 4.3.1.1) | |
| | | which the MS is | | | | | which the MS is | |
| | | unable to play on the | | | | | unable to play on the | |
| | | available output | | | | | available output | |
| | | media streams | | | | | media streams | |
| | | | | | | | | |
| 430 | Unsupported | request contains a | | | 430 | Unsupported | request contains a | |
| | record | <record> element | | | | record | <record> element | |
| | configuration | (Section 4.3.1.1) | | | | configuration | (Section 4.3.1.4) | |
| | | which the MS is | | | | | which the MS is | |
| | | unable to record with | | | | | unable to record with | |
| | | on the available | | | | | on the available | |
| | | input media streams | | | | | input media streams | |
| | | | | | | | | |
| 431 | Unsupported | the request contains | | | 431 | Unsupported | the request contains | |
| | foreign | attributes or | | | | foreign | attributes or | |
| | namespace | elements from another | | | | namespace | elements from another | |
| | attribute or | namespace which the | | | | attribute or | namespace which the | |
| | element | MS does not support | | | | element | MS does not support | |
skipping to change at page 77, line 32 skipping to change at page 78, line 32
Table 1: status codes Table 1: status codes
4.6. Type Definitions 4.6. Type Definitions
This section defines types referenced in attribute and element This section defines types referenced in attribute and element
definitions. definitions.
4.6.1. Boolean 4.6.1. Boolean
The value space of boolean is the set {true, false}. The value space of boolean is the set {true, false, 1, 0} as defined
in Section 3.2.2 of [XMLSchema:Part2]. In accordance with this
definition, the concept of false can be lexically represented by the
strings "0" and "false" and the concept of true by the strings "1"
and "true"; implementations MUST support both styles of lexical
representation.
4.6.2. DTMFChar 4.6.2. DTMFChar
A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6, A DTMF character. The value space is the set {0, 1, 2, 3, 4, 5, 6,
7, 8, 9, #, *, A, B, C, D}. 7, 8, 9, #, *, A, B, C, D}.
4.6.3. DTMFString 4.6.3. DTMFString
A String composed of one or more DTMFChars. A String composed of one or more DTMFChars.
4.6.4. Non-Negative Integer 4.6.4. Non-Negative Integer
The value space of non-negative integer is the infinite set The value space of non-negative integer is the infinite set
{0,1,2,...}. {0,1,2,...} as defined in Section 3.3.20 of [XMLSchema:Part2].
4.6.5. Positive Integer 4.6.5. Positive Integer
The value space of positive integer is the infinite set {1,2,...}. The value space of positive integer is the infinite set {1,2,...} as
defined in Section 3.3.25 of [XMLSchema:Part2].
4.6.6. String 4.6.6. String
A string in the character encoding associated with the XML element. A string in the character encoding associated with the XML element as
defined in Section 3.2.1 of [XMLSchema:Part2].
4.6.7. Time Designation 4.6.7. Time Designation
A time designation consists of a non-negative real number followed by A time designation consists of a non-negative real number followed by
a time unit identifier. a time unit identifier.
The time unit identifiers are: "ms" (milliseconds) and "s" (seconds). The time unit identifiers are: "ms" (milliseconds) and "s" (seconds).
Examples include: "3s", "850ms", "0.7s", ".5s" and "+1.5s". Examples include: "3s", "850ms", "0.7s", ".5s" and "+1.5s".
skipping to change at page 78, line 30 skipping to change at page 79, line 36
A percentage consists of a Positive Integer followed by "%". A percentage consists of a Positive Integer followed by "%".
Examples include: "100%", "500%" and "10%". Examples include: "100%", "500%" and "10%".
4.6.9. URI 4.6.9. URI
Uniform Resource Indicator as defined in [RFC3986]. Uniform Resource Indicator as defined in [RFC3986].
4.6.10. MIME Media Type 4.6.10. MIME Media Type
A string formated as a IANA MIME media type ([MIME.mediatypes]). A string formated as an IANA MIME media type ([MIME.mediatypes]).
The ABNF ([RFC5234]) production for the string is:
type-name "/" subtype-name *(";" parameter-name)
where "type-name" and "subtype-name" are defined in Section 4.2, and
"parameter-name" in Section 4.3, of [RFC4288].
4.6.11. Language Identifier 4.6.11. Language Identifier
A language identifier labels information content as being of a A language identifier labels information content as being of a
particular human language variant. Following the XML specification particular human language variant. Following the XML specification
for language identification [XML], a legal language identifier is for language identification [XML], a legal language identifier is
identified by a RFC566 ([RFC5646]) and RFC4647 ([RFC4647]) code where identified by a RFC5646 ([RFC5646]) and RFC4647 ([RFC4647]) code
the language code is required and a country code or other subtag where the language code is required and a country code or other
identifier is optional. subtag identifier is optional.
4.6.12. DateTime 4.6.12. DateTime
A string formated according to the XML schema definition of a A string formated according to the XML schema definition of a
dateTime type ([XMLSchema:Part2]). dateTime type ([XMLSchema:Part2]).
5. Formal Syntax 5. Formal Syntax
This section defines the XML schema for IVR Control Package. This section defines the XML schema for IVR Control Package. The
schema is normative.
The schema defines datatypes, attributes, dialog management and IVR The schema defines datatypes, attributes, dialog management and IVR
dialog elements in the urn:ietf:params:xml:ns:msc-ivr namespace. In dialog elements in the urn:ietf:params:xml:ns:msc-ivr namespace. In
most elements the order of child elements is significant. The schema most elements the order of child elements is significant. The schema
is extensible: elements allow attributes and child elements from is extensible: elements allow attributes and child elements from
other namespaces. Elements from outside this package's namespace can other namespaces. Elements from outside this package's namespace can
occur after elements defined in this package. occur after elements defined in this package.
The schema is dependent upon the schema (framework.xsd) defined in The schema is dependent upon the schema (framework.xsd) defined in
Section 16.1 of the Control Framework Section 16.1 of the Control Framework
skipping to change at page 79, line 31 skipping to change at page 81, line 32
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr" <xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr"
elementFormDefault="qualified" blockDefault="#all" elementFormDefault="qualified" blockDefault="#all"
xmlns="urn:ietf:params:xml:ns:msc-ivr" xmlns="urn:ietf:params:xml:ns:msc-ivr"
xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes" xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation> <xsd:annotation>
<xsd:documentation> <xsd:documentation>
IETF MediaCtrl IVR 1.0 (20100225) IETF MediaCtrl IVR 1.0 (20101020)
This is the schema of the IETF MediaCtrl IVR control This is the schema of the IETF MediaCtrl IVR control
package. package.
The schema namespace is urn:ietf:params:xml:ns:msc-ivr The schema namespace is urn:ietf:params:xml:ns:msc-ivr
</xsd:documentation> </xsd:documentation>
</xsd:annotation> </xsd:annotation>
<!-- <!--
skipping to change at page 83, line 16 skipping to change at page 85, line 16
<xsd:complexType name="dialogterminateType"> <xsd:complexType name="dialogterminateType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="dialogid" <xsd:attribute name="dialogid"
type="dialogid.datatype" use="required" /> type="dialogid.datatype" use="required" />
<xsd:attribute name="immediate" <xsd:attribute name="immediate"
type="boolean.datatype" default="false" /> type="xsd:boolean" default="false" />
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="dialogterminate" type="dialogterminateType" /> <xsd:element name="dialogterminate" type="dialogterminateType" />
<!-- response --> <!-- response -->
<xsd:complexType name="responseType"> <xsd:complexType name="responseType">
<xsd:complexContent> <xsd:complexContent>
skipping to change at page 89, line 7 skipping to change at page 91, line 7
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="params" type="paramsType" /> <xsd:element name="params" type="paramsType" />
<!-- param --> <!-- param -->
<!-- doesn't extend tCore since its content model is mixed --> <!-- doesn't extend tCore since its content model is mixed -->
<xsd:complexType name="paramType" mixed="true"> <xsd:complexType name="paramType" mixed="true">
<xsd:sequence> <xsd:sequence/>
<xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="type" type="mime.datatype" default="text/plain"/> <xsd:attribute name="type" type="mime.datatype" default="text/plain"/>
<xsd:attribute name="encoding" type="xsd:string"/>
<xsd:anyAttribute namespace="##other" processContents="lax" /> <xsd:anyAttribute namespace="##other" processContents="lax" />
</xsd:complexType> </xsd:complexType>
<xsd:element name="param" type="paramType" /> <xsd:element name="param" type="paramType" />
<!-- stream --> <!-- stream -->
<xsd:complexType name="streamType"> <xsd:complexType name="streamType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
skipping to change at page 90, line 31 skipping to change at page 92, line 28
<xsd:element ref="record" minOccurs="0" <xsd:element ref="record" minOccurs="0"
maxOccurs="1" /> maxOccurs="1" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="repeatCount" <xsd:attribute name="repeatCount"
type="xsd:nonNegativeInteger" default="1" /> type="xsd:nonNegativeInteger" default="1" />
<xsd:attribute name="repeatDur" <xsd:attribute name="repeatDur"
type="timedesignation.datatype" /> type="timedesignation.datatype" />
<xsd:attribute name="repeatUntilComplete" <xsd:attribute name="repeatUntilComplete"
type="boolean.datatype" default="false"/> type="xsd:boolean" default="false"/>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="dialog" type="dialogType" /> <xsd:element name="dialog" type="dialogType" />
<!-- prompt --> <!-- prompt -->
<xsd:complexType name="promptType"> <xsd:complexType name="promptType">
<xsd:complexContent> <xsd:complexContent>
skipping to change at page 91, line 4 skipping to change at page 92, line 47
<xsd:complexType name="promptType"> <xsd:complexType name="promptType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element ref="media" /> <xsd:element ref="media" />
<xsd:element ref="variable" /> <xsd:element ref="variable" />
<xsd:element ref="dtmf" /> <xsd:element ref="dtmf" />
<xsd:element ref="par" /> <xsd:element ref="par" />
<xsd:any namespace="##other" <xsd:any namespace="##other"
processContents="lax" /> processContents="lax" />
</xsd:choice> </xsd:choice>
<xsd:attribute ref="xml:base" /> <xsd:attribute ref="xml:base" />
<xsd:attribute name="bargein" type="boolean.datatype" <xsd:attribute name="bargein" type="xsd:boolean"
default="true" /> default="true" />
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="prompt" type="promptType" /> <xsd:element name="prompt" type="promptType" />
<!-- media --> <!-- media -->
<xsd:complexType name="mediaType"> <xsd:complexType name="mediaType">
skipping to change at page 92, line 48 skipping to change at page 94, line 44
<!-- par --> <!-- par -->
<xsd:complexType name="parType"> <xsd:complexType name="parType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element ref="media" /> <xsd:element ref="media" />
<xsd:element ref="variable" /> <xsd:element ref="variable" />
<xsd:element ref="dtmf" /> <xsd:element ref="dtmf" />
<xsd:element ref="seq" /> <xsd:element ref="seq" />
<xsd:any namespace="##other" <xsd:any namespace="##other"
processContents="lax" /> processContents="lax" />
</xsd:choice> </xsd:choice>
<xsd:attribute name="endsync" type="endsync.datatype"
default="last"/>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="par" type="parType" /> <xsd:element name="par" type="parType" />
<!-- seq --> <!-- seq -->
<xsd:complexType name="seqType"> <xsd:complexType name="seqType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
skipping to change at page 94, line 35 skipping to change at page 96, line 35
<xsd:complexType name="collectType"> <xsd:complexType name="collectType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:element ref="grammar" minOccurs="0" <xsd:element ref="grammar" minOccurs="0"
maxOccurs="1" /> maxOccurs="1" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="cleardigitbuffer" <xsd:attribute name="cleardigitbuffer"
type="boolean.datatype" default="true" /> type="xsd:boolean" default="true" />
<xsd:attribute name="timeout" <xsd:attribute name="timeout"
type="timedesignation.datatype" default="5s" /> type="timedesignation.datatype" default="5s" />
<xsd:attribute name="interdigittimeout" <xsd:attribute name="interdigittimeout"
type="timedesignation.datatype" default="2s" /> type="timedesignation.datatype" default="2s" />
<xsd:attribute name="termtimeout" <xsd:attribute name="termtimeout"
type="timedesignation.datatype" default="0s" /> type="timedesignation.datatype" default="0s" />
<xsd:attribute name="escapekey" <xsd:attribute name="escapekey"
type="dtmfchar.datatype" /> type="dtmfchar.datatype" />
<xsd:attribute name="termchar" <xsd:attribute name="termchar"
type="dtmfchar.datatype" default="#" /> type="dtmfchar.datatype" default="#" />
skipping to change at page 95, line 35 skipping to change at page 97, line 35
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:element ref="media" minOccurs="0" <xsd:element ref="media" minOccurs="0"
maxOccurs="unbounded" /> maxOccurs="unbounded" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="timeout" <xsd:attribute name="timeout"
type="timedesignation.datatype" default="5s" /> type="timedesignation.datatype" default="5s" />
<xsd:attribute name="beep" type="boolean.datatype" <xsd:attribute name="beep" type="xsd:boolean"
default="false" /> default="false" />
<xsd:attribute name="vadinitial" <xsd:attribute name="vadinitial"
type="boolean.datatype" default="false" /> type="xsd:boolean" default="false" />
<xsd:attribute name="vadfinal" <xsd:attribute name="vadfinal"
type="boolean.datatype" default="false" /> type="xsd:boolean" default="false" />
<xsd:attribute name="dtmfterm" <xsd:attribute name="dtmfterm"
type="boolean.datatype" default="true" /> type="xsd:boolean" default="true" />
<xsd:attribute name="maxtime" <xsd:attribute name="maxtime"
type="timedesignation.datatype" default="15s" /> type="timedesignation.datatype" default="15s" />
<xsd:attribute name="finalsilence" <xsd:attribute name="finalsilence"
type="timedesignation.datatype" default="5s" /> type="timedesignation.datatype" default="5s" />
<xsd:attribute name="append" type="boolean.datatype" <xsd:attribute name="append" type="xsd:boolean"
default="false" /> default="false" />
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="record" type="recordType" /> <xsd:element name="record" type="recordType" />
<!-- <!--
##################################################### #####################################################
AUDIT TYPES AUDIT TYPES
skipping to change at page 96, line 24 skipping to change at page 98, line 24
<!-- audit --> <!-- audit -->
<xsd:complexType name="auditType"> <xsd:complexType name="auditType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="capabilities" <xsd:attribute name="capabilities"
type="boolean.datatype" default="true" /> type="xsd:boolean" default="true" />
<xsd:attribute name="dialogs" <xsd:attribute name="dialogs"
type="boolean.datatype" default="true" /> type="xsd:boolean" default="true" />
<xsd:attribute name="dialogid" <xsd:attribute name="dialogid"
type="dialogid.datatype"/> type="dialogid.datatype"/>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="audit" type="auditType" /> <xsd:element name="audit" type="auditType" />
<!-- auditresponse --> <!-- auditresponse -->
skipping to change at page 97, line 24 skipping to change at page 99, line 24
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:element ref="subtype" minOccurs="1" <xsd:element ref="subtype" minOccurs="1"
maxOccurs="1" /> maxOccurs="1" />
<xsd:element ref="params" minOccurs="0" <xsd:element ref="params" minOccurs="0"
maxOccurs="1" /> maxOccurs="1" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string"
use="required" />
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="codec" type="codecType" /> <xsd:element name="codec" type="codecType" />
<!-- subtype --> <!-- subtype -->
<xsd:simpleType name="subtypeType"> <xsd:simpleType name="subtypeType">
<xsd:restriction base="xsd:string" /> <xsd:restriction base="xsd:string" />
skipping to change at page 99, line 4 skipping to change at page 101, line 7
<xsd:element name="mimetype" type="mime.datatype" /> <xsd:element name="mimetype" type="mime.datatype" />
<!-- dialoglanguages --> <!-- dialoglanguages -->
<xsd:complexType name="dialoglanguagesType"> <xsd:complexType name="dialoglanguagesType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:element ref="mimetype" minOccurs="0" <xsd:element ref="mimetype" minOccurs="0"
maxOccurs="unbounded" /> maxOccurs="unbounded" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="dialoglanguages" type="dialoglanguagesType" /> <xsd:element name="dialoglanguages" type="dialoglanguagesType" />
<!-- grammartypes --> <!-- grammartypes -->
<xsd:complexType name="grammartypesType"> <xsd:complexType name="grammartypesType">
<xsd:complexContent> <xsd:complexContent>
<xsd:extension base="Tcore"> <xsd:extension base="Tcore">
<xsd:sequence> <xsd:sequence>
<xsd:element ref="mimetype" minOccurs="1" <xsd:element ref="mimetype" minOccurs="0"
maxOccurs="unbounded" /> maxOccurs="unbounded" />
<xsd:any namespace="##other" minOccurs="0" <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" processContents="lax" /> maxOccurs="unbounded" processContents="lax" />
</xsd:sequence> </xsd:sequence>
</xsd:extension> </xsd:extension>
</xsd:complexContent> </xsd:complexContent>
</xsd:complexType> </xsd:complexType>
<xsd:element name="grammartypes" type="grammartypesType" /> <xsd:element name="grammartypes" type="grammartypesType" />
skipping to change at page 102, line 40 skipping to change at page 104, line 43
<xsd:restriction base="xsd:NMTOKEN"> <xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="1.0" /> <xsd:enumeration value="1.0" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="mime.datatype"> <xsd:simpleType name="mime.datatype">
<xsd:restriction base="xsd:string" /> <xsd:restriction base="xsd:string" />
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="dialogid.datatype"> <xsd:simpleType name="dialogid.datatype">
<xsd:restriction base="xsd:string" /> <xsd:restriction base="xsd:string" />
</xsd:simpleType> </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="gender.datatype"> <xsd:simpleType name="gender.datatype">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="female" /> <xsd:enumeration value="female" />
<xsd:enumeration value="male" /> <xsd:enumeration value="male" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="state.datatype"> <xsd:simpleType name="state.datatype">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="preparing" /> <xsd:enumeration value="preparing" />
<xsd:enumeration value="prepared" /> <xsd:enumeration value="prepared" />
<xsd:enumeration value="starting" /> <xsd:enumeration value="starting" />
<xsd:enumeration value="started" /> <xsd:enumeration value="started" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
skipping to change at page 105, line 4 skipping to change at page 106, line 49
<xsd:simpleType name="record_termmode.datatype"> <xsd:simpleType name="record_termmode.datatype">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="noinput" /> <xsd:enumeration value="noinput" />
<xsd:enumeration value="dtmf" /> <xsd:enumeration value="dtmf" />
<xsd:enumeration value="maxtime" /> <xsd:enumeration value="maxtime" />
<xsd:enumeration value="finalsilence" /> <xsd:enumeration value="finalsilence" />
<xsd:enumeration value="stopped" /> <xsd:enumeration value="stopped" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="matchmode.datatype"> <xsd:simpleType name="matchmode.datatype">
<xsd:restriction base="xsd:NMTOKEN"> <xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="all" /> <xsd:enumeration value="all" />
<xsd:enumeration value="collect" /> <xsd:enumeration value="collect" />
<xsd:enumeration value="control" /> <xsd:enumeration value="control" />
</xsd:restriction> </xsd:restriction>
</xsd:simpleType> </xsd:simpleType>
<xsd:simpleType name="endsync.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="first" />
<xsd:enumeration value="last" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema> </xsd:schema>
6. Examples 6. Examples
This section provides examples of the IVR Control package. This section provides examples of the IVR Control package.
6.1. AS-MS Dialog Interaction Examples 6.1. AS-MS Dialog Interaction Examples
The following example assume a control channel has been established The following example assume a control channel has been established
and synced as described in the Media Control Channel Framework and synced as described in the Media Control Channel Framework
([I-D.ietf-mediactrl-sip-control-framework]). ([I-D.ietf-mediactrl-sip-control-framework]).
skipping to change at page 111, line 48 skipping to change at page 113, line 48
</mscivr> </mscivr>
If the dialog is successful, then dialogexit <event> contains the If the dialog is successful, then dialogexit <event> contains the
dtmf collected in its result parameter: dtmf collected in its result parameter:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="vxi80"> <event dialogid="vxi80">
<dialogexit status="1"> <dialogexit status="1">
<collectinfo dtmf="12345" termmode="match"/> <collectinfo dtmf="12345" termmode="match"/>
</dialogexit> </dialogexit>
</event> </event>
/mscivr> </mscivr>
And finally in this example, one of the input parameters is invalid: And finally in this example, one of the input parameters is invalid:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns"> <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
<dialog repeatCount="two"> <dialog repeatCount="two">
<prompt> <prompt>
<media loc="http://www.example.com/prompt1.wav"/> <media loc="http://www.example.com/prompt1.wav"/>
</prompt> </prompt>
<collect cleardigitbuffer="true" <collect cleardigitbuffer="true"
skipping to change at page 113, line 27 skipping to change at page 115, line 27
In this example, a prompt is played with collect and runtime controls In this example, a prompt is played with collect and runtime controls
are activated. are activated.
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns"> <dialogstart connectionid="7HDY839:HJKSkyHS~HUwkuh7ns">
<dialog> <dialog>
<prompt bargein="true"> <prompt bargein="true">
<media loc="http://www.example.com/prompt1.wav"/> <media loc="http://www.example.com/prompt1.wav"/>
</prompt> </prompt>
<control ffkey=5" rwkey="6" speedupkey="3" <control ffkey="5" rwkey="6" speedupkey="3"
speeddnkey="4"/> speeddnkey="4"/>
<collect maxdigits="2"/> <collect maxdigits="2"/>
</dialog> </dialog>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
Once the dialog is active, the user can press keys 3, 4, 5 and 6 to Once the dialog is active, the user can press keys 3, 4, 5 and 6 to
execute runtime controls on the prompt queue. The keys do not cause execute runtime controls on the prompt queue. The keys do not cause
bargein to occur. If the user presses any other key, then the prompt bargein to occur. If the user presses any other key, then the prompt
is interrupted and DTMF collect begins. Note that runtime controls is interrupted and DTMF collect begins. Note that runtime controls
are not active during the collect operation. are not active during the collect operation.
When the dialog is completed successfully, then both control and When the dialog is completed successfully, then both control and
collect information is reported. collect information is reported.
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="vxi81"> <event dialogid="vxi81">
<dialogexit status="1"> <dialogexit status="1">
<promptinfo termmode="bargein"/> <promptinfo termmode="bargein"/>
<collectinfo termmode="match" dtmf="14"/>
<controlinfo> <controlinfo>
<controlmatch dtmf="4" timestamp="2008-05-12T12:13:14Z"/> <controlmatch dtmf="4" timestamp="2008-05-12T12:13:14Z"/>
<controlmatch dtmf="3" timestamp="2008-05-12T12:13:15Z"/> <controlmatch dtmf="3" timestamp="2008-05-12T12:13:15Z"/>
<controlmatch dtmf="5" timestamp="2008-05-12T12:13:16Z"/> <controlmatch dtmf="5" timestamp="2008-05-12T12:13:16Z"/>
<controlinfo> </controlinfo>
<collectinfo termmode="match" dtmf="14"/>
</dialogexit> </dialogexit>
</event> </event>
</mscivr> </mscivr>
6.2.5. Subscriptions and notifications 6.2.5. Subscriptions and notifications
In this example, a looped dialog is started with subscription for In this example, a looped dialog is started with subscription for
notifications each time the user input matches the collect grammar: notifications each time the user input matches the collect grammar:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
skipping to change at page 115, line 27 skipping to change at page 117, line 27
</mscivr> </mscivr>
If the user barges in on the prompt and <collect> receives DTMF input If the user barges in on the prompt and <collect> receives DTMF input
matching the grammar, the dialog cycle is considered complete and the matching the grammar, the dialog cycle is considered complete and the
MS returns the following: MS returns the following:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="vxi81"> <event dialogid="vxi81">
<dialogexit status="1"> <dialogexit status="1">
<promptinfo duration="3654" termmode="bargein"/> <promptinfo duration="3654" termmode="bargein"/>
<collectinfo dtmf="1234" termmode="match"> <collectinfo dtmf="1234" termmode="match"/>
</dialogexit> </dialogexit>
</event> </event>
</mscivr> </mscivr>
If no user input was provided, or the input did not match the If no user input was provided, or the input did not match the
grammar, the dialog would loop for a maximum of 3 times. grammar, the dialog would loop for a maximum of 3 times.
6.3. Other Dialog Languages 6.3. Other Dialog Languages
The following example requests that a VoiceXML dialog is started: The following example requests that a VoiceXML dialog is started:
skipping to change at page 116, line 8 skipping to change at page 118, line 8
<params> <params>
<param name="prompt1">nfs://nas01/media1.3gp</param> <param name="prompt1">nfs://nas01/media1.3gp</param>
<param name="prompt2">nfs://nas01/media2.3gp</param> <param name="prompt2">nfs://nas01/media2.3gp</param>
</params> </params>
</dialogstart> </dialogstart>
</mscivr> </mscivr>
If the MS does not support this dialog language, then the response If the MS does not support this dialog language, then the response
would have the status code 421 (Section 4.5). However, if it does would have the status code 421 (Section 4.5). However, if it does
support the VoiceXML dialog language, it would respond with a 200 support the VoiceXML dialog language, it would respond with a 200
status, activate the VoiceXML dialog and make the <params> available status, activate the VoiceXML dialog and make the <params> available
to the VoiceXML script as described in Section 12. to the VoiceXML script as described in Section 9.
When the VoiceXML dialog exits, exit namelist parameters are When the VoiceXML dialog exits, exit namelist parameters are
specified using <params> in the dialogexit event: specified using <params> in the dialogexit event:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr"> <mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<event dialogid="d2"> <event dialogid="d2">
<dialogexit status="1"> <dialogexit status="1">
<params> <params>
<param name="username">peter</param> <param name="username">peter</param>
<param name="pin">1234</param> <param name="pin">1234</param>
skipping to change at page 121, line 11 skipping to change at page 123, line 11
when the same channel identifier is used in setting up another when the same channel identifier is used in setting up another
control channel (see Section 4 of control channel (see Section 4 of
[I-D.ietf-mediactrl-sip-control-framework]). [I-D.ietf-mediactrl-sip-control-framework]).
8. IANA Considerations 8. IANA Considerations
This specification instructs IANA to register a new Media Control This specification instructs IANA to register a new Media Control
Channel Framework Package, a new XML namespace, a new XML schema and Channel Framework Package, a new XML namespace, a new XML schema and
a new MIME type. a new MIME type.
This section further instructs IANA to create a new registry for IVR
prompt variable types.
8.1. Control Package Registration 8.1. Control Package Registration
This section registers a new Media Control Channel Framework package, This section registers a new Media Control Channel Framework package,
per the instructions in Section 12.1 of per the instructions in Section 12.1 of
[I-D.ietf-mediactrl-sip-control-framework]. [I-D.ietf-mediactrl-sip-control-framework].
Package Name: msc-ivr/1.0 Package Name: msc-ivr/1.0
[NOTE TO IANA/RFC-EDITOR: Please replace XXXX [NOTE TO IANA/RFC-EDITOR: Please replace XXXX
with the RFC number for this specification.] with the RFC number for this specification.]
Published Specification(s): RFCXXXX Published Specification(s): RFCXXXX
skipping to change at page 124, line 5 skipping to change at page 125, line 35
the Media Control Channel Framework IVR package. the Media Control Channel Framework IVR package.
Additional Information: Magic Number(s): (none) Additional Information: Magic Number(s): (none)
File extension(s): (none) File extension(s): (none)
Macintosh File Type Code(s): (none) Macintosh File Type Code(s): (none)
Person & email address to contact for further information: Scott Person & email address to contact for further information: Scott
McGlashan <smcg.stds01@mcglashan.org> McGlashan <smcg.stds01@mcglashan.org>
Intended usage: LIMITED USE Intended usage: LIMITED USE
Author/Change controller: The IETF Author/Change controller: The IETF
Other information: None. Other information: None.
9. Change Summary 8.5. IVR Prompt Variable Type Registration Information
This specification establishes an IVR Prompt Variable Type registry
for Control Packages and initiates its population as follows. New
entries in this registry must be published in an RFC (either as an
IETF submission or RFC Editor submission), using the IANA policy
[RFC5226] "RFC Required".
[NOTE TO IANA/RFC-EDITOR: Please
replace XXXX with the RFC number for this specification.]
Variable Type Reference Control Package
------------- --------- ---------------
date [RFCXXXX] msc-ivr/1.0
time [RFCXXXX] msc-ivr/1.0
digits [RFCXXXX] msc-ivr/1.0
The following information MUST be provided in an RFC publication in
order to register a new Prompt Variable type:
Variable Type: The value for the <variable> type attribute
(Section 4.3.1.1.1). The RFC MUST specify permitted values (if
any) for the format attribute of <variable> and how the value
attribute is rendered for different values of the format
attribute. The RFC MUST NOT weaken but MAY strengthen the valid
values of <variable> attributes defined in Section 4.3.1.1.1 of
this specification.
Reference: The RFC number in which the variable type is registered.
Control Package: The Control Package associated with the IVR
variable type.
Person and address to contact for further information:
9. Using VoiceXML as a dialog language
The IVR control package allows, but does not require, the MS to
support other dialog languages by referencing an external dialog
document. This section provides MS implementations which support the
VoiceXML dialog language ([VXML20], [VXML21], [VXML30]) with
additional details about using these dialogs in this package. This
section is normative for an MS which supports the VoiceXML dialog
language.
This section covers preparing (Section 9.1), starting (Section 9.2),
terminating (Section 9.3) and exiting (Section 9.4) VoiceXML dialogs
as well as handling VoiceXML call transfer (Section 9.5).
9.1. Preparing a VoiceXML dialog
A VoiceXML dialog is prepared by sending the MS a request containing
a <dialogprepare> element (Section 4.2.1). The type attribute is set
to "application/voicexml+xml" and the src attribute to the URI of the
VoiceXML document which is to be prepared by the MS. For example:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogprepare type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s"/>
</mscivr>
The VoiceXML dialog environment uses the <dialogprepare> request as
an opportunity to fetch and validate the initial document indicated
by the src attribute along with any resources referenced in the
VoiceXML document marked as prefetchable. The maxage and maxstale
attributes, if specified, control how the initial VoiceXML document
is fetched using HTTP (see [RFC2616]). Note that the fetchtimeout
attribute is not defined in VoiceXML for an initial document but the
MS MUST support this attribute in its VoiceXML environment.
If a <params> child element of <dialogprepare> is specified, then the
MS MUST map the parameter information into a VoiceXML session
variable object as described in Section 9.2.3.
The success or failure of the VoiceXML document preparation is
reported in the MS response. For example, if the VoiceXML document
cannot be retrieved, then a 409 error response is returned. If the
document is syntactically invalid according to VoiceXML, then a 400
response is returned. If successful, the response includes a
dialogid attribute whose value the AS can use in <dialogstart>
element to start the prepared dialog.
9.2. Starting a VoiceXML dialog
A VoiceXML dialog is started by sending the MS a request containing a
<dialogstart> element (Section 4.2.2). If a VoiceXML dialog has
already been prepared using <dialogprepare>, then the MS starts the
dialog indicated by the prepareddialogid attribute. Otherwise, a new
VoiceXML dialog can be started by setting the type attribute to
"application/voicexml+xml" and the src attribute to the URI of the
VoiceXML document. For example:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s"/>
</mscivr>
The maxage and maxstale attributes, if specified, control how the
initial VoiceXML document is fetched using HTTP (see [RFC2616]).
Note that the fetchtimeout attribute is not defined in VoiceXML for
an initial document but the MS MUST support this attribute in its
VoiceXML environment. Note also that support for <dtmfsub>
subscriptions (Section 4.2.2.1.1) and their associated dialog
notification events is not defined in VoiceXML. If such a
subscription is specified in a <dialogstart> request, then the MS
sends a 439 error response (see Section 4.5).
The success or failure of starting a VoiceXML dialog is reported in
the MS response as described in Section 4.2.2.
When the MS starts a VoiceXML dialog, the MS MUST map session
information into a VoiceXML session variable object. There are 3
types of session information: protocol information (Section 9.2.1),
media stream information (Section 9.2.2) and parameter information
(Section 9.2.3).
9.2.1. Session protocol information
If the connectionid attribute is specified, the MS assigns protocol
information from the SIP dialog associated with the connection to the
following session variables in VoiceXML:
session.connection.local.uri Evaluates to the SIP URI specified in
the To: header of the initial INVITE
session.connection.remote.uri Evaluates to the SIP URI specified in
the From: header of the initial INVITE
session.connection.originator Evaluates to the value of
session.connection.remote (MS receives inbound connections but
does not create outbound connections)
session.connection.protocol.name Evaluates to "sip". Note that this
is intended to reflect the use of SIP in general, and does not
distinguish between whether the connection accesses the MS via SIP
or SIPS procedures.
session.connection.protocol.version Evaluates to "2.0".
session.connection.redirect This array is populated by information
contained in the History-Info ([RFC4244]) header in the initial
INVITE or is otherwise undefined. Each entry (hi-entry) in the
History-Info header is mapped, in the order it appeared in the
History-Info header, into an element of the
session.connection.redirect array. Properties of each element of
the array are determined as follows:
uri Set to the hi-targeted-to-uri value of the History-Info entry
pi Set to 'true' if hi-targeted-to-uri contains a
'Privacy=history' parameter, or if the INVITE Privacy header
includes 'history'; 'false' otherwise
si Set to the value of the 'si' parameter if it exists, undefined
otherwise
reason Set verbatim to the value of the 'Reason' parameter of hi-
targeted-to-uri
session.connection.aai Evaluates to the value of a SIP header with
the name "aai" if present; otherwise undefined.
session.connection.protocol.sip.requesturi This is an associative
array where the array keys and values are formed from the URI
parameters on the SIP Request-URI of the initial INVITE. The
array key is the URI parameter name. The corresponding array
value is obtained by evaluating the URI parameter value as a
string. In addition, the array's toString() function returns the
full SIP Request-URI.
session.connection.protocol.sip.headers This is an associative array
where each key in the array is the non-compact name of a SIP
header in the initial INVITE converted to lower-case (note the
case conversion does not apply to the header value). If multiple
header fields of the same field name are present, the values are
combined into a single comma-separated value. Implementations
MUST at a minimum include the Call-ID header and MAY include other
headers. For example,
session.connection.protocol.sip.headers["call-id"] evaluates to
the Call-ID of the SIP dialog.
If a conferenceid attribute is specified, then the MS populates the
following session variables in VoiceXML:
session.conference.name Evaluates to the value of the conferenceid
attribute
9.2.2. Session media stream information
The media streams of the connection or conference to use for the
dialog are described in Section 4.2.2, including use of <stream>
elements (Section 4.2.2.2) if specified. The MS maps media stream
information into the VoiceXML session variable
session.connection.protocol.sip.media for a connection, and
session.conference.media for a conference. In both variables, the
value of the variable is an array where each array element is an
object with the following properties:
type This required property indicates the type of the media
associated with the stream (see Section 4.2.2.2 <stream> type
attribute definition)
direction This required property indicates the directionality of the
media relative to the endpoint of the dialog (see Section 4.2.2.2
<stream> direction attribute definition).
format This property is optional. If defined, the value of the
property is an array. Each array element is an object which
specifies information about one format of the media stream. The
object contains at least one property called name whose value is
the subtype name of the media format ([RFC4855]). Other
properties may be defined with string values; these correspond to
required and, if defined, optional parameters of the format.
As a consequence of this definition, when a connectionid is specified
there is an array entry in session.connection.protocol.sip.media for
each media stream used by the VoiceXML dialog. For an example,
consider a connection with bi-directional G.711 mu-law audio sampled
at 8kHz where the dialog is started with
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s">
<stream media="audio" direction="recvonly"/>
</dialogstart>
</mscivr>
In this case, session.connection.protocol.sip.media[0].type evaluates
to "audio", session.connection.protocol.sip.media[0].direction to
"recvonly" (i.e. the endpoint only receives media from the dialog -
the endpoint does not send media to the dialog), and
session.connection.protocol.sip.media[0].format[0].name evaluates to
"PCMU" and session.connection.protocol.sip.media[0].format[0].rate
evaluates to "8000".
Note that the session variable is updated if the connection or
conference media session characteristics for the VoiceXML dialog
change (e.g. due to a SIP re-INVITE).
9.2.3. Session parameter information
Parameter information is specified in the <params> child element of
<dialogprepare> and <dialogstart> elements, where each parameter is
specified using a <param> element. The MS maps parameter information
into VoiceXML session variables as follows:
session.values This is an associative array mapped to the <params>
element. It is undefined if no <params> element is specified. If
a <params> element is specified in both <dialogprepare> and
<dialogstart> elements for the same dialog, then the array is
first initialized with the <params> specified in the
<dialogprepare> element and then updated with the <params>
specified in the <dialogstart> element; in cases of conflict, the
<dialogstart> parameter value take priority. Array keys and
values are formed from <param> children of the <params> element.
Each array key is the value of the name attribute of a <param>
element. If the same name is used in more than one <param>
element, then the array key is associated with the last <param> in
document order. The corresponding value for each key is an object
with two required properties: a "type" property evaluating to the
value of the type attribute; and a "content" property evaluating
to the content of the <param>. In addition, this object's
toString() function returns the value of the "content" property as
a string.
For example, a VoiceXML dialog started with one parameter:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s">
<params>
<param name="mode">playannouncement</param>
</params>
</dialogstart>
</mscivr>
In this case, session.values would be defined with one item in the
array where session.values['mode'].type evaluates to "text/plain"
(the default value), session.values['mode'].content evaluates to
"playannouncement" and session.values['mode'].toString() also
evaluates to "playannouncement".
The MS sends an error response (see Section 4.2.2) if a <param> is
not supported by the MS (e.g. the parameter type is not supported).
9.3. Terminating a VoiceXML dialog
When the MS receives a request with a <dialogterminate> element
(Section 4.2.3), the MS throws a 'connection.disconnect.hangup' event
into the specified VoiceXML dialog. Note that if the immediate
attribute has the value true, then the MS MUST NOT return <params>
information when the VoiceXML dialog exits (even if the VoiceXML
dialog provides such information) - see Section 9.4.
If the connection or conference associated with the VoiceXML dialog
terminates, then the MS throws a 'connection.disconnect.hangup' event
into the specified VoiceXML dialog.
9.4. Exiting a VoiceXML dialog
The MS sends a <dialogexit> notification event (Section 4.2.5.1) when
the VoiceXML dialog is complete, has been terminated or because it
exits due to an error. The <dialogexit> status attribute specifies
the status of the VoiceXML dialog when it exits and its <params>
child element specifies information, if any, returned from the
VoiceXML dialog.
A VoiceXML dialog exits when it processes a <disconnect> element, a
<exit> element or an implicit exit according to the VoiceXML FIA. If
the VoiceXML dialog executes a <disconnect> and then subsequently
executes an <exit> with namelist information, the namelist
information from the <exit> element is discarded.
The MS reports namelist variables in the <params> element of the
<dialogexit>. Each <param> reports on a namelist variable. The MS
set the <param> name attribute to the name of the VoiceXML variable.
The MS sets the <param> type attribute according to the type of the
VoiceXML variable. The MS sets the <param> type to 'text/plain' when
the VoiceXML variable is a simple ECMAScript value. If the VoiceXML
variable is a recording, the MS sets the <param> type to the MIME
media type of the recording and encodes the recorded content as CDATA
in the <param> (see Section 4.2.6.1 for an example). If the VoiceXML
variable is a complex ECMAScript value (e.g. object, array, etc), the
MS sets the <param> type to 'application/json' and converts the
variable value to its JSON value equivalent ([RFC4627]). The
behavior resulting from specifying an ECMAScript object with circular
references is not defined.
If the expr attribute is specified on the VoiceXML <exit> element
instead of the namelist attribute, the MS creates a <param> element
with the reserved name '__exit'. If the value is an ECMAScript
literal, the <param> type is 'text/plain' and the content is the
literal value. If the value is a variable, the <param> type and
content are set in the same way as a namelist variable; for example,
an expr attribute referencing a variable with a simple ECMAScript
value has the type 'text/plain' and the content is set to the
ECMAScript value. To allow the AS to differentiate between a
<dialogexit> notification event resulting from a VoiceXML
<disconnect> from one resulting from an <exit>, the MS creates a
<param> with the reserved name '__reason', the type 'text/plain', and
a value of "disconnect" (without brackets) to reflect the use of
VoiceXML's <disconnect> element, and the value of "exit" (without
brackets) to an explicit <exit> in the VoiceXML dialog. If the
VoiceXML session terminates for other reasons (such as encountering
an error), this parameter MAY be omitted or take on platform-specific
values prefixed with an underscore.
Table 2 provides some examples of VoiceXML <exit> usage and the
corresponding <params> element in the <dialogexit> notification
event. It assumes the following VoiceXML variable names and values:
userAuthorized=true, pin=1234 and errors=0. The <param> type
attributes ('text/plain') are omitted for clarity.
+------------------------+------------------------------------------+
| <exit> Usage | <params> Result |
+------------------------+------------------------------------------+
| <exit> | <params> <param |
| | name="__reason">exit</param> </params> |
| | |
| <exit expr="5"> | <params> <param |
| | name="__reason">exit</param> <param |
| | name="__exit">5</param> </params> |
| | |
| <exit expr="'done'"> | <params> <param |
| | name="__reason">exit</param> <param |
| | name="__exit">'done'</param> </params> |
| | |
| <exit | <params> <param |
| expr="userAuthorized"> | name="__reason">exit</param> <param |
| | name="__exit">true</param> </params> |
| | |
| <exit namelist="pin | <params> <param |
| errors"> | name="__reason">exit</param> <param |
| | name="pin">1234</param> <param |
| | name="errors">0</param> </params> |
+------------------------+------------------------------------------+
Table 2: VoiceXML <exit> mapping examples
9.5. Call Transfer
While VoiceXML is at its core a dialog language, it also provides
optional call transfer capability. It is NOT RECOMMENDED to use
VoiceXML's call transfer capability in networks involving Application
Servers. Rather, the AS itself can provide call routing
functionality by taking signaling actions based on the data returned
to it, either through VoiceXML's own data submission mechanisms or
through the mechanism described in Section 9.4. If the MS encounters
a VoiceXML dialog requesting call transfer capability, the MS SHOULD
raise an error event in the VoiceXML dialog execution context: an
error.unsupported.transfer.blind event if blind transfer is
requested, error.unsupported.transfer.bridge if bridge transfer is
requested, or error.unsupported.transfer.consultation if consultation
transfer is requested.
10. Change Summary
Note to RFC Editor: Please remove this whole section. Note to RFC Editor: Please remove this whole section.
The following are the changes between the -09 and -08 versions
(primarily addressing IESG DISCUSS, comments and nits):
o 3.1: Aligned Control Package Name/Version with last Control
Framework verbage.
o 4.0: Modified communications protocol requirements so that a MS
MUST support both HTTP and HTTPS for fetching resources and
uploading recordings. Added statement to relevant element
definitions.
o 4.2.1: Corrected error code from 409 to 421 in last paragraph in
section.
o 4.2.1, 4.2.2, 4.3.1.3.1, 4.3.4, 4.3.5: Modified the specification
of src and location attributes in <dialogprepare>, <dialogstart>,
<grammar>, <record> and <media> so that there is no mention of
authentication information in the URI (the URI RFC 3986 already
covers this).
o 4.0: Clarified that while some elements contain attributes whose
value is descriptive text, this descriptive text is for diagnostic
use only and does not require a language indicator such as a
language tag.
o 4.2.2.2: Clarified that the media attribute of <stream> is a MIME
type-name with reference to RFC 4288.
o 4.2.6.1: Added encoding attribute to <param> to allow for
specification of content-transfer-encoding schema. Updated XML
schema.
o 4.2.6.1: Simplified content model of <param> to be text only.
Updated XML schema.
o 4.3.1.1.1, 4.4.2.2.5, 8.5: Tighten up definition of <variable>
date, time and digits types (and <variables>) and added IANA
instruction to establish a prompt variable type registry.
o 4.3.1.4: Clarified that in the <record> the mapping of the append
operation to the upload protocol scheme is implementation-
specific.
o 4.6.10: Clarified MIME media type format with ABNF production
referencing RFC 4288.
o 5: Stated that the schema is normative.
o 5: Corrected <par> definition in XML Schema by adding 'endsync'
attribute.
o 5: Corrected <grammartypes> definition in XML Schema by making
mimetype child element optional.
o Moved VoiceXML section (Appendix A) to main body and clarified
that it is normative for implementations supporting VoiceXML.
Updated VoiceXML references to normative except (VoiceXML 3.0
which is still a Working Draft).
o 9.2.2: Corrected example so that the subtype-name (whose value
should be the subtype of the media format) is "PCMU" rather than
"audio/PCMU".
o 9.4: VoiceXML <exit> with expr attribute: clarified that if the
value is an ECMAScript variable, the <param> type and content is
processed in the same way as a namelist variable.
o 4.2.2.2.1: clarified the definition of <region> as an area in a
video layout and added a reference to the mixer package
o 4.3.1.4: clarified sentence "If no <media> child element is
specified, the MS MUST provide a recording location where the
recording format is implementation- specific."
o Introduction: Clarified that Control Framework is an equivalent
term for the Media Control Channel Framework. Expanded DTMF
acronym.
o 4.2.5.1, 4.5: replaced reference to standards-tracks RFC for
assignment of new values, with reference to using Standards Action
process defined in RFC 5226.
o 4.3.1.1.3: Added recommendation that a <par> element contains only
one <media> element of the same media type (i.e. same type-name as
defined in Section 4.6.10).
o 4.4.2.1.1: changed <codec> to include name attribute; aligned
definition with RFC4288; updated schema.
o 4.6: Type definitions; added references to XML Schema datatypes
where appropriate; changed definition of boolean to match W3C
definition and updated boolean type in schema.
o Typos: in 4.2.2.1, replaced "rewkey" with "rwkey" in first
example; in 4.3.1.1.3, added closing ">" to example; in
4.3.1.1.3.1, added closing ">" to example; in 4.6.11, corrected
RFC 5646 reference
o Validated all examples against XML schema and corrected where
necessary.
The following are the changes between the -08 and -07 versions The following are the changes between the -08 and -07 versions
(addressing IETF Last Call comments): (addressing IETF Last Call comments):
o 4.2: Changed recommended maximum duration value for a prepared o 4.2: Changed recommended maximum duration value for a prepared
dialog from 30s to 300s. dialog from 30s to 300s.
o 4.2: Changed the dialog state machine so that when a PREPARED o 4.2: Changed the dialog state machine so that when a PREPARED
dialog is terminated, the MS always sends a <dialogexit> dialog is terminated, the MS always sends a <dialogexit>
notification event. notification event.
skipping to change at page 138, line 5 skipping to change at page 151, line 5
o re-organized so that template details after general package o re-organized so that template details after general package
framework and element description. framework and element description.
The following are the primary changes between the -01 of the draft The following are the primary changes between the -01 of the draft
and the -00 version. and the -00 version.
o Removed requirement for VoiceXML dialog support o Removed requirement for VoiceXML dialog support
o Added requirement for template dialog support o Added requirement for template dialog support
10. Contributors 11. Contributors
Asher Shiratzky provided valuable support and contributions to the Asher Shiratzky provided valuable support and contributions to the
early versions of this document. early versions of this document.
The authors would like to thank the IVR design team consisting of The authors would like to thank the IVR design team consisting of
Roni Even, Lorenzo Miniero, Adnan Saleem, Diego Besprosvan, Mary Roni Even, Lorenzo Miniero, Adnan Saleem, Diego Besprosvan, Mary
Barnes and Steve Buko who provided valuable feedback, input and text Barnes and Steve Buko who provided valuable feedback, input and text
to this document. to this document.
11. Acknowledgments 12. Acknowledgments
The authors would like to thank Adnan Saleem, Gene Shtirmer, Dave The authors would like to thank Adnan Saleem, Gene Shtirmer, Dave
Burke, Dan York, Steve Buko, Jean-Francois Bertrand and Henry Lum for Burke, Dan York, Steve Buko, Jean-Francois Bertrand, Henry Lum and
expert reviews of this work. Lorenzo Miniero for expert reviews of this work.
Ben Campbell carried out the RAI expert review on this specification Ben Campbell carried out the RAI expert review on this specification
and provided a great deal of invaluable input. Donald Eastlake and provided a great deal of invaluable input. Donald Eastlake
carried out a thorough security review. carried out a thorough security review.
12. Appendix A: Using VoiceXML as a dialog language
The IVR control package allows, but does not require, the MS to
support other dialog languages by referencing an external dialog
document. This appendix provides MS implementations which support
the VoiceXML dialog language ([VXML20], [VXML21], [VXML30]) with
additional details about using these dialogs in this package.
This appendix covers preparing (Section 12.1), starting
(Section 12.2), terminating (Section 12.3) and exiting (Section 12.4)
VoiceXML dialogs as well as handling VoiceXML call transfer
(Section 12.5).
12.1. Preparing a VoiceXML dialog
A VoiceXML dialog is prepared by sending the MS a request containing
a <dialogprepare> element (Section 4.2.1). The type attribute is set
to "application/voicexml+xml" and the src attribute to the URI of the
VoiceXML document which is to be prepared by the MS. For example:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogprepare type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s"/>
</mscivr>
The VoiceXML dialog environment uses the <dialogprepare> request as
an opportunity to fetch and validate the initial document indicated
by the src attribute along with any resources referenced in the
VoiceXML document marked as prefetchable. The maxage and maxstale
attributes, if specified, control how the initial VoiceXML document
is fetched using HTTP (see [RFC2616]). Note that the fetchtimeout
attribute is not defined in VoiceXML for an initial document but the
MS MUST support this attribute in its VoiceXML environment.
If a <params> child element of <dialogprepare> is specified, then the
MS MUST map the parameter information into a VoiceXML session
variable object as described in Section 12.2.3.
The success or failure of the VoiceXML document preparation is
reported in the MS response. For example, if the VoiceXML document
cannot be retrieved, then a 409 error response is returned. If the
document is syntactically invalid according to VoiceXML, then a 400
response is returned. If successful, the response includes a
dialogid attribute whose value the AS can use in <dialogstart>
element to start the prepared dialog.
12.2. Starting a VoiceXML dialog
A VoiceXML dialog is started by sending the MS a request containing a
<dialogstart> element (Section 4.2.2). If a VoiceXML dialog has
already been prepared using <dialogprepare>, then the MS starts the
dialog indicated by the prepareddialogid attribute. Otherwise, a new
VoiceXML dialog can be started by setting the type attribute to
"application/voicexml+xml" and the src attribute to the URI of the
VoiceXML document. For example:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s"/>
</mscivr>
The maxage and maxstale attributes, if specified, control how the
initial VoiceXML document is fetched using HTTP (see [RFC2616]).
Note that the fetchtimeout attribute is not defined in VoiceXML for
an initial document but the MS MUST support this attribute in its
VoiceXML environment. Note also that support for <dtmfsub>
subscriptions (Section 4.2.2.1.1) and their associated dialog
notification events is not defined in VoiceXML. If such a
subscription is specified in a <dialogstart> request, then the MS
sends a 439 error response (see Section 4.5).
The success or failure of starting a VoiceXML dialog is reported in
the MS response as described in Section 4.2.2.
When the MS starts a VoiceXML dialog, the MS MUST map session
information into a VoiceXML session variable object. There are 3
types of session information: protocol information (Section 12.2.1),
media stream information (Section 12.2.2) and parameter information
(Section 12.2.3).
12.2.1. Session protocol information
If the connectionid attribute is specified, the MS assigns protocol
information from the SIP dialog associated with the connection to the
following session variables in VoiceXML:
session.connection.local.uri Evaluates to the SIP URI specified in
the To: header of the initial INVITE
session.connection.remote.uri Evaluates to the SIP URI specified in
the From: header of the initial INVITE
session.connection.originator Evaluates to the value of
session.connection.remote (MS receives inbound connections but
does not create outbound connections)
session.connection.protocol.name Evaluates to "sip". Note that this
is intended to reflect the use of SIP in general, and does not
distinguish between whether the connection accesses the MS via SIP
or SIPS procedures.
session.connection.protocol.version Evaluates to "2.0".
session.connection.redirect This array is populated by information
contained in the History-Info ([RFC4244]) header in the initial
INVITE or is otherwise undefined. Each entry (hi-entry) in the
History-Info header is mapped, in the order it appeared in the
History-Info header, into an element of the
session.connection.redirect array. Properties of each element of
the array are determined as follows:
uri Set to the hi-targeted-to-uri value of the History-Info entry
pi Set to 'true' if hi-targeted-to-uri contains a
'Privacy=history' parameter, or if the INVITE Privacy header
includes 'history'; 'false' otherwise
si Set to the value of the 'si' parameter if it exists, undefined
otherwise
reason Set verbatim to the value of the 'Reason' parameter of hi-
targeted-to-uri
session.connection.aai Evaluates to the value of a SIP header with
the name "aai" if present; otherwise undefined.
session.connection.protocol.sip.requesturi This is an associative
array where the array keys and values are formed from the URI
parameters on the SIP Request-URI of the initial INVITE. The
array key is the URI parameter name. The corresponding array
value is obtained by evaluating the URI parameter value as a
string. In addition, the array's toString() function returns the
full SIP Request-URI.
session.connection.protocol.sip.headers This is an associative array
where each key in the array is the non-compact name of a SIP
header in the initial INVITE converted to lower-case (note the
case conversion does not apply to the header value). If multiple
header fields of the same field name are present, the values are
combined into a single comma-separated value. Implementations
MUST at a minimum include the Call-ID header and MAY include other
headers. For example,
session.connection.protocol.sip.headers["call-id"] evaluates to
the Call-ID of the SIP dialog.
If a conferenceid attribute is specified, then the MS populates the
following session variables in VoiceXML:
session.conference.name Evaluates to the value of the conferenceid
attribute
12.2.2. Session media stream information
The media streams of the connection or conference to use for the
dialog are described in Section 4.2.2, including use of <stream>
elements (Section 4.2.2.2) if specified. The MS maps media stream
information into the VoiceXML session variable
session.connection.protocol.sip.media for a connection, and
session.conference.media for a conference. In both variables, the
value of the variable is an array where each array element is an
object with the following properties:
type This required property indicates the type of the media
associated with the stream (see Section 4.2.2.2 <stream> type
attribute definition)
direction This required property indicates the directionality of the
media relative to the endpoint of the dialog (see Section 4.2.2.2
<stream> direction attribute definition).
format This property is optional. If defined, the value of the
property is an array. Each array element is an object which
specifies information about one format of the media stream. The
object contains at least one property called name whose value is
the subtype of the media format ([RFC4855]). Other properties may
be defined with string values; these correspond to required and,
if defined, optional parameters of the format.
As a consequence of this definition, when a connectionid is specified
there is an array entry in session.connection.protocol.sip.media for
each media stream used by the VoiceXML dialog. For an example,
consider a connection with bi-directional G.711 mu-law audio sampled
at 8kHz where the dialog is started with
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s">
<stream type="audio" direction="recvonly"/>
</dialogstart>
</mscivr>
In this case, session.connection.protocol.sip.media[0].type evaluates
to "audio", session.connection.protocol.sip.media[0].direction to
"recvonly" (i.e. the endpoint only receives media from the dialog -
the endpoint does not send media to the dialog), and
session.connection.protocol.sip.media[0].format[0].name evaluates to
"audio/PCMU" and
session.connection.protocol.sip.media[0].format[0].rate evaluates to
"8000".
Note that the session variable is updated if the connection or
conference media session characteristics for the VoiceXML dialog
change (e.g. due to a SIP re-INVITE).
12.2.3. Session parameter information
Parameter information is specified in the <params> child element of
<dialogprepare> and <dialogstart> elements, where each parameter is
specified using a <param> element. The MS maps parameter information
into VoiceXML session variables as follows:
session.values This is an associative array mapped to the <params>
element. It is undefined if no <params> element is specified. If
a <params> element is specified in both <dialogprepare> and
<dialogstart> elements for the same dialog, then the array is
first initialized with the <params> specified in the
<dialogprepare> element and then updated with the <params>
specified in the <dialogstart> element; in cases of conflict, the
<dialogstart> parameter value take priority. Array keys and
values are formed from <param> children of the <params> element.
Each array key is the value of the name attribute of a <param>
element. If the same name is used in more than one <param>
element, then the array key is associated with the last <param> in
document order. The corresponding value for each key is an object
with two required properties: a "type" property evaluating to the
value of the type attribute; and a "content" property evaluating
to the content of the <param>. In addition, this object's
toString() function returns the value of the "content" property as
a string.
For example, a VoiceXML dialog started with one parameter:
<mscivr version="1.0" xmlns="urn:ietf:params:xml:ns:msc-ivr">
<dialogstart connectionid="ssd3r3:sds345b"
type="application/voicexml+xml"
src="http://www.example.com/mydialog.vxml"
fetchtimeout="15s">
<params>
<param name="mode">playannouncement</param>
</params>
</dialogstart>
</mscivr>
In this case, session.values would be defined with one item in the
array where session.values['mode'].type evaluates to "text/plain"
(the default value), session.values['mode'].content evaluates to
"playannouncement" and session.values['mode'].toString() also
evaluates to "playannouncement".
The MS sends an error response (see Section 4.2.2) if a <param> is
not supported by the MS (e.g. the parameter type is not supported).
12.3. Terminating a VoiceXML dialog
When the MS receives a request with a <dialogterminate> element
(Section 4.2.3), the MS throws a 'connection.disconnect.hangup' event
into the specified VoiceXML dialog. Note that if the immediate
attribute has the value true, then the MS MUST NOT return <params>
information when the VoiceXML dialog exits (even if the VoiceXML
dialog provides such information) - see Section 12.4.
If the connection or conference associated with the VoiceXML dialog
terminates, then the MS throws a 'connection.disconnect.hangup' event
into the specified VoiceXML dialog.
12.4. Exiting a VoiceXML dialog
The MS sends a <dialogexit> notification event (Section 4.2.5.1) when
the VoiceXML dialog is complete, has been terminated or because it
exits due to an error. The <dialogexit> status attribute specifies
the status of the VoiceXML dialog when it exits and its <params>
child element specifies information, if any, returned from the
VoiceXML dialog.
A VoiceXML dialog exits when it processes a <disconnect> element, a
<exit> element or an implicit exit according to the VoiceXML FIA. If
the VoiceXML dialog executes a <disconnect> and then subsequently
executes an <exit> with namelist information, the namelist
information from the <exit> element is discarded.
The MS reports namelist variables in the <params> element of the
<dialogexit>. Each <param> reports on a namelist variable. The MS
set the <param> name attribute to the name of the VoiceXML variable.
The MS sets the <param> type attribute according to the type of the
VoiceXML variable. The MS sets the <param> type to 'text/plain' when
the VoiceXML variable is a simple ECMAScript value. If the VoiceXML
variable is a recording, the MS sets the <param> type to the MIME
media type of the recording and encodes the recorded content as CDATA
in the <param> (see Section 4.2.6.1 for an example). If the VoiceXML
variable is a complex ECMAScript value (e.g. object, array, etc), the
MS sets the <param> type to 'application/json' and converts the
variable value to its JSON value equivalent ([RFC4627]. The behavior
resulting from specifying an ECMAScript object with circular
references is not defined.
If the expr attribute is specified on the VoiceXML <exit> element
instead of the namelist attribute, the MS creates a <param> element
with the reserved name '__exit', the type 'text/plain' and the
content of the expr attribute. To allow the AS to differentiate
between a <dialogexit> notification event resulting from a VoiceXML
<disconnect> from one resulting from an <exit>, the MS creates a
<param> with the reserved name '__reason', the type 'text/plain', and
a value of "disconnect" (without brackets) to reflect the use of
VoiceXML's <disconnect> element, and the value of "exit" (without
brackets) to an explicit <exit> in the VoiceXML dialog. If the
VoiceXML session terminates for other reasons (such as encountering
an error), this parameter MAY be omitted or take on platform-specific
values prefixed with an underscore.
Table 2 provides some examples of VoiceXML <exit> usage and the
corresponding <params> element in the <dialogexit> notification
event. It assumes the following VoiceXML variable names and values:
userAuthorized=true, pin=1234 and errors=0. The <param> type
attributes ('text/plain') are omitted for clarity.
+------------------------+------------------------------------------+
| <exit> Usage | <params> Result |
+------------------------+------------------------------------------+
| <exit> | <params> <param |
| | name="__reason">exit</param> </params> |
| | |
| <exit expr="5"> | <params> <param |
| | name="__reason">exit</param> <param |
| | name="__exit">5</param> </params> |
| | |
| <exit expr="'done'"> | <params> <param |
| | name="__reason">exit</param> <param |
| | name="__exit">'done'</param> </params> |
| | |
| <exit | <params> <param |
| expr="userAuthorized"> | name="__reason">exit</param> <param |
| | name="__exit">true</param> </params> |
| | |
| <exit namelist="pin | <params> <param |
| errors"> | name="__reason">exit</param> <param |
| | name="pin">1234</param> <param |
| | name="errors">0</param> </params> |
+------------------------+------------------------------------------+
Table 2: VoiceXML <exit> mapping examples
12.5. Call Transfer
While VoiceXML is at its core a dialog language, it also provides
optional call transfer capability. It is NOT RECOMMENDED to use
VoiceXML's call transfer capability in networks involving Application
Servers. Rather, the AS itself can provide call routing
functionality by taking signaling actions based on the data returned
to it, either through VoiceXML's own data submission mechanisms or
through the mechanism described in Section 12.4. If the MS
encounters a VoiceXML dialog requesting call transfer capability, the
MS SHOULD raise an error event in the VoiceXML dialog execution
context: an error.unsupported.transfer.blind event if blind transfer
is requested, error.unsupported.transfer.bridge if bridge transfer is
requested, or error.unsupported.transfer.consultation if consultation
transfer is requested.
13. References 13. References
13.1. Normative References 13.1. Normative References
[I-D.ietf-mediactrl-sip-control-framework] [I-D.ietf-mediactrl-sip-control-framework]
Boulton, C., Melanchuk, T., and S. McGlashan, "Media Boulton, C., Melanchuk, T., and S. McGlashan, "Media
Control Channel Framework", Control Channel Framework",
draft-ietf-mediactrl-sip-control-framework-11 (work in draft-ietf-mediactrl-sip-control-framework-12 (work in
progress), October 2009. progress), September 2010.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, January 2001. Types", RFC 3023, January 2001.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004. January 2004.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, January 2005. RFC 3986, January 2005.
[RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and
Registration Procedures", BCP 13, RFC 4288, December 2005.
[RFC4574] Levin, O. and G. Camarillo, "The Session Description [RFC4574] Levin, O. and G. Camarillo, "The Session Description
Protocol (SDP) Label Attribute", RFC 4574, August 2006. Protocol (SDP) Label Attribute", RFC 4574, August 2006.
[RFC4647] Phillips, A. and M. Davis, "Matching of Language Tags", [RFC4647] Phillips, A. and M. Davis, "Matching of Language Tags",
BCP 47, RFC 4647, September 2006. BCP 47, RFC 4647, September 2006.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
May 2008.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
[RFC5646] Phillips, A. and M. Davis, "Tags for Identifying [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying
Languages", BCP 47, RFC 5646, September 2009. Languages", BCP 47, RFC 5646, September 2009.
[SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar [SRGS] Hunt, A. and S. McGlashan, "Speech Recognition Grammar
Specification Version 1.0", W3C Recommendation, Specification Version 1.0", W3C Recommendation,
March 2004. March 2004.
[VXML20] McGlashan, S., Burnett, D., Carter, J., Danielsen, P.,
Ferrans, J., Hunt, A., Lucas, B., Porter, B., Rehor, K.,
and S. Tryphonas, "Voice Extensible Markup Language
(VoiceXML) Version 2.0", W3C Recommendation, March 2004.
[VXML21] Oshry, M., Auburn, RJ., Baggia, P., Bodell, M., Burke, D.,
Burnett, D., Candell, E., Carter, J., McGlashan, S., Lee,
A., Porter, B., and K. Rehor, "Voice Extensible Markup
Language (VoiceXML) Version 2.1", W3C Recommendation,
June 2007.
[W3C.REC-SMIL2-20051213] [W3C.REC-SMIL2-20051213]
Layaida, N., Mullender, S., Michel, T., Grassel, G., Koivisto, A., Bulterman, D., Michel, T., Layaida, N.,
Jansen, J., Koivisto, A., Bulterman, D., and D. Zucker, Zucker, D., Jansen, J., Mullender, S., and G. Grassel,
"Synchronized Multimedia Integration Language (SMIL 2.1)", "Synchronized Multimedia Integration Language (SMIL 2.1)",
World Wide Web Consortium Recommendation REC-SMIL2- World Wide Web Consortium Recommendation REC-SMIL2-
20051213, December 2005, 20051213, December 2005,
<http://www.w3.org/TR/2005/REC-SMIL2-20051213>. <http://www.w3.org/TR/2005/REC-SMIL2-20051213>.
[XML] Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E., [XML] Bray, T., Paoli, J., Sperberg-McQueen, C M., Maler, E.,
and F. Yergeau, "Extensible Markup Language (XML) 1.0 and F. Yergeau, "Extensible Markup Language (XML) 1.0
(Third Edition)", W3C Recommendation, February 2004. (Third Edition)", W3C Recommendation, February 2004.
[XMLSchema:Part2] [XMLSchema:Part2]
Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes
Second Edition", W3C Recommendation, October 2004. Second Edition", W3C Recommendation, October 2004.
13.2. Informative References 13.2. Informative References
[CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version [CCXML10] Auburn, R J., "Voice Browser Call Control: CCXML Version
1.0", W3C Working Draft (work in progress), January 2007. 1.0", W3C Candidate Recommendation (work in progress),
April 2010.
[H.248.9] "Gateway control protocol: Advanced media server [H.248.9] "Gateway control protocol: Advanced media server
packages", ITU-T Recommendation H.248.9. packages", ITU-T Recommendation H.248.9.
[I-D.ietf-mediactrl-mixer-control-package]
McGlashan, S., Melanchuk, T., and C. Boulton, "A Mixer
Control Package for the Media Control Channel Framework",
draft-ietf-mediactrl-mixer-control-package-11 (work in
progress), February 2010.
[I-D.ietf-xcon-common-data-model] [I-D.ietf-xcon-common-data-model]
Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen, Novo, O., Camarillo, G., Morgan, D., and J. Urpalainen,
"Conference Information Data Model for Centralized "Conference Information Data Model for Centralized
Conferencing (XCON)", draft-ietf-xcon-common-data-model-18 Conferencing (XCON)", draft-ietf-xcon-common-data-model-20
(work in progress), February 2010. (work in progress), October 2010.
[IANA] "IANA registry for RTP Payload Types", [IANA] "IANA registry for RTP Payload Types",
<http://www.iana.org/assignments/rtp-parameters>. <http://www.iana.org/assignments/rtp-parameters>.
[MIME.mediatypes] [MIME.mediatypes]
"IANA registry for MIME Media Types", "IANA registry for MIME Media Types",
<http://www.iana.org/assignments/media-types/>. <http://www.iana.org/assignments/media-types/>.
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
Languages", BCP 18, RFC 2277, January 1998.
[RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio [RFC2897] Cromwell, D., "Proposal for an MGCP Advanced Audio
Package", RFC 2897, August 2000. Package", RFC 2897, August 2000.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E. A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261, Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002. June 2002.
[RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network [RFC4240] Burger, E., Van Dyke, J., and A. Spitzer, "Basic Network
Media Services with SIP", RFC 4240, December 2005. Media Services with SIP", RFC 4240, December 2005.
skipping to change at page 150, line 34 skipping to change at page 156, line 22
[RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server [RFC5022] Van Dyke, J., Burger, E., and A. Spitzer, "Media Server
Control Markup Language (MSCML) and Protocol", RFC 5022, Control Markup Language (MSCML) and Protocol", RFC 5022,
September 2007. September 2007.
[RFC5167] Dolly, M. and R. Even, "Media Server Control Protocol [RFC5167] Dolly, M. and R. Even, "Media Server Control Protocol
Requirements", RFC 5167, March 2008. Requirements", RFC 5167, March 2008.
[RFC5707] Saleem, A., Xin, Y., and G. Sharratt, "Media Server Markup [RFC5707] Saleem, A., Xin, Y., and G. Sharratt, "Media Server Markup
Language (MSML)", RFC 5707, February 2010. Language (MSML)", RFC 5707, February 2010.
[VXML20] McGlashan, S., Burnett, D., Carter, J., Danielsen, P., [VXML30] McGlashan, S., Burnett, D., Akolkar, R., Auburn, RJ.,
Ferrans, J., Hunt, A., Lucas, B., Porter, B., Rehor, K., Baggia, P., Barnett, J., Bodell, M., Carter, J., Oshry,
and S. Tryphonas, "Voice Extensible Markup Language M., Rehor, K., Young, M., and R. Hosn, "Voice Extensible
(VoiceXML) Version 2.0", W3C Recommendation, March 2004. Markup Language (VoiceXML) Version 3.0", W3C Working
Draft, August 2010.
[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.
[VXML30] McGlashan, S., Auburn, RJ., Baggia, P., Barnett, J.,
Bodell, M., Burnett, D., Carter, J., Oshry, M., Rehor, K.,
Young, M., and R. Hosn, "Voice Extensible Markup Language
(VoiceXML) Version 3.0", W3C Working Draft, December 2008.
Authors' Addresses Authors' Addresses
Scott McGlashan Scott McGlashan
Hewlett-Packard Hewlett-Packard
Email: smcg.stds01@mcglashan.org Email: smcg.stds01@mcglashan.org
Tim Melanchuk Tim Melanchuk
Rain Willow Communications Rain Willow Communications
 End of changes. 144 change blocks. 
721 lines changed or deleted 1011 lines changed or added

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