One document matched: draft-boulton-ivr-vxml-control-package-01.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2616 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2616.xml'>
<!ENTITY rfc3261 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml'>
<!ENTITY rfc3262 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3262.xml'>
<!ENTITY rfc3263 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3263.xml'>
<!ENTITY rfc3264 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3264.xml'>
<!ENTITY rfc4240 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4240.xml'>
<!ENTITY rfc2396 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2396.xml'>
<!ENTITY rfc2897 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2897.xml'>
<!ENTITY rfc4574 PUBLIC ''
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4574.xml'>
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>
<rfc category="std" docName="draft-boulton-ivr-vxml-control-package-01" ipr="full3978">
<front>
<title abbrev="Media Server Control Package">A VoiceXML Interactive
Voice Response (IVR) Control Package for the Session
Initiation Protocol (SIP)</title>
<author fullname="Chris Boulton" initials="C." surname="Boulton">
<organization>Ubiquity Software Corporation</organization>
<address>
<postal>
<street>Building 3</street>
<street>Wern Fawr Lane</street>
<street>St Mellons</street>
<city>Cardiff</city>
<region>South Wales</region>
<code>CF3 5EA</code>
</postal>
<email>cboulton@ubiquitysoftware.com</email>
</address>
</author>
<author fullname="Tim Melanchuk" initials="T." surname="Melanchuk">
<organization>BlankSpace</organization>
<address>
<email>tim.melanchuk@gmail.com</email>
</address>
</author>
<author fullname="Scott McGlashan" initials="S." surname="McGlashan">
<organization>Hewlett-Packard</organization>
<address>
<postal>
<street>Gustav III:s boulevard 36</street>
<city>SE-16985 Stockholm</city>
<region>Sweden</region>
</postal>
<email>scott.mcglashan@hp.com</email>
</address>
</author>
<author fullname="Asher Shiratzky" initials="A." surname="Shiratzky">
<organization>Radvision</organization>
<address>
<postal>
<street>24 Raoul Wallenberg st</street>
<city>Tel-Aviv</city>
<region>Israel</region>
</postal>
<email>ashers@radvision.com</email>
</address>
</author>
<date year="2006"/>
<workgroup/>
<abstract>
<t>This document defines a Session Initiation (SIP) Control
Package for Interactive Voice Response (IVR) interaction
using VoiceXML. This Control Package provides IVR
functionality using the SIP Control Framework and extends
the Basic IVR control package with support for VoiceXML
dialogs. </t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>The SIP Control Framework <xref target="SIPCF"/> provides a generic
approach for establishment and reporting capabilities of remotely
initiated commands. The Framework utilizes many functions provided by
the Session Initiation Protocol <xref target="RFC3261"/> (SIP) for the
rendezvous and establishment of a reliable channel for control
interactions. The Control Framework also introduces the concept of a
Control Package. A Control Package is an explicit usage of the Control
Framework for a particular interaction set.
</t>
<t>This specification defines a package for IVR functions using VoiceXML
dialogs <xref target="VXML20"/>. As a recognized international standard
for IVR dialogs, VoiceXML is used extensively within media server
control languages (cf. <xref target="MSCP"/>, <xref target="CCXML10"/>,
<xref target="MSML"/>, <xref target="MSCML"/>, <xref
target="RFC4240"/>). To ensure interoperability, if a media server
supports this package, then it MUST support VoiceXML 2.0 dialog
scripts. It MAY support later versions of VoiceXML or other dialog
script formats. </t>
<t> The VoiceXML package extends the basic IVR control package (<xref
target="BASICIVRCP"/>). The extensions only affect the
<dialogprepare> and <dialogstart> elements: in particular,
<list style="numbers">
<t>dialog scripts may also be specified inline using a child <src> element</t>
<t>a type attribute is introduced with the default value "application/voicexml+xml" </t>
<t>HTTP fetching and caching of dialog scripts can be configured using
attributes of a child <httpparams> element</t>
</list>
Otherwise, this package follows precisely the syntax and semantics of
the basic IVR control package.
</t>
<t>Other control packages may be defined which extend the capabilities
of the control package defined in this document. Such control package
must respect the syntax and semantics of this control package.
</t>
</section>
<section anchor="terminology" title="Conventions and Terminology">
<t>In this document, <xref target="RFC2119">BCP 14/RFC 2119</xref>
defines the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",
and "OPTIONAL". In addition, BCP 15 indicates requirement levels for
compliant implementations. </t>
<t>The following additional terms are defined for use in this document:
<list style="hanging">
<t hangText="Dialog:">A dialog performs media interaction with a user. A
dialog is identified by a URI and has an associated mimetype. Dialogs
typically feature basic capabilities such as playing audio prompts,
collecting DTMF input and recording audio input from the user. More
advanced dialogs may also feature synthesized speech, recording and
playback of video, recognition of spoken input, and mixed initiative
conversations.</t>
<t hangText="Application server:">A SIP <xref target="RFC3261"/>
application server (AS) hosts and executes services such as interactive
media and conferencing in an operator's network. An AS influences and
impacts the SIP session, in particular by terminating SIP sessions on a
media server, which is under its control.</t>
<t hangText="Media Server:">A media server (MS) processes media streams
on behalf of an AS by offering functionality such as interactive media,
conferencing, and transcoding to the end user. Interactive media
functionality is realized by way of dialogs, which are identified by a
URI and initiated by the application server. </t>
</list>
</t>
</section>
<section anchor="sec:Control_Package_Definition" title="Control Package
Definition">
<t>This section fulfills the mandatory requirement for information that
MUST be specified during the definition of a Control Framework Package,
as detailed in Section 9 of <xref target="SIPCF"/>.</t>
<section anchor="sec:Control_Package_Name" title="Control Package Name">
<t>The Control Framework requires a Control Package definition to
specify and register a unique name and version.</t>
<t>The name and version of this Control Package is "msc-ivr-vxml/1.0"
(Media Server Control - Interactive Voice Response - VoiceXML - version 1.0
). </t>
</section>
<section anchor="sec:Message_Usage" title="Framework Message Usage">
<t>IVR functionality includes capabilities such as playing prompts,
collecting DTMF and recording user input. These functions are expressed
in VoiceXML dialogs. </t>
<t>This package defines XML elements in <xref target="definitions"/> and
provides an XML Schema in <xref target="schema"/>.
</t>
<t>The XML elements in this package are split into requests, responses
and event notifications.
Requests are carried in CONTROL message bodies; <dialogprepare>,
<dialogstart> and <dialogterminate> elements are defined as
package requests.
Responses are carried either in REPORT message or Control Framework
200 response bodies; the <response> element is defined as a
package response.
Event notifications are also carried in REPORT message bodies; the
<event> element is defined for package event notifications.
</t>
<t>Note that package responses are different from framework response
codes. Framework error response codes (see Section 8 of <xref
target="SIPCF"/>) are used when the request or event notification is
invalid; for example, a request is invalid XML (400), or not
understood (500). Package responses are carried in 200 response or
REPORT message bodies. This package's response codes are defined in
<xref target="defn.response"/>. </t>
<t>
The schema uses "connection-id" and "conf-id" attributes which are
imported from schema defined in core Control Framework <xref
target="SIPCF"/>.
</t>
</section>
<section anchor="sec:Common_XML" title="Common XML Support">
<t>The Control Framework requires a Control Package definition to
specify if the attributes for media dialog or conference references are
required.</t>
<t>This package requires that the XML Schema in Section 16.1 of <xref
target="SIPCF"/> MUST be supported for media dialogs and conferences. </t>
</section>
<section anchor="sec:Control_Body" title="CONTROL Message Body">
<t>A valid CONTROL body message MUST conform to the schema defined in
<xref target="schema"/> and described in <xref
target="definitions"/>. XML messages appearing in CONTROL messages
MUST contain a <dialogprepare>, <dialogstart> or
<dialogterminate> request element (<xref
target="defn.requests"/>). </t>
</section>
<section anchor="sec:REPORT_Body" title="REPORT Message Body">
<t>A valid REPORT body MUST conform to the schema defined in <xref
target="schema"/> and described in <xref target="definitions"/>. XML
messages appearing in REPORT messages MUST contain a <response>
(<xref target="defn.responses"/>), or a (notification) <event>
element (<xref target="defn.notifications"/>).
</t>
</section>
</section>
<section anchor="definitions" title="Element Definitions">
<t>This section defines the XML messages for this control package. </t>
<t>[Editors Note: since XML Schema may not be able to express all
constraints expressed in these definitions, in cases where there is
a difference in constraints, the definitions in the section take
priority.]</t>
<section anchor="defn.requests" title="Requests">
<t>The following request elements are defined:
<list style="hanging">
<t hangText="<dialogprepare>:"> prepare an IVR dialog for
later execution </t>
<t hangText="<dialogstart>:"> start an IVR dialog on a
connection or conference</t>
<t hangText="<dialogterminate>:">terminate an active IVR dialog</t>
</list>
</t>
<section anchor="defn.dialogprepare" title="<dialogprepare>">
<t>The <dialogprepare> request is sent from the AS to the MS to
request preparation of an IVR dialog. A prepared dialog is executed when
the AS sends a <dialogstart> request referencing the prepared dialog
(see <xref target="defn.dialogstart"/>).</t>
<t>A <dialogprepare> element has the following attributes:
<list style="hanging">
<t hangText="src:">string identifying the URI of the dialog document to
prepare. The attribute is mandatory. The MS MUST support VoiceXML 2.0
dialogs and MAY support later versions of VoiceXML or other dialog
types. </t>
<t hangText="type:">string identifying the MIME type of the
document. The default value is "application/voicexml+xml". The
attribute is optional. </t>
<t hangText="dialogid:">string indicating a unique name for the
dialog. If this attribute is not specified, the MS creates a unique
name for the dialog. The value is used in subsequent references to
the dialog (e.g. as dialogid in a <response>). It is an error if
a dialog with the same name already exists on the MS.
The attribute is optional. </t>
</list>
</t>
<t>The <dialogprepare> element has the following child elements:
<list style="hanging">
<t hangText="<data>:">an XML data structure (see <xref
target="defn.data"/>) to pass parameters into the dialog. It is
an error if a specified parameter is not supported by the implementation.
The element is optional. </t>
<t hangText="<subscribe>:">an XML data structure (see <xref
target="defn.subscribe"/>) indicating notification events to which
the AS subscribes. It is an error if a specified notification event
is not supported by the implementation. The element is
optional. </t>
<t hangText="<src>:">contains the dialog script itself; e.g. a
VoiceXML document. The MS MUST support VoiceXML 2.0 dialogs and
MAY support later versions of VoiceXML or other dialog types. The
element is optional. </t>
<t hangText="<httpparams>:">contains attributes to configure HTTP 1.1
<xref target="RFC2616"/> fetching and caching.
<list style="hanging">
<t hangText="maxage:">string defining a time interval according to the
max-age parameter in HTTP. The attribute is optional.</t>
<t hangText="maxstale:">string defining a time interval according to the
max-stale parameter in HTTP. The attribute is optional.</t>
<t hangText="enctype:">string identifying the encoding type of the
submitted document. The default value is
"application/x-www-form-url-encoded". The attribute is optional. </t>
<t hangText="method:">string indicating the HTTP method to
use. Permitted values are "post" or "get". The default value is
"get". The attribute is optional. </t>
</list>
The element is optional.
</t>
</list>
Exactly one of the src attribute or
the <src> element MUST be specified; otherwise, it is an error.
</t>
<t>
For example, a request to prepare a dialog where the dialog script is
indicated using the src attribute:
<figure><artwork>
<dialogprepare src="http://www.example.com/playprompt.vxml">
<data>
<item name="audio" value="/media/prompt1.wav"/>
</data>
</dialogprepare>
</artwork></figure>
Where the data parameter "audio" would be available in the VoiceXML
script as "connection.ccxml.values.audio" so different prompts can be
played using the same dialog script.
</t>
<t>In the following example, the VoiceXML dialog script is specified
inline:
<figure><artwork>
<dialogprepare>
<src>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form id='main'>
<block>
<audio expr="http://www.example.com/media/prompt1.wav"/>
<exit/>
</block>
</form>
</vxml>
</src>
</dialogprepare>
</artwork></figure>
</t>
<t>When an MS has successfully received a <dialogprepare> request, it
MUST reply with a <response> element (<xref
target="defn.responses"/>).
</t>
</section>
<section anchor="defn.dialogstart" title="<dialogstart>">
<t>The <dialogstart> element is sent by the AS to request execution
of a dialog. The dialog may be defined in the dialogstart request
itself, or reference a previously prepared dialog. </t>
<t>The <dialogstart> element has the following attributes:
<list style="hanging">
<t hangText="src:"> string identifying the URI of the dialog document to
start. The attribute is optional. The MS MUST support VoiceXML 2.0
dialogs and MAY support later versions of VoiceXML or other dialog
types. </t>
<t hangText="type:">string identifying the MIME type of the
document. The default value is "application/voicexml+xml". The attribute
is optional. </t>
<t hangText="dialogid:">string indicating a unique name for the
dialog. If this attribute is not specified, the MS creates a unique
name for the dialog. The value is used in subsequent references to
the dialog (e.g. as dialogid in a <response>). It is an error if
a dialog with the same name already exists on the MS.
The attribute is optional.
</t>
<t hangText="prepareddialogid:">string identifying a dialog previously
prepared using a dialogprepare request. The attribute is optional.</t>
<t hangText="connection-id:">string identifying the SIP dialog
connection on which this dialog is to be started (see Section 16.1
of <xref target="SIPCF"/>). The attribute is optional. </t>
<t hangText="conf-id:">string identifying the conference on which this
dialog is to be started (see Section 16.1 of <xref
target="SIPCF"/>). The attribute is optional. </t>
</list>
</t>
<t>The <dialogstart> element has the following child elements
defined:
<list style="hanging">
<t hangText="<stream>:"> contains the following
attributes:
<list style="hanging">
<t hangText="media:">a string indicating the type of media
associated with the stream. It is strongly recommended that the
following values are used for common types of media: "audio" for
audio media, and "video" for video media. The attribute is
mandatory. </t>
<t hangText="label:">a string indicating the SDP label
associated with a media stream (<xref target="RFC4574"/>). The
attribute is optional. </t>
<t hangText="direction:">a string indicating the direction of
the media flow between a dialog and its end point conference or
connection. Defined values are: "sendrecv" (media can be sent
and received), "sendonly" (media can only be sent), and
"recvonly" (media can only be received). The default value is
"sendrecv". The attribute is optional. </t>
</list>
One or more <stream> elements may be specified so that individual
media streams can be controlled independently; for example, audio
only for transmission, but video only for reception.
The <stream> element is optional. If no <stream> elements are
specified, then the default is the media configuration of the
connection or conference.
It is an error if a <stream> element is in conflict with (a)
another <stream> element, (b) with dialog, connection or
conference media capabilities, or (c) with a SDP label value as part
of the connection-id (see Section 16.1 of <xref target="SIPCF"/>).
</t>
<t hangText="<data>:">an XML data structure (see <xref
target="defn.data"/>) to pass parameters into the dialog. It is
an error if a specified parameter is not supported by the
implementation. The element is optional. </t>
<t hangText="<subscribe>:">an XML data structure (see <xref
target="defn.subscribe"/>) indicating notification events to which
the AS subscribes. It is an error if a specified notification event
is not supported by the implementation.The element is optional. </t>
<t hangText="<src>:">contains the dialog script itself; e.g. a
VoiceXML document. The MS MUST support VoiceXML 2.0 dialogs and
MAY support later versions of VoiceXML or other dialog types. The
element is optional. </t>
<t hangText="<httpparams>:">contains attributes to configure HTTP 1.1
<xref target="RFC2616"/> fetching and caching.
<list style="hanging">
<t hangText="maxage:">string defining a time interval according to the
max-age parameter in HTTP. The attribute is optional.</t>
<t hangText="maxstale:">string defining a time interval according to the
max-stale parameter in HTTP. The attribute is optional.</t>
<t hangText="enctype:">string identifying the encoding type of the
submitted document. The default value is
"application/x-www-form-url-encoded". The attribute is optional. </t>
<t hangText="method:">string indicating the HTTP method to
use. Permitted values are "post" or "get". The default value is
"get". The attribute is optional. </t>
</list>
The element is optional.
</t>
</list>
</t>
<t>[Editors Note: the <stream> element assumes that the use of the
SDP label by itself is insufficent for media stream control. In
particular, the SDP label does not address directionality, nor does
it address conferences. Further investigation of the <stream> is
is required.] </t>
<t>If the prepareddialogid is specified, it is an error to specify the
src attribute, <src> element or the type attribute. </t>
<t>If the prepareddialogid is not specified, exactly one of the src
attribute or the <src> element MUST be specified; otherwise, it
is an error. </t>
<t>Exactly one of the connection-id or conf-id attributes MUST be
specified. It is an error to specify both connection-id and
conf-id.</t>
<t>If the prepareddialogid is specified and the <dialogprepare>
contained a <data> element, it is an error to specify it in
<dialogstart>. Likewise, If the prepareddialogid is specified and
the <dialogprepare> contained a <subscribe> element, it is an
error to specify it in <dialogstart>.
</t>
<t>For example, a request to start a dialog on a conference where the
dialog script is indicated using the src attribute:
<figure><artwork>
<dialogstart conf-id="conference11"
src="http://www.example.com/playprompt.vxml">
<data>
<item name="media" value="/media/prompt1.wav"/>
</data>
</dialogstart>
</artwork></figure>
Where the data parameter "media" would be available in the VoiceXML
script as "connection.ccxml.values.media" so different prompts can be
played using the same dialog script.
</t>
<t>In the following example, the VoiceXML dialog script is specified
inline.
<figure><artwork>
<dialogstart conf-id="conference11">
<src>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form id='main'>
<block>
<audio expr="http://www.example.com/media/prompt1.wav"/>
<exit/>
</block>
</form>
</vxml>
</src>
</dialogstart>
</artwork></figure>
</t>
<t>In this example, a previously prepared dialog with the dialogid
"vxi1" is started.
<figure><artwork>
<dialogstart prepareddialogid="vxi1" conf-id="conference11"/>
</artwork></figure>
</t>
<t>When an MS has successfully received a <dialogstart> request, it
MUST reply with a <response> element (<xref
target="defn.responses"/>). </t>
</section>
<section anchor="defn.dialogterminate" title="<dialogterminate>">
<t>A dialog that has been successfully prepared or started can be
terminated by a <dialogterminate> request element from the AS.</t>
<t>The <dialogterminate> element has the following attributes:
<list style="hanging">
<t hangText="dialogid:">string identifying an existing dialog. The
attribute is mandatory.</t>
<t hangText="immediate:">string with the values "true" or "false"
indicating whether the dialog is to be terminated immediately or
not. If a dialog is terminated immediately, no further dialog event
notifications are sent (including a dialogexit <event>). The default
is "false". The attribute is optional. </t>
</list>
</t>
<t>For example, assuming a dialog with the dialogid "vxi1" has been
started, it can be terminated immediately with the following request:
<figure><artwork>
<dialogterminate dialogid="vxi1" immediate="true"/>
</artwork></figure>
</t>
<t>When an MS has successfully received a <dialogterminate> request, it
MUST reply with a <response> element (<xref
target="defn.responses"/>). </t>
</section>
</section>
<section anchor="defn.responses" title="Responses">
<t>Responses are specified in a <response> element. </t>
<section anchor="defn.response" title="<response>">
<t>Reponses to requests are indicated by a <response> element. </t>
<t>The <response> element has following attributes:
<list style="hanging">
<t hangText="status:">numeric code indicating the response status. The
attribute is mandatory.</t>
<t hangText="reason:">string specifying a reason for the response
status. The attribute is optional. </t>
<t hangText="dialogid:">string identifying the dialog. The attribute is
optional.</t>
<t hangText="connection-id:">string identifying the SIP dialog
connection associated with the dialog (see Section 16.1 of <xref
target="SIPCF"/>). The attribute is optional.</t>
<t hangText="conf-id:">string identifying the conference associated with
the dialog (see Section 16.1 of <xref target="SIPCF"/>). The
attribute is optional.</t>
</list>
</t>
<t>The following status codes are defined: </t>
<texttable anchor="defn.response.statuscodes"
title="<response> status codes" >
<ttcol align="left" width="15%">code</ttcol>
<ttcol align="left" width="85%">description</ttcol>
<c>200</c>
<c>OK</c>
<c>401</c>
<c>dialogid already exists</c>
<c>402</c>
<c>dialogid does not exist</c>
<c>403</c>
<c>connection-id does not exist</c>
<c>404</c>
<c>conf-id does not exist</c>
<c>405</c>
<c>Unknown or unsupported element</c>
<c>406</c>
<c>Element required</c>
<c>407</c>
<c>Unknown or unsupported attribute</c>
<c>408</c>
<c>Attribute required</c>
<c>409</c>
<c>Invalid VoiceXML URI or content</c>
<c>410</c>
<c>data parameter not supported</c>
<c>411</c>
<c>event subscription not supported</c>
<c>412</c>
<c>stream parameter invalid</c>
<c>499</c>
<c>other error</c>
</texttable>
<t>[Editors Note: more status codes may need to be defined.]</t>
<t>For example, a response when a dialog was prepared successfully:
<figure><artwork>
<response status="200" dialogid="vxi1"/>
</artwork></figure>
</t>
<t>The response if dialog preparation failed due to an invalid VoiceXML script:
<figure><artwork>
<response status="409" dialogid="vxi1"
reason="HTTP 404: http://www.example.com/myscript.vxml"/>
</artwork></figure>
</t>
<t>For example, a response when the dialog was started successfully.
<figure><artwork>
<response status="200" dialogid="vxi1"
connection-id="7HDY839~HJKSkyHS"/>
</artwork></figure>
</t>
</section>
</section>
<section anchor="defn.notifications" title="Notifications">
<t>Event notifications are specified in an <event> element. </t>
<section anchor="defn.event" title="<event>">
<t>Dialog event notifications are either manual or automatic. </t>
<t> Manual event notifications are defined when an AS subscribes to
notifications for dialog events using the <subscribe> element of
<dialogprepare> or <dialogstart>. </t>
<t> Automatic event notifications are defined as part of a Control
Package. The AS SHOULD NOT subscribe to these event
notifications. The MS MUST support these event notifications. This
package defines one automatic notification event: "dialogexit" which
indicates that an active dialog has terminated. Note that this
notification is not sent if the dialog has been terminated by the AS
using a <dialogterminate/> request where "immediate=true". </t>
<t> When a dialog generates a notification event, the MS sends the event
to the AS using an <event> element. </t>
<t>The <event> element has the following attributes:
<list style="hanging">
<t hangText="name:">string indicating the name of dialog event. The
string is restricted to a sequence of alphanumeric or "."
characters. The attribute is mandatory. </t>
<t hangText="dialogid:">string identifying the dialog. The attribute is
mandatory. </t>
</list>
</t>
<t>The <event> element has the following child element:
<list style="hanging">
<t hangText="<data>:"> an XML data structure (see <xref
target="defn.data"/>) to pass information additional information
about the dialog event. The element is optional. </t>
</list>
</t>
<t>For example, when a dialog exits the MS may send a dialogexit
<event> with data collected during the VoiceXML dialog execution:
<figure><artwork>
<event name="dialogexit" dialogid="vxi1">
<data>
<item name="userinput" value="12345"/>
</data>
</event>
</artwork></figure>
</t>
</section>
</section>
<section anchor="defn.data" title="<data>">
<t>The <data> element is a general container for parameterized data.
</t>
<t>The <data> element has no attributes, but has the
following child elements defined:
<list style="hanging">
<t hangText="<item>:"> contains the following attributes:
<list style="hanging">
<t hangText="name:">a string indicating the name of the
parameter. The attribute is mandatory. </t>
<t hangText="value:">a string indicating the value of the
parameter. Multiple values of a parameters can be specified
using space separation. The attribute is mandatory. </t>
</list>
</t>
</list>
Multiple <item> elements may be specified. </t>
<t>For example, a <data> specifying parameters with simple values:
<figure><artwork>
<data>
<item name="initialuri" value="http://www.example.com/start.vxml"/>
<item name="timeout" value="10s"/>
</data>
</artwork></figure>
</t>
<t>[Editors Note: we may also want to investigate the use of
<item>s nested within a top-level <item> to specify complex
values. ]</t>
</section>
<section anchor="defn.subscribe" title="<subscribe>">
<t> The <subscribe> element is a container for specifying dialog
notification events to which an AS subscribes. Notifications of
dialog events are delivered using the <event> element (see <xref
target="defn.event"/>).
</t>
<t>The <subscribe> element has no attributes, but has the
following child elements defined:
<list style="hanging">
<t hangText="<notify>:"> contains the following attributes:
<list style="hanging">
<t hangText="name:">a string indicating the name of the event to
be notified of. The attribute is mandatory. </t>
</list>
The <notify> element may have a <data> child element. </t>
</list>
Multiple <notify> elements may be specified.
</t>
<t>For example, the AS wishes to subscribe to DTMF and bargein
notification events associated with a dialog:
<figure><artwork>
<dialogstart src="promptandcollect"
connection-id="7HDY839~HJKSkyHS~HUwkuh7ns">
<subscribe>
<notify name="dtmf"/>
<notify name="bargein"/>
</subscribe>
</dialogstart>
</artwork></figure>
If the MS supports these notification events, then it would use the
<event> element to send notifications during the dialog to the AS
when the events occured. </t>
<t>[Editors Note: It may be possible to define a general event
subscription mechanism as part of the SIP Control Framework.] </t>
<t>[Editors Note: This Control Package does not specify dialog
notification events apart from "dialogexit". Later versions may
define events such as: "dtmf" (a DTMF key is pressed), "mediastart"
(media playback started), "bargein" (user has barged in on a
prompt), and "rtpcontrol" (control data, e.g. VFU, PoC, etc, is
received over the RTP control channel.] </t>
</section>
</section>
<section anchor="schema" title="Formal Syntax">
<t>[Editors note: A later version of the XML schema may be reference
the basic IVR schema and specify the package extensions in terms of
schema extensions. ]</t>
<t>[Editors note: A later version of the XML schema will provide
more constraints as expressed in the textual definitions; for
example, single occurrence of <data> elements, co-occurence
on attributes, etc.]</t>
<figure>
<artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:ietf:params:xml:ns:msc-ivr-vxml"
xmlns:fw="urn:ietf:params:xml:ns:control:framework-attributes"
elementFormDefault="qualified"
xmlns="urn:ietf:params:xml:ns:msc-ivr-vxml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>
VoiceXML IVR 1.0 schema (20061019)
</xsd:documentation>
</xsd:annotation>
<xsd:import
namespace="urn:ietf:params:xml:ns:control:framework-attributes"
schemaLocation="framework.xsd"/>
<!-- MODIFIED DEFINITIONS -->
<xsd:element name="dialogprepare">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="src"/>
<xsd:element ref="httpparams"/>
<xsd:element ref="data"/>
<xsd:element ref="subscribe"/>
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="type" type="mime.datatype"/>
<xsd:attribute name="src" type="URI.datatype" use="required"/>
<xsd:attribute name="dialogid" type="dialogid.datatype"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="dialogstart">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="src"/>
<xsd:element ref="httpparams"/>
<xsd:element ref="stream"/>
<xsd:element ref="data"/>
<xsd:element ref="subscribe"/>
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="type" type="mime.datatype"/>
<xsd:attribute name="src" type="URI.datatype"/>
<xsd:attribute name="dialogid" type="dialogid.datatype"/>
<xsd:attribute name="prepareddialogid" type="dialogid.datatype"/>
<xsd:attributeGroup ref="fw:framework-attributes"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<!-- ADDITIONAL VXML DEFINITIONS -->
<xsd:simpleType name="mime.datatype">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:element name="src">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="httpparams">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="maxage" type="xsd:string"/>
<xsd:attribute name="maxstale" type="xsd:string"/>
<xsd:attribute name="enctype" type="xsd:string"
default="application/x-www-form-urlencoded"/>
<xsd:attribute name="method" type="method.datatype"
default="get"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="method.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="get"/>
<xsd:enumeration value="post"/>
</xsd:restriction>
</xsd:simpleType>
<!-- UNCHANGED BASIC IVR DEFINITIONS -->
<xsd:element name="dialogterminate">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="dialogid" type="dialogid.datatype"
use="required"/>
<xsd:attribute name="immediate" type="boolean.datatype"
default="false"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="response">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="status" type="status.datatype"
use="required"/>
<xsd:attribute name="reason" type="xsd:string"/>
<xsd:attribute name="dialogid" type="dialogid.datatype"/>
<xsd:attributeGroup ref="fw:framework-attributes"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="event">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="data"/>
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="name" type="eventname.datatype"
use="required"/>
<xsd:attribute name="dialogid" type="dialogid.datatype"
use="required"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<!-- DATATYPES -->
<xsd:simpleType name="URI.datatype">
<xsd:restriction base="xsd:anyURI"/>
</xsd:simpleType>
<xsd:simpleType name="dialogid.datatype">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="boolean.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="eventname.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="[a-zA-Z0-9\.]+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="status.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="[0-9][0-9][0-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="media.datatype">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="label.datatype">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="direction.datatype">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="sendrecv"/>
<xsd:enumeration value="sendonly"/>
<xsd:enumeration value="recvonly"/>
</xsd:restriction>
</xsd:simpleType>
<!-- SHARED ELEMENTS -->
<xsd:element name="data">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="item"/>
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="item">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="stream">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##other" processContents="strict"/>
</xsd:choice>
<xsd:attribute name="media" type="media.datatype"
use="required"/>
<xsd:attribute name="label" type="label.datatype"/>
<xsd:attribute name="direction" type="direction.datatype"
default="sendrecv" />
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="subscribe">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="notify"/>
</xsd:choice>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="notify">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element ref="data"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="strict"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
]]></artwork>
</figure>
</section>
<!-- Formal Syntax: XML Schema -->
<section title="Security Considerations">
<t>Security Considerations to be included in later versions of this document.</t>
</section>
<!-- Security Consideration -->
<section anchor="sec:IANA_Considerations" title="IANA Considerations">
<t>This document registers a new SIP Control Framework Package and a
new XML namespace.</t>
<section anchor="sec:Control_Package_Reg" title="Control Package Registration">
<t>Control Package name: msc-ivr-vxml/1.0</t>
</section>
<!-- Control Package Registration -->
<section anchor="sec:URN_Reg" title="URN Sub-Namespace Registration">
<t>XML namespace: urn:ietf:params:xml:ns:msc-ivr-vxml</t>
</section>
</section>
<section title="Change Summary">
<t>
The following are the primary changes between the -01 of the draft and
the -00 version.
<list style="symbols">
<t>Changes in Basic IVR package version 02 applied. </t>
</list>
</t>
</section>
<section title="Acknowledgments">
<t>TODO
</t>
</section>
</middle>
<back>
<references title="Normative References">
&rfc2119;
</references>
<references title="Informative References">
&rfc2616;
&rfc3261;
&rfc3262;
&rfc3263;
&rfc3264;
&rfc4240;
&rfc4574;
<reference anchor="MSCML">
<front>
<title> Media Server Control Markup Language (MSCML) and Protocol</title>
<author initials="J." surname="Van Dyke">
<organization>Brooktrout Technology, Inc.</organization>
</author>
<author initials="E." surname="Burger">
<organization>Brooktrout Technology, Inc.</organization>
</author>
<author initials="A." surname="Spitzer">
<organization>Brooktrout Technology, Inc.</organization>
</author>
<date month="June" year="2006" />
</front>
<seriesInfo name="IETF Internet-Draft"
value="draft-vandyke-mscml-09"/>
</reference>
<reference anchor="SIPCF">
<front>
<title>A Control Framework for the Session Initiation
Protocol (SIP) </title>
<author initials="C." surname="Boulton">
<organization>Ubiquity Software Corporation</organization>
</author>
<author initials="T." surname="Melanchuk">
<organization>BlankSpace</organization>
</author>
<author initials="S." surname="McGlashan">
<organization>Hewlett-Packard</organization>
</author>
<author initials="A." surname="Shiratzky">
<organization>Radvision</organization>
</author>
<date month="October" year="2006" />
</front>
<seriesInfo name="IETF Internet-Draft" value="draft-boulton-sip-control-framework-04" />
</reference>
<reference anchor="BASICIVRCP">
<front>
<title>A Basic Interactive Voice Response (IVR) Control Package for the Session
Initiation Protocol (SIP)</title>
<author initials="C." surname="Boulton">
<organization>Ubiquity Software Corporation</organization>
</author>
<author initials="T." surname="Melanchuk">
<organization>BlankSpace</organization>
</author>
<author initials="S." surname="McGlashan">
<organization>Hewlett-Packard</organization>
</author>
<author initials="A." surname="Shiratzky">
<organization>Radvision</organization>
</author>
<date month="October" year="2006" />
</front>
<seriesInfo name="IETF Internet-Draft" value="draft-boulton-ivr-control-package-02" />
</reference>
<reference anchor="CCXML10">
<front>
<title>Voice Browser Call Control: CCXML Version 1.0</title>
<author initials="R J" surname="Auburn">
<organization> </organization>
</author>
<date month="June" year="2005" />
</front>
<seriesInfo name="W3C" value="Working Draft (work in progress)" />
</reference>
<reference anchor="VXML20">
<front>
<title>Voice Extensible Markup Language (VoiceXML) Version 2.0</title>
<author initials="S" surname="McGlashan">
<organization> </organization>
</author>
<author initials="D" surname="Burnett">
<organization> </organization>
</author>
<author initials="J" surname="Carter">
<organization> </organization>
</author>
<author initials="P" surname="Danielsen">
<organization> </organization>
</author>
<author initials="J" surname="Ferrans">
<organization> </organization>
</author>
<author initials="A" surname="Hunt">
<organization> </organization>
</author>
<author initials="B" surname="Lucas">
<organization> </organization>
</author>
<author initials="B" surname="Porter">
<organization> </organization>
</author>
<author initials="K" surname="Rehor">
<organization> </organization>
</author>
<author initials="S" surname="Tryphonas">
<organization> </organization>
</author>
<date month="March" year="2004" />
</front>
<seriesInfo name="W3C" value="Recommendation" />
</reference>
<reference anchor="MSML">
<front>
<title>Media Session Markup Language (MSML)</title>
<author initials='A' surname="Saleem">
<organization>Convedia</organization>
</author>
<author initials='G' surname="Sharratt">
<organization>Convedia</organization>
</author>
<date month="June" year="2006" />
</front>
<seriesInfo name="IETF Internet-Draft"
value="draft-saleem-msml-01" />
</reference>
<reference anchor="MSCP">
<front>
<title>Media Server Control Protocol (MSCP)</title>
<author initials='S.' surname="McGlashan">
<organization>Hewlett-Packard</organization>
</author>
<author initials='R. J.' surname="Auburn">
<organization>Voxeo</organization>
</author>
<author initials='D.' surname="Burke">
<organization>Voxpilot</organization>
</author>
<author initials='E.' surname="Candell">
<organization>Comverse</organization>
</author>
<author initials='R.' surname="Surapaneni">
<organization>Tellme Networks</organization>
</author>
<date month="July" year="2006" />
</front>
<seriesInfo name="IETF Internet-Draft"
value="draft-mcglashan-mscp-02" />
</reference>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 04:10:05 |