Internet DRAFT - draft-engelsma-dmsp
draft-engelsma-dmsp
Internet Engineering Task Force J. Engelsma
Internet-Draft Motorola
Expires: February 1, 2008 C. Cross
IBM
July 31, 2007
Distributed Multimodal Synchronization Protocol
draft-engelsma-dmsp-04.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on February 1, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
This document proposes a Distributed Multimodal Synchronization
Protocol (DMSP) designed to enable multimodal interaction for mobile
devices by accessing services in the network. More specifically,
this protocol coordinates events of interest between a visual browser
or application running on a mobile device with a VoiceXML (Voice
Extensible Markup Language) browser running in the network.
Engelsma & Cross Expires February 1, 2008 [Page 1]
Internet-Draft DMSP Protocol July 2007
Table of Contents
1. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. System Architecture . . . . . . . . . . . . . . . . . . . . . 4
3.1. Multimodal Mark-up Language . . . . . . . . . . . . . . . 5
3.2. VoIP Audio Session Control . . . . . . . . . . . . . . . . 5
3.3. Distributed Speech Audio Format . . . . . . . . . . . . . 5
3.4. Distributed Speech Engine Protocol . . . . . . . . . . . . 5
3.5. View Independent Model . . . . . . . . . . . . . . . . . . 6
3.6. Distributed Multimodal Synchronization Protocol (DMSP) . . 6
4. The Distributed Multimodal Synchronization Protocol . . . . . 6
4.1. Conceptual Framework for DMSP . . . . . . . . . . . . . . 8
4.2. Binary Message Encodings . . . . . . . . . . . . . . . . . 9
4.2.1. Intrinsic Data Types . . . . . . . . . . . . . . . . . 9
4.2.2. Message Type Constants and Basic Structures . . . . . 9
4.2.3. Signal Messages . . . . . . . . . . . . . . . . . . . 15
4.2.4. Command Messages . . . . . . . . . . . . . . . . . . . 18
4.2.5. Response Messages . . . . . . . . . . . . . . . . . . 26
4.2.6. Event Messages . . . . . . . . . . . . . . . . . . . . 29
4.3. XML Message Encoding . . . . . . . . . . . . . . . . . . . 37
4.4. State Machines . . . . . . . . . . . . . . . . . . . . . . 37
4.4.1. GUI User Agent State Machine . . . . . . . . . . . . . 39
4.4.2. VoiceXML User Agent State Machine . . . . . . . . . . 49
5. Message Transport . . . . . . . . . . . . . . . . . . . . . . 60
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60
7. Security Considerations . . . . . . . . . . . . . . . . . . . 60
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 60
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9.1. Normative References . . . . . . . . . . . . . . . . . . . 61
9.2. Informative References . . . . . . . . . . . . . . . . . . 61
Appendix A. Schema for XML Message Encoding . . . . . . . . . . . 63
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 71
Intellectual Property and Copyright Statements . . . . . . . . . . 73
Engelsma & Cross Expires February 1, 2008 [Page 2]
Internet-Draft DMSP Protocol July 2007
1. Conventions
The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL, when
they appear in this document, are to be interpreted as described in
RFC 2119 [2].
The following acronyms are used in this document:
3GPP - 3rd Generation Partnership Project
ASR - Automatic Speech Recognition
DMSP - Distributed Multimodal Synchronization Protocol
DOM - Document Object Model
DSR - Distributed Speech Recognition
ETSI - European Telecommunications Standards Institute
GUA - GUI User Agent
GUI - Graphical User Interface
IM - Interaction Manager
HTTP - Hypertext Transport Protocol
J2ME - Java 2 Platform, Micro Edition
MRCP - Media Resource Control Protocol
MVC - Model-View-Controller
OMA - Open Mobile Alliance
SIP - Session Initiation Protocol
TTS - Text-To-Speech Synthesis
VUA - VoiceXML User Agent
VUI - Voice User Interface
VXML - VoiceXML (Voice Extensible Markup Language 2.0)
W3C - World-Wide Web Consortium
2. Introduction
The advancement of wireless networking, mobile computing, and voice
processing technologies have created a mobile computing environment
where access to network based content and services is possible from
mobile devices. While the compact form factor of these devices is an
essential and desirable characteristic from the mobility perspective,
it unfortunately gives rise to a "user interface bottleneck". That
is, the small displays and limited keypads are significant barriers
to usability. The aim of multimodal user interfaces is to enhance
the usability of mobile devices.
The term "multimodal interface" in the context of this specification
refers to augmenting the existing graphical user interface (GUI) of
mobile devices with a voice user interface (VUI). In this way, the
strengths of one modality offset the weaknesses of the other. For
example, use speech to enter data that would be tedious to enter on a
Engelsma & Cross Expires February 1, 2008 [Page 3]
Internet-Draft DMSP Protocol July 2007
small keypad. Similarly, use tactile input to disambiguate or
confirm speech recognition results, or in lieu of speech recognition
in a noisy environment. Speech output also improves the
accessibility of mobile applications for visually impaired users and
is a means for addressing growing safety concerns by providing hands-
free operation. A visual display helps the user better retain and
interpret information presented audibly via speech prompts.
Section 3 elaborates on a broad architectural framework that combines
the existing web and VoiceXML (Voice Extensible Markup Language) [5]
ecosystems and the industry standards upon which they are based. The
scope of this specification is limited to one particular
architectural configuration within this framework: the coordination
of a GUI browser or application running on a mobile device with a
VoiceXML browser running in the network. The Distributed Multimodal
Synchronization Protocol (DMSP) accomplishes this and is fully
specified in Section 4. Section 5 introduces transport possibilities
for DMSP, and Section 6 and Section 7 take up IANA and Security
considerations, respectively.
3. System Architecture
A mobile device multimodal reference architecture enables multimodal
interaction for mobile devices that are used to access web
applications and data. The architectures under development by
various standards bodies acknowledge that devices, networks, and
servers may distribute the workload based on the capabilities of the
components. The W3C Multimodal Interaction Working Group has
published a working draft[6] that addresses the distribution of
modalities and employs an Interaction Manager to coordinate and
synchronize user interface events. The Open Mobile Alliance (OMA)
Browser and Content, Mobile Application Environment (BAC MAE) group
has published an architecture document[7] that lays out the
relationship of components, interfaces, and protocols necessary to
implement multimodal solutions through the interoperation of
components from diverse vendors.
Both the W3C and OMA assemble relevant standards from the W3C and
IETF and both identify the need for a synchronization protocol to be
created as a standard in order to enable the desired open and
heterogeneous computing environment. This submission documents such
a protocol.
With this in mind, the following areas are identified for
standardization:
Engelsma & Cross Expires February 1, 2008 [Page 4]
Internet-Draft DMSP Protocol July 2007
1. Multimodal Mark-up Language
2. Voice Over IP (VoIP) Audio Session Control
3. Distributed Speech Audio Format
4. Distributed Speech Engine Control Protocol
5. View Independent Model
6. Distributed Modality Synchronization Protocol
At the present we identify all of these areas having standardization
activity with the exception of the distributed multimodal
synchronization protocol. This submission proposes such a protocol.
3.1. Multimodal Mark-up Language
The mark-up language for multimodal web applications is currently in
progress in the W3C. W3C Multimodal Interaction Activity.
http://www.w3c.org.
3.2. VoIP Audio Session Control
This is the signaling protocol for configurations that use
distributed voice services. The Session Initiation Protocol (SIP),
RFC 3261[13] specified by the IETF's SIP Working Group is the
preferred choice for this.
3.3. Distributed Speech Audio Format
This is the media format of the audio data for configurations that
use network based speech engines. Existing media frameworks such as
RTP in the IETF provide protocols for the transport of compressed
speech or distributed speech recognition (DSR) features such as those
standardised by European Telecommunications Standards Institute
(ETSI) Aurora[16][17] and 3rd Generation Partnership Project (3GPP).
http://www.etsi.org, http://www.3gpp.org.
3.4. Distributed Speech Engine Protocol
This is the protocol for accessing and controlling speech engines in
configurations that use distributed speech engines. The IETF Working
Group on Speech Services Control created the Media Resource Control
Protocol (MRCP) Version 2[21].
Engelsma & Cross Expires February 1, 2008 [Page 5]
Internet-Draft DMSP Protocol July 2007
3.5. View Independent Model
This is the data model used in a multimodal system to which all the
modalities synchronize. The W3C DOM satisfies this requirement with
DOM 2 Events[22] being the mechanism for interfacing with modalities.
3.6. Distributed Multimodal Synchronization Protocol (DMSP)
This is the protocol for synchronizing a GUI user agent (GUA) with a
remote VoiceXML user agent (VUA). That is, this protocol enables the
rendering of VoiceXML markup to be distributed over a wired or
wireless connection to network based voice servers. In general, the
protocol supports the synchronization and data exchange requirements
of web based multimodal applications. Since the reference
architectures are based on a Model-View-Controller (MVC) pattern,
this protocol needs to support both network based and client based
View Independent Models.
4. The Distributed Multimodal Synchronization Protocol
The goal of the Distributed Multimodal Synchronization Protocol
(DMSP) is to provide an open infrastructure for multimodal
interaction based on a loosely coupled web-based architecture.
Instead of developing a new multimodal browser from scratch, we adopt
the strategy of coordinating existing and well-established single-
modality browsers which together form a multimodal super-browser.
There are two architectural configurations of interest that are
enabled by the protocol:
1. The distributed client approach where a GUI browser or other user
agent running on a mobile device coordinates with a VoiceXML
browser running in the network in a peer-to-peer fashion.
2. The approach that uses an Interaction Manager hosted in the
network to coordinate synchronization between distributed user
agents supporting separate modalities.
The first configuration of interest here is that of a web browser or
other GUI user agent on a mobile device that is coordinated with a
VoiceXML browser in the network, as shown in Figure 2. In this
configuration, the abstract interfaces can be thought of as message
classes, where each method on the interface is represented with a
message type. DMSP is therefore a concrete specification of these
abstract interfaces in the form of messages.
Engelsma & Cross Expires February 1, 2008 [Page 6]
Internet-Draft DMSP Protocol July 2007
+-------------+ +---------------+
| |--commands-----------> O------| |
| | CommandControl| |
| GUI Browser |--registration-------> O------| Voice Browser |
| | EventControl| |
| |------O <-------------events--| |
| |EventListener | |
+-------------+ +---------------+
A GUI-browser driven multimodal browser.
Figure 2
The second configuration shown in Figure 3 employs an Interaction
Manager to effect a loosely coupled coordination of user agents
across the network. The IM collects user interface events in one
mode and publishes them to the other modes being synchronized. In
the example, the GUI User Agent and the Voice User Agent each
constitute one interaction mode. In this context the IM is
responsible for:
1. Receiving events and signals from one user agent.
2. Finding appropriate action to take to reflect that user
interaction in all other user agents.
3. Dispatching cross-markup events and event handlers from one user
agent to another.
Engelsma & Cross Expires February 1, 2008 [Page 7]
Internet-Draft DMSP Protocol July 2007
+-------------+ +---------------+
| (CC)|--O <-2----+ +----2-> O--|(CC) |
| | | | | |
| GUI Browser | | | | Voice Browser |
| (EL)|--O <-1--+ | | +--1-> O--|(EL) |
| | | | | | | |
| |--+ | | | | +--| |
+-------------+ | | | | | | +---------------+
| | | | | |
| | | | | |
| +-------------+ |
| | | |
| | Interaction | |
| | Manager | |
| | | |
+-> O-|(EL) (EL)|-O <-+
| |
+-------------+
An Interaction Manger Controlled Multimodal System
Legend:
(CC) - CommandControl
(EL) - EventListener
1 - Registration
2 - Commands
3 - Events
Figure 3
4.1. Conceptual Framework for DMSP
The two architectural configurations show above can be realized with
four basic abstract interfaces: Command, Response, Event, and Signal.
Each of these interfaces define a set of methods and related data
structures which can be exchanged between the user agents of a
particular multimodal system. Signals are one-way methods used to
negotiate internal processing state among entities. While responses
are not anticipated in the typical sunny day scenario, a signaled
entity may invoke a response method of the sender when an error
occurs during signal processing. Incorporating rudimentary signaling
Engelsma & Cross Expires February 1, 2008 [Page 8]
Internet-Draft DMSP Protocol July 2007
mechanisms into the protocol provides flexibility with regard to the
transport mechanism an implementation of the protocol uses. When an
entity invokes a Command method of another entity in the system, it
anticipates a correlated call on its Response interface. The methods
of Event interfaces serve as asynchronous notifications. Typically,
one or more events can occur as a result of a Command method
invocation. The entities within a particular multimodal system may
register to listen to events generated by other entities within the
system.
While a variety of architectural configurations can be realized with
these basic abstractions, the primary focus of the protocol and state
machine specifications that follow is the synchronization of a GUA
with a remote VUA as shown previously in Figure 2. In this
particular configuration, the abstract interfaces can be thought of
as message classes, where each method on the interface is represented
with a message type. DMSP is therefore a concrete specification of
these abstract interfaces in the form of messages.
We present two encodings for DMSP, binary and XML. Given the low
bandwidth of conventional wide area mobile packet data networks and
limited memory and processing resources of the vast majority of
mobile devices in use today, a simple and compact binary message set
is appropriate for mobile devices communicating with a VoiceXML user
agent on the network. For Interaction Manager based systems, the IM
and Voice Server may be implemented on a high speed network where
other design considerations dominate over bandwidth and memory.
Therefore we also present XML bindings in the form of an XML schema
in Appendix A as an option for implementers of those systems.
4.2. Binary Message Encodings
4.2.1. Intrinsic Data Types
Boolean data is encoded as a single byte having either a 0x00 (false)
or 0x01 (true) value. Integer data is encoded in big-endian variable
length fields, depending on the maximum range of values allowed for
the field in question. Integer field lengths must be 1, 2, 4, or 8
bytes long. String data is encoded using a 2-byte (big-endian)
length prefix followed by the specified number of bytes of UTF8-
encoded character data. The longest string that may be transferred
using this encoding is 65535 characters, assuming none of the
characters requires more than one byte.
4.2.2. Message Type Constants and Basic Structures
The remainder of this section defines the various message type
constants and basic structures reused by several messages.
Engelsma & Cross Expires February 1, 2008 [Page 9]
Internet-Draft DMSP Protocol July 2007
Section 4.2.3 - Section 4.2.6 define the messages themselves.
4.2.2.1. Message Types
+--------------+-------+
| Message Type | Value |
+--------------+-------+
| MSG_SIGNAL | 0x01 |
| MSG_COMMAND | 0x02 |
| MSG_RESPONSE | 0x03 |
| MSG_EVENT | 0x04 |
+--------------+-------+
Table 1: Message Types
4.2.2.2. Signal Message Subtypes
+----------------+-------+---------------+
| Message Type | Value | Note |
+----------------+-------+---------------+
| SIG_INIT | 0x01 | See Table 10. |
| SIG_VXML_START | 0x02 | See Table 11. |
| SIG_CLOSE | 0x03 | See Table 12. |
+----------------+-------+---------------+
Table 2: Signal Message Subtypes
4.2.2.3. Command Message Subtypes
+-------------------------+-------+------+
| Message Type | Value | Note |
+-------------------------+-------+------+
| CMD_ADD_EVT_LISTENER | 0x01 | |
| CMD_REMOVE_EVT_LISTENER | 0x02 | |
| CMD_CAN_DISPATCH | 0x03 | |
| CMD_DISPATCH_EVT | 0x04 | |
| CMD_LOAD_URL | 0x05 | |
| CMD_LOAD_SRC | 0x06 | |
| CMD_SET_FOCUS | 0x07 | |
| CMD_GET_FOCUS | 0x08 | |
| CMD_SET_FIELDS | 0x09 | |
| CMD_GET_FIELDS | 0x0A | |
| CMD_CANCEL | 0x0B | |
| CMD_EXEC_FORM | 0x0C | |
| CMD_SET_COOKIES | 0x0D | |
| CMD_GET_COOKIES | 0x0E | |
+-------------------------+-------+------+
Engelsma & Cross Expires February 1, 2008 [Page 10]
Internet-Draft DMSP Protocol July 2007
Table 3: Command Message Subtypes
4.2.2.4. Response Message Subtypes
+---------------------+---------+-----------------------------------+
| Message Type | Value | Note |
+---------------------+---------+-----------------------------------+
| RESP_OK | 0x01 | OK with no return value. |
| RESP_BOOL | 0x02 | OK with boolean return value. |
| RESP_STRING | 0x03 | OK with string return value. |
| reserved | 0x04 - | Reserved for primitive types. |
| | 0x40 | |
| RESP_FIELDS | 0x41 | OK with list of field name/value |
| | | pairs return value. |
| reserved | 0x42 - | Reserved for complex types. |
| | 0x65 | |
| RESP_SYNTAX_ERROR | 0x65 | Error parsing a message. |
| RESP_SYMANTIC_ERROR | 0x66 | Error processing a message. |
| reserved | 0x67 - | Reserved for implementation error |
| | 0xFF | codes. |
+---------------------+---------+-----------------------------------+
Table 4: Response Message Subtypes
Reserved ranges are left for implementations to provide response
messages for additional primitive and complex types and error codes.
Engelsma & Cross Expires February 1, 2008 [Page 11]
Internet-Draft DMSP Protocol July 2007
4.2.2.5. Event Message Subtypes
+--------------------+----------+-----------------------------------+
| Message Type | Value | Note |
+--------------------+----------+-----------------------------------+
| EVT_DOM_ACTIVATE | 0x01 | See Table 32 |
| EVT_DOM_FOCUS_IN | 0x02 | See Table 32 |
| EVT_DOM_FOCUS_OUT | 0x03 | See Table 32 |
| EVT_CLICK | 0x04 | See Table 33 |
| EVT_MOUSEDOWN | 0x05 | See Table 33 |
| EVT_MOUSEUP | 0x06 | See Table 33 |
| EVT_KEYDOWN | 0x07 | See Table 35 |
| EVT_KEYUP | 0x08 | See Table 35 |
| EVT_KEYPRESSED | 0x09 | See Table 35 |
| EVT_ERROR | 0x0A | See Table 36 |
| EVT_CHANGE | 0x0B | |
| EVT_HELP | 0x0C | See Table 38 |
| EVT_NOMATCH | 0x0D | See Table 38 |
| EVT_NOINPUT | 0x0E | See Table 38 |
| EVT_VXMLDONE | 0x0F | See Table 37 |
| EVT_RECO_RESULT | 0x10 | See Table 39 |
| EVT_RECO_RESULT_EX | 0x11 | See Table 39 |
| EVT_PLAYBACK_START | 0x12 | See Table 41 |
| EVT_PLAYBACK_STOP | 0x13 | See Table 41 |
| EVT_PLAYBACK_MARK | 0x14 | See Table 42 |
| reserved | 0x15 - | Reserved for future versions. |
| | 0x40 | |
| EVT_CUSTOM | 0x41 - | See Table 43 |
| | 0xFE | |
| EVT_ALL | 0xFF | Used to denote "All Events" in |
| | | event subscriptions. |
+--------------------+----------+-----------------------------------+
Table 5: Event Message Subtypes
Engelsma & Cross Expires February 1, 2008 [Page 12]
Internet-Draft DMSP Protocol July 2007
4.2.2.6. Error Codes
+-------------------------+--------+--------------------------------+
| Error Code | Value | Note |
+-------------------------+--------+--------------------------------+
| ERR_BAD_RESPONSE_REF | 0x01 | Attribute refers to a |
| | | non-existent request. |
| ERR_UNSUPPORTED_EVENT | 0x02 | Browser does not support event |
| | | type. |
| ERR_INVALID_TARGET | 0x03 | Browser does not know the |
| | | target node. |
| ERR_UNSUPPORTED_COMMAND | 0x04 | Browser does not support the |
| | | command. |
| ERR_INVALID_STATE | 0x05 | Invoking a command in the |
| | | current state is not legal. |
| ERR_UNKNOWN_ERROR | 0x06 | For implementation specific |
| | | errors. See Table 36. |
| ERR_ILLEGAL_ARGUMENT | 0x07 | Invoking a command with |
| | | illegal arguments. |
+-------------------------+--------+--------------------------------+
Table 6: Error Codes
4.2.2.7. Field Type
FIELD is a structure consisting of the following fields:
Field ID: The name of the field.
Value Count: The number of values associated with the field.
Field Value: An array of one or more values associated with the
field.
+-------------+------------------+-------------+---------+
| Field | Type | Byte Length | Value |
+-------------+------------------+-------------+---------+
| Field ID | String | Variable | |
| Value Count | Integer | 1 | 1 - 255 |
| Field Value | Array of Strings | Variable | |
+-------------+------------------+-------------+---------+
Table 7: FIELD Type
Engelsma & Cross Expires February 1, 2008 [Page 13]
Internet-Draft DMSP Protocol July 2007
4.2.2.8. Recognition Result Type
RESULT is a structure consisting of the following fields:
Score: The confidence score associated with the speech recognition
result.
Raw Utterance: A text string containing the raw utterance result.
Field Count: The number of fields filled by the recognition results.
Fields: An array of one or more FIELD structures.
+---------------+----------------+-------------+--------------+
| Field | Type | Byte Length | Value |
+---------------+----------------+-------------+--------------+
| Score | Integer | 1 | 0-100 |
| Raw Utterance | String | Variable | |
| Field Count | Integer | 1 | 1-255 |
| Fields | Array of Field | Variable | See Table 7. |
+---------------+----------------+-------------+--------------+
Table 8: RESULT Type
4.2.2.9. Extended Recognition Result Type
RESULT_EX is a structure consisting of the following fields:
Score: The confidence score associated with the speech recognition
result.
Raw Utterance: A text string containing the raw utterance result.
Grammar: The URI of the grammar that matched.
Interpretation Type: Designates the type of the Semantic
Interpretation field.
Semantic Interpretation: A string containing the semantic
interpretation data (parse tree and annotations,) the format of
which is determined from the preceding type field. The W3C
specification for Semantic Interpretation, see reference [10],
provides one such scheme where the ECMAScript result is serialized
into an XML fragment.
Engelsma & Cross Expires February 1, 2008 [Page 14]
Internet-Draft DMSP Protocol July 2007
+---------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+---------------+---------+-------------+--------------+
| Score | Integer | 1 | 0-100 |
| Raw Utterance | String | Variable | |
| Grammar | String | Variable | |
| SI_Type | Integer | 1 | 0 = SISR XML |
| SI | String | Variable | |
+---------------+---------+-------------+--------------+
Table 9: RESULT_EX Type
4.2.3. Signal Messages
4.2.3.1. Initialization Signal Message
A GUA signals an intent to initiate the protocol by sending the VUA
or IM the initialization message (SIG_INIT). If the VUA is able and
willing to participate, it will send a SIG_INIT message of its own to
the GUA that signaled. VUA initiation of the protocol is not
supported by this version of DMSP. In addition to the Message Type
and Message Subtype fields, the session initialization message
consists of the following fields:
Version: The DMSP version. This field must be set to "1.0".
Session Id: A string uniquely identifying the session that is to be
established. The value of this field will likely be determined by
the underlying transport mechanism. Transport considerations are
discussed in more detail in Section 5.
User Agent: Optional User-Agent field analogous to the HTTP request-
header of the sending user agent. The typical use of the field in
an HTTP application allows a server application to tailor markup
to a specific user agent. An example use case for the DMSP is to
indicate to the VUA that the client has local TTS capability and
the VUA should send prompt text instead of streaming audio.
Engelsma & Cross Expires February 1, 2008 [Page 15]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+------------+
| Message Type | Integer | 1 | MSG_SIGNAL |
| Message Subtype | Integer | 1 | SIG_INIT |
| Version | String | Variable | "1.0" |
| Session ID | String | Variable | |
| User Agent | String | Variable | optional |
+-----------------+---------+-------------+------------+
Table 10: Session Initialization Message
4.2.3.2. VXML Start Signal Message
This message provides an alternate approach to establishing the
protocol between the VUA and GUA. The GUA signals its intent to
initiate the protocol by sending a VXML start message
(SIG_VXML_START) message to the VUA or IM. Unlike the SIG_INIT
message, SIG_VXML_START signals the VUA to enter into an active
dialog state. If the VUA is able and willing to participate, it will
initialize itself by fetching and loading the specified VoiceXML
document and beginning execution in the requested VoiceXML form.
Once initialized, the VUA will signal its readiness to the GUA by
sending it a SIG_VXML_START of its own.
The SIG_VXML_START message is typically used to initiate the protocol
in use cases where the GUA wishes to expedite initiation of the
protocol and is willing to listen to all events generated by the VUA
The SIG_INIT message is used when fine-grained control of which
events the client will listen is needed, and latency is not an issue.
In addition to the Message Type and Message Subtype fields, the
session SIG_VXML_START message consists of the following fields:
Version: The DMSP version. User agents must send "1.0".
Session Id: A string uniquely identifying the session that is to be
established.
User Agent: The user agent string of the GUA or VUA, depending on
who is sending the message.
Dialog Type: An integer value that indicates the type of data
contained in the Dialog Data field. This field can be set to
either CMD_LOAD_URL or CMD_LOAD_SRC.
Engelsma & Cross Expires February 1, 2008 [Page 16]
Internet-Draft DMSP Protocol July 2007
Dialog Data: If the Dialog Type field is set to CMD_LOAD_URL, this
field contains the URL of the VoiceXML document to be loaded. The
URL must be a fully qualified URL that conforms to RFC 3986 [3].
The URL must include a fragment component that identifies the
VoiceXML form within the document that must be executed. For
example:
http://example.com/avxmldoc.jsp?astringvar=val#initform
If the Dialog Type field is set to CMD_LOAD_SRC, this field
contains a conforming VoiceXML document. [5]
Event Type Count: The number of elements in the subsequent Event
Type array.
Event Types: An array of integer event types the sender is
subscribing to. Use EVT_ALL to subscribe to all events. See
Table 5.
The previous discussion on the User Agent field in Section 4.2.3.1 is
equally applicable to the User Agent field in this message.
+---------------+----------------+-----------+----------------------+
| Field | Type | Byte | Value |
| | | Length | |
+---------------+----------------+-----------+----------------------+
| Message Type | Integer | 1 | MSG_SIGNAL |
| Message | Integer | 1 | SIG_VXML_START |
| Subtype | | | |
| Version | String | Variable | "1.0" |
| Session ID | String | Variable | |
| User Agent | String | Variable | |
| Dialog Type | Integer | 1 | CMD_LOAD_URL or |
| | | | CMD_LOAD_SRC |
| Dialog Data | String | Variable | |
| Event Type | Integer | 1 | 1-255 |
| Count | | | |
| Event Types | Array of | Variable | See Table 5 |
| | Integers | | |
+---------------+----------------+-----------+----------------------+
Table 11: VXML Start Message
4.2.3.3. Close Signal Message
Used by the user agents to signal that the protocol is being
terminated.
Engelsma & Cross Expires February 1, 2008 [Page 17]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+------------+
| Message Type | Integer | 1 | MSG_SIGNAL |
| Message Subtype | Integer | 1 | SIG_CLOSE |
+-----------------+---------+-------------+------------+
Table 12: Session Close Signal Message
4.2.4. Command Messages
4.2.4.1. Add Event Listener Message
Add event listener messages (CMD_ADD_EVT_LISTENER) are sent by the
GUA to listen for specific events generated by the VUA. In addition
to Message Type and Message Subtype, the message includes the
following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Target Node: The id of the node that is to be listened to. Setting
this field to "*" causes the server to forward all events
generated by all nodes, for the duration of the protocol session.
Sending the "*" value effectively renders the
CMD_REMOVE_EVT_LISTENER message a no-op for the duration of the
protocol session. See references [9] and [11].
Event Type: Set to one of the event types defined in Table 5 This
field is ignored if Target Node has a value of "*".
+-----------------+---------+-------------+----------------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+----------------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_ADD_EVT_LISTENER |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | Node id or "*" |
| Event Type | Integer | 1 | See Table 5. |
+-----------------+---------+-------------+----------------------+
Table 13: Add Event Listener Message
Expected Responses: OK (Table 27), ERROR (Table 31)
Engelsma & Cross Expires February 1, 2008 [Page 18]
Internet-Draft DMSP Protocol July 2007
4.2.4.2. Remove Event Listener Message
The remove event listener message (CMD_REMOVE_EVT_LISTENER) is sent
by the GUA to indicate it no longer wants to be notified of specific
events generated by the VUA In addition to Message Type and Message
Subtype, the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Target Node: The id of the node that the sender is no longer
interested in listening to. Setting this field to "*" causes
subscriptions to all nodes and event types to be removed. See
references [9] and [11].
Event Type: Set to one of the event types defined in Table 5 This
field is ignored if Target Node has a value of "*".
+-----------------+---------+-------------+-------------------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+-------------------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_REMOVE_EVT_LISTENER |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | Node id or "*" |
| Event Type | Integer | 1 | See Table 5. |
+-----------------+---------+-------------+-------------------------+
Table 14: Remove Event Listener Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.3. Can Dispatch Message
Sent by the IM to check if the target browser supports a given event
type. In addition to Message Type and Message Subtype, the message
includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Event Type: Set to one of the event types defined in Table 5
Engelsma & Cross Expires February 1, 2008 [Page 19]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+------------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+------------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_CAN_DISPATCH |
| Correlation | Integer | 4 | |
| Event Type | Integer | 1 | See Table 5. |
+-----------------+---------+-------------+------------------+
Table 15: Can Dispatch Message
Expected Responses: OK Boolean (Table 28), ERROR (Table 31)
4.2.4.4. Dispatch Event Message
The IM fires a given event as if it occurred in the source browser.
In addition to Message Type and Message Subtype, the message includes
the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Event Type: Set to one of the event types defined in Table 5
+-----------------+---------+-------------+------------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+------------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_DISPATCH_EVT |
| Correlation | Integer | 4 | |
| Event Type | Integer | 1 | See Table 5. |
+-----------------+---------+-------------+------------------+
Table 16: Dispatch Event Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.5. Load URL Message
The GUA sends a load URL message (CMD_LOAD_URL) to the VUA to have it
fetch and load a VoiceXML document. In addition to Message Type and
Message Subtype, the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Engelsma & Cross Expires February 1, 2008 [Page 20]
Internet-Draft DMSP Protocol July 2007
URL: The URL of the VoiceXML document to be loaded. The URL must be
a fully qualified URL that conforms to RFC 3986 [3].
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_LOAD_URL |
| Correlation | Integer | 4 | |
| URL | String | Variable | |
+-----------------+---------+-------------+--------------+
Table 17: Load URL Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.6. Load Source Message
The GUA sends a load source message (CMD_LOAD_SRC) to the VUA to have
it load a VoiceXML document from a string. In addition to Message
Type and Message Subtype, the message includes the following fields:
This command is useful in a situation in which the GUA has the
VoiceXML content to be executed by the VUA, rather than a URL to
VoiceXML content in the network. In practice this could a situation
in which VoiceXML markup is in lined within another document that was
fetched and is being rendered by the GUA.
Correlation: The message's sequence number to match the request with
the corresponding response message.
Page Source: A string containing a conforming VoiceXML 2.0 document
[5].
Base URI: The URL of the VoiceXML document's base URI, if any. The
VoiceXML browser may use this URI to resolve relative URI
references within the loaded document. The URL must be a fully
qualified URL that conforms to RFC 3986 [3].
Engelsma & Cross Expires February 1, 2008 [Page 21]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_LOAD_SRC |
| Correlation | Integer | 4 | |
| Page Source | String | Variable | |
| Base URI | String | Variable | |
+-----------------+---------+-------------+--------------+
Table 18: Load Source Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.7. Get Focus Message
Retrieves the id of the document node that has focus. In addition to
Message Type and Message Subtype, the message includes the following
fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
+-----------------+---------+-------------+---------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+---------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_GET_FOCUS |
| Correlation | Integer | 4 | |
+-----------------+---------+-------------+---------------+
Table 19: Get Focus Message
Expected Responses: OK String (Field Id, see Table 29), ERROR
(Table 31)
4.2.4.8. Set Focus Message
The GUA sends a set focus message (CMD_SET_FOCUS) to the VUA to
explicitly request that the VoiceXML browser visit a particular
VoiceXML input item. In addition to Message Type and Message
Subtype, the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Engelsma & Cross Expires February 1, 2008 [Page 22]
Internet-Draft DMSP Protocol July 2007
Target Node: The name of the input item in the currently active
VoiceXML form that is to be visited.
+-----------------+---------+-------------+---------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+---------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_SET_FOCUS |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
+-----------------+---------+-------------+---------------+
Table 20: Set Focus Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.9. Get Fields Message
Retrieves the current field values. In addition to Message Type and
Message Subtype, the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Field Count: The number of elements in the subsequent Field array.
Fields: An array of Field names.
+-----------------+------------------+-------------+----------------+
| Field | Type | Byte Length | Value |
+-----------------+------------------+-------------+----------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_SET_FIELDS |
| Correlation | Integer | 4 | |
| Field Count | Integer | 1 | 1-255 |
| Fields | Array of Strings | Variable | |
+-----------------+------------------+-------------+----------------+
Table 21: Get Fields Message
Expected Responses: Fields (Table 30), ERROR (Table 31)
4.2.4.10. Set Fields Message
The GUA sends a set fields message (CMD_SET_FIELDS) to fill fields in
the currently active VoiceXML form. That is, if the user were to
fill input items displayed visually by the GUA, the VUA can be
informed of this by sending it a CMD_SET_FIELDS message. In addition
Engelsma & Cross Expires February 1, 2008 [Page 23]
Internet-Draft DMSP Protocol July 2007
to Message Type and Message Subtype, the message includes the
following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Field Count: The number of elements in the subsequent Field array.
Fields: An array of Field name/values.
+-----------------+----------------+-------------+----------------+
| Field | Type | Byte Length | Value |
+-----------------+----------------+-------------+----------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_SET_FIELDS |
| Correlation | Integer | 4 | |
| Field Count | Integer | 1 | 1-255 |
| Fields | Array of Field | Variable | See Table 7. |
+-----------------+----------------+-------------+----------------+
Table 22: Set Fields Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.11. Cancel Message
The GUA cancels the execution of a currently running VoiceXML form by
sending an cancel message (CMD_CANCEL) to the VUA. In addition to
Message Type and Message Subtype, the message includes the following
fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
+-----------------+---------+-------------+-------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+-------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_CANCEL |
| Correlation | Integer | 4 | |
+-----------------+---------+-------------+-------------+
Table 23: Cancel Message
Expected Responses: OK (Table 27), ERROR (Table 31)
Engelsma & Cross Expires February 1, 2008 [Page 24]
Internet-Draft DMSP Protocol July 2007
4.2.4.12. Execute Form Message
The GUA runs a form within the currently loaded VoiceXML document by
sending an execute form message (CMD_EXEC_FORM). If the VUA is
already executing a form upon receipt of this message an implicit
cancel is assumed. In addition to Message Type and Message Subtype,
the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Form ID: The id of the VoiceXML form or menu element that is to be
executed.
+-----------------+---------+-------------+---------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+---------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_EXEC_FORM |
| Correlation | Integer | 4 | |
| Form ID | String | Variable | |
+-----------------+---------+-------------+---------------+
Table 24: Execute Form Message
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.13. Set Cookies Message
The GUA synchronizes the HTTP session context by sending the Set
Cookies message. In addition to Message Type and Message Subtype,
the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
Cookie: A cookie string conforming to RFC 2965 [4].
+-----------------+---------+-------------+-----------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+-----------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_SET_COOKIES |
| Correlation | Integer | 4 | |
| Cookie | String | Variable | |
+-----------------+---------+-------------+-----------------+
Table 25: Execute Form Message
Engelsma & Cross Expires February 1, 2008 [Page 25]
Internet-Draft DMSP Protocol July 2007
Expected Responses: OK (Table 27), ERROR (Table 31)
4.2.4.14. Get Cookies Message
The VUA or IM synchronizes the HTTP session context by sending the
Get Cookies message. In addition to Message Type and Message
Subtype, the message includes the following fields:
Correlation: The message's sequence number to match the request with
the corresponding response message.
+-----------------+---------+-------------+-----------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+-----------------+
| Message Type | Integer | 1 | MSG_COMMAND |
| Message Subtype | Integer | 1 | CMD_GET_COOKIES |
| Correlation | Integer | 4 | |
+-----------------+---------+-------------+-----------------+
Table 26: Execute Form Message
Expected Responses: Cookie String (Table 29), ERROR (Table 31)
4.2.5. Response Messages
Response messages are sent by one user agent to respond to command
messages sent by another user agent. Response messages can also be
sent when a user agent encounters an error while processing a signal
message.
4.2.5.1. OK Response Message
The OK response message (RESP_OK) is a positive confirmation the
server sends to the client in response to certain commands. In
addition to Message Type and Message Subtype, the message includes
the following field:
Response To: The sequence number to the corresponding command that
is being confirmed.
Engelsma & Cross Expires February 1, 2008 [Page 26]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_RESPONSE |
| Message Subtype | Integer | 1 | RESP_OK |
| Response To | Integer | 4 | |
+-----------------+---------+-------------+--------------+
Table 27: OK Response Message
4.2.5.2. Boolean Response Message
The VUA sends a boolean response value to the GUA using the boolean
response message (RESP_BOOL). In addition to Message Type and
Message Subtype, the message includes the following field:
Response To: The sequence number to corresponding command that is
being confirmed.
Value: The Boolean value being returned.
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_RESPONSE |
| Message Subtype | Integer | 1 | RESP_BOOL |
| Response To | Integer | 4 | |
| Value | Boolean | 1 | 0x00, 0x01 |
+-----------------+---------+-------------+--------------+
Table 28: Boolean Response Message
4.2.5.3. String Response Message
The VUA sends a string response value to the GUA using the boolean
response message (RESP_STRING). In addition to Message Type and
Message Subtype, the message includes the following field:
Response To: The sequence number to corresponding command that is
being confirmed.
Value: The String value being returned.
Engelsma & Cross Expires February 1, 2008 [Page 27]
Internet-Draft DMSP Protocol July 2007
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_RESPONSE |
| Message Subtype | Integer | 1 | RESP_STRING |
| Response To | Integer | 4 | |
| Value | String | Variable | |
+-----------------+---------+-------------+--------------+
Table 29: String Response Message
4.2.5.4. Fields Response Message
The VUA sends a string response value to the GUA using the boolean
response message (RESP_FIELDS). In addition to Message Type and
Message Subtype, the message includes the following field:
Response To: The sequence number to corresponding command that is
being confirmed.
Field Count: Number of fields in the response.
Fields: An array of fields and values.
+-----------------+-----------------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+-----------------+-------------+--------------+
| Message Type | Integer | 1 | MSG_RESPONSE |
| Message Subtype | Integer | 1 | RESP_FIELDS |
| Response To | Integer | 4 | |
| Field Count | Integer | 1 | 1-255 |
| Fields | Array of Fields | Variable | See Table 7. |
+-----------------+-----------------+-------------+--------------+
Table 30: Fields Response Message
4.2.5.5. Error Response Message
The VUA communicates error conditions to the GUA using the error
response message (RESP_ERROR). In addition to Message Type and
Message Subtype, the message includes the following fields:
Response To: The sequence number to the corresponding command that
is being confirmed.
Engelsma & Cross Expires February 1, 2008 [Page 28]
Internet-Draft DMSP Protocol July 2007
Error Code: A code indicating the error condition.
Error Location: A URL conforming to RFC 3986 that marks the location
of the error, typically set to the URL of the offending document.
Error Description: A textual description of the error.
+-------------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-------------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_RESPONSE |
| Message Subtype | Integer | 1 | RESP_ERROR |
| Response To | Integer | 4 | |
| Error Code | Integer | 1 | See Table 6 |
| Error Location | String | Variable | |
| Error Description | String | Variable | |
+-------------------+---------+-------------+--------------+
Table 31: Error Response Message
4.2.6. Event Messages
Event messages carry asynchronous notifications from one user agent
to another. For example, a VoiceXML nomatch or noinput, as well as
the filling of a field are all conveyed to the GUA in event messages.
All event messages have a common structure up to the specific event
payload. It consists of the following fields:
Message Type: Event Message
Message Subtype: Event Type, see Table 5
Correlation: Sequence number of a related command message or '0' if
user initiated event. Prevents an infinite loop in the IM.
Target Node: The id of the DOM Node that is the target of the event.
4.2.6.1. DOMActivate, DOMFocusIn, and DOMFocusOut Event Messages
User agents propagate serialized DOM focus events using these
messages. In addition to the common event fields, the payload for
the Focus Event includes:
UI Event Detail: For 'DOMActivate' determines the type of
activation.
Engelsma & Cross Expires February 1, 2008 [Page 29]
Internet-Draft DMSP Protocol July 2007
+-------------+---------+-----------+-------------------------------+
| Field | Type | Byte | Value |
| | | Length | |
+-------------+---------+-----------+-------------------------------+
| Message | Integer | 1 | MSG_EVENT |
| Type | | | |
| Message | Integer | 1 | EVT_DOM_ACTIVATE, |
| Subtype | | | EVT_DOM_FOCUS_OUT, |
| | | | EVT_DOM_FOCUS_IN |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| UI Event | Integer | 4 | See reference [9] |
| Detail | | | |
+-------------+---------+-----------+-------------------------------+
Table 32: DOMActivate, DOMFocusIn, and DOMFocusOut Event Messages
4.2.6.2. Click, Mouse Down, Mouse Up Event Messages
In IM configurations, user agents may propagate DOM 2 MouseEvents.
These messages are serialized versions of the W3C DOM 2 MouseEvents.
Starting with 'UI Event Detail', the normative definition of the
fields are found in reference [9]. In addition to the common event
fields, the payload for the Mouse Events includes:
UI Event Detail: Indicates the number of times a mouse button has
been pressed and released over the same screen location during a
user action.
clientX, clientY: The horizontal and verticle coordinates at which
the event occurred relative to the DOM implementation's client
area.
screenX, screenY: The horizontal and verticle coordinate at which
the event occurred relative to the origin of the screen coordinate
system.
modifiers: Bit map used to indicate modifier keys shift, alt, ctl.
See Table 34.
button: During mouse events caused by the depression or release of a
mouse button, button is used to indicate which mouse button
changed state.
Engelsma & Cross Expires February 1, 2008 [Page 30]
Internet-Draft DMSP Protocol July 2007
+--------------+---------+-----------+------------------------------+
| Field | Type | Byte | Value |
| | | Length | |
+--------------+---------+-----------+------------------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message | Integer | 1 | EVT_CLICK, EVT_MOUSEDOWN, |
| Subtype | | | EVT_MOUSEUP |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| UI Event | Integer | 4 | See reference [9] |
| Detail | | | |
| screenX | Integer | 4 | See reference [9] |
| screenY | Integer | 2 | See reference [9] |
| clientX | Integer | 2 | See reference [9] |
| clientY | Integer | 2 | See reference [9] |
| modifiers | Integer | 1 | See reference [9] |
| button | Integer | 1 | See reference [9] |
+--------------+---------+-----------+------------------------------+
Table 33: Click, Mouse Down, Mouse Up Event Messages
+-------------+-----------+
| Key | Bit Field |
+-------------+-----------+
| ctrlKey | 0x01 |
| shiftKey | 0x02 |
| altKey | 0x04 |
| metaKey | 0x08 |
| altGraphKey | 0x10 |
+-------------+-----------+
Table 34: Key Modifiers
4.2.6.3. keydown, keyup, keypress Event Messages
In IM configurations, user agents may propagate DOM Key events.
These messages are serialized versions of the W3C Key Events.
Starting with 'UI Event Detail', the normative definition of the
fields are found in reference [9]. In addition to the common event
fields, the payload for the Key Events includes:
UI Event Detail:
keyIdentifier
Engelsma & Cross Expires February 1, 2008 [Page 31]
Internet-Draft DMSP Protocol July 2007
keyLocation
modifiers: Bit map used to indicate modifier keys shift, alt, ctl.
See Table 34.
+---------------+---------+-----------+-----------------------------+
| Field | Type | Byte | Value |
| | | Length | |
+---------------+---------+-----------+-----------------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message | Integer | 1 | EVT_KEYDOWN, EVT_KEYUP, |
| Subtype | | | EVT_KEYPRESSED |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| UI Event | Integer | 4 | See reference [9] |
| Detail | | | |
| keyIdentifier | String | Variable | mandatory See reference [9] |
| keyLocation | Integer | 2 | 0xFFFF means unspecified |
| | | | See reference [9] |
| modifiers | Integer | 1 | See reference [9] |
+---------------+---------+-----------+-----------------------------+
Table 35: keydown, keyup, keypress Event Messages
4.2.6.4. Error Event Message
The VUA notifies the GUA of a VoiceXML error event by sending an
error event message (EVT_ERROR). In addition to the common event
fields, the payload for the Error Event includes:
Error Location: A URL conforming to RFC 3986 that marks the location
of the error, typically set to the URL of the offending document.
Error Code: A code indicating the error condition.
Error Code String: Used to specify browser-specific error conditions
for which the protocol does not predefine a code. This value will
be the empty string when the Error Code field is set to a value
other than ERR_UNKNOWN_ERROR.
Error Description: A textual description of the error.
Engelsma & Cross Expires February 1, 2008 [Page 32]
Internet-Draft DMSP Protocol July 2007
+-------------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-------------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_ERROR |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Error Location | String | Variable | |
| Error Code | Integer | 1 | See Table 6. |
| Error Code String | String | Variable | |
| Error Description | String | Variable | |
+-------------------+---------+-------------+--------------+
Table 36: Error Event Message
4.2.6.5. VXML Done Event Message
The VUA notifies the GUA with a VXML done event message
(EVT_VXML_DONE) when it exits the running form. The payload for the
VXML Done Event includes only the common event fields.
+-----------------+---------+-------------+--------------+
| Field | Type | Byte Length | Value |
+-----------------+---------+-------------+--------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_VXMLDONE |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
+-----------------+---------+-------------+--------------+
Table 37: VXML Done Event Message
4.2.6.6. Help, Nomatch, and Noinput Event Message
The VUA notifies the GUA of VoiceXML help, nomatch, and noinput
messages by sending a corresponding event message (EVT_HELP,
EVT_NOMATCH, or EVT_NOINPUT). In addition to the common event
fields, the payload for the this message includes:
Count: Specifies the occurrence of the event. Different count
values allow the GUA to respond to the same event differently,
depending on how many times it has occurred.
Engelsma & Cross Expires February 1, 2008 [Page 33]
Internet-Draft DMSP Protocol July 2007
+---------------+---------+-----------+-----------------------------+
| Field | Type | Byte | Value |
| | | Length | |
+---------------+---------+-----------+-----------------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message | Integer | 1 | EVT_HELP, EVT_NOMATCH, |
| Subtype | | | EVT_NOINPUT |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Count | Integer | 1 | 1-255 |
+---------------+---------+-----------+-----------------------------+
Table 38: Help, Nomatch, and Noinput Event Message
4.2.6.7. Recognition Result Event Message
The VUA notifies the GUA of recognition results by sending a
recognition result event message (EVT_RECO_RESULT). In addition to
the common event fields, the payload for the Recognition Result Event
includes:
Result Count: The number of recognition results returned.
Results: An array of one or more RESULT structures.
+-----------------+-----------------+-------------+-----------------+
| Field | Type | Byte Length | Value |
+-----------------+-----------------+-------------+-----------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_RECO_RESULT |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Result Count | Integer | 1 | 1-255 |
| Results | Array of RESULT | Variable | See Table 8 |
+-----------------+-----------------+-------------+-----------------+
Table 39: Recognition Result Event Message
While in some application use cases, not sending the values of
VoiceXML input items filled by a particular utterance that have not
changed may be viewed as an optimization, in command and control
style applications this is problematic and requires the application
perform extra book-keeping. Therefore, the Results array MUST
contain values for each VoiceXML input item filled as a consequence
of the utterance, even if the value of an input item has not actually
changed.
Engelsma & Cross Expires February 1, 2008 [Page 34]
Internet-Draft DMSP Protocol July 2007
4.2.6.8. Extended Recognition Result Event Message
The VUA notifies the GUI User Agent of extended recognition results
by sending an extended recognition result event message
(EVT_RECO_RESULTEX). In addition to the common event fields, the
payload for the Extended Recognition Result Event includes:
Result Count: The number of recognition results returned.
Results: An array of one or more RESULT_EX structures.
+-----------------+--------------+--------------+-------------------+
| Field | Type | Byte Length | Value |
+-----------------+--------------+--------------+-------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_RECO_RESULTEX |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Result Count | Integer | 1 | 1-255 |
| Results | Array of | Variable | See Table 9 |
| | RESULT_EX | | |
+-----------------+--------------+--------------+-------------------+
Table 40: Extended Recognition Result Event Message
While in some application use cases, not sending the values of
VoiceXML input items filled by a particular utterance that have not
changed may be viewed as an optimization, in command and control
style applications this is problematic and requires the application
perform extra book-keeping. Therefore, the Results array MUST
contain values for each VoiceXML input item filled as a consequence
of the utterance, even if the value of an input item has not actually
changed.
4.2.6.9. Start and Stop Playback Event Message
The VUA notifies the GUI User Agent when playback of audio or TTS
prompts has started or stopped. The message only contains the common
event fields.
Engelsma & Cross Expires February 1, 2008 [Page 35]
Internet-Draft DMSP Protocol July 2007
+-------------+--------------+--------------+-----------------------+
| Field | Type | Byte Length | Value |
+-------------+--------------+--------------+-----------------------+
| Message | Integer | 1 | MSG_EVENT |
| Type | | | |
| Message | Integer | 1 | EVT_PLAYBACK_START, |
| Subtype | | | EVT_PLAYBACK_STOP |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
+-------------+--------------+--------------+-----------------------+
Table 41: Extended Recognition Result Event Message
4.2.6.10. Start and Stop Playback Event Message
The VUA notifies the GUI User Agent when playback of TTS encounters a
mark in the prompt text. In addition to the common event fields, the
payload for the Playback Mark Event includes:
Mark: The mark label or tag contained in the prompt text.
+-----------------+--------------+--------------+-------------------+
| Field | Type | Byte Length | Value |
+-----------------+--------------+--------------+-------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_PLAYBACK_MARK |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Mark | String | Variable | |
+-----------------+--------------+--------------+-------------------+
Table 42: Extended Recognition Result Event Message
4.2.6.11. Custom Event Message
The VUA and GUA may implement custom events not specified in the
protocol. Custom events may hinder interoperation between user
agents from different vendors. In addition to the common event
fields, the payload for the Custom Event includes:
Name: The custom event name.
Value: The value for the event.
Engelsma & Cross Expires February 1, 2008 [Page 36]
Internet-Draft DMSP Protocol July 2007
+-----------------+--------------+--------------+-------------------+
| Field | Type | Byte Length | Value |
+-----------------+--------------+--------------+-------------------+
| Message Type | Integer | 1 | MSG_EVENT |
| Message Subtype | Integer | 1 | EVT_PLAYBACK_MARK |
| Correlation | Integer | 4 | |
| Target Node | String | Variable | |
| Name | String | Variable | |
| Value | String | Variable | |
+-----------------+--------------+--------------+-------------------+
Table 43: Extended Recognition Result Event Message
4.3. XML Message Encoding
The DMSP XML Encoding provides a one-for-one equivalence to the
binary message set. Thus, it is possible for an IM implementation to
use the binary messages with clients on a low bandwidth cellular
network and synchronize with user agents on the high speed network
using XML.
The XML message set uses batching of messages within an XML document
to allow the application to optimize performance. This is provided
by <packet>, the root of the DMSP XML language. The <packet> element
can contain one or more <signal>, <command>, <response>, or <event>
elements. For the complete schema for the XML encoding, see
Appendix A.
4.4. State Machines
The sending and receiving of DMSP messages is governed by state
machines executing on the user agents. Transitions between states
are driven by the receipt of messages from the corresponding remote
side, or when the local user agent invokes state machine primitives
that cause messages to be sent. In the state table specifications
below, the generalized term "upper layer" refers to the entity
invoking the state machine's primitives. That is, when specifying
the GUA state machine, "upper layer" refers to entities such as XHTML
browsers, or custom applications (e.g. Java MIDlets) that are
coordinating with the remote VUA. When specifying the VUA state
machine, "upper layer" would refer to the VoiceXML browser that is
executing on behalf of the remote client. The following notational
conventions are used:
Sm(p): Denotes the invoking of a state machine primitive p.
Engelsma & Cross Expires February 1, 2008 [Page 37]
Internet-Draft DMSP Protocol July 2007
Tx(m): Denotes the sending of a DMSP message m.
Rx(m): Denotes the receiving of a DMSP message m.
N(e): Denotes that the state machine is notifying the upper layer of
an event e.
As described in Section 4.2, some messages have a sequence number
(Correlation field) to match requests with corresponding responses.
Sequence numbers are used to synchronize state machines. For
instance, when the GUA state machine sends the CMD_EXEC_FORM message
and transitions to the DLG_SENT state, it stores the sequence number
of the CMD_EXEC_FORM message. Responses to the CMD_EXEC_FORM (i.e.
either the RESP_ERROR or RESP_OK) are processed only if their
sequence number matches what the GUA state machine is expecting. If
the sequence numbers match, the response is processed and the GUA
state machine transitions to the next state. Responses that do not
have a sequence number matching with what the GUA is expecting are
ignored and there state transition is effected.
Sequence numbers are used in a similar way at the VUA to control
processing. For instance, when the VUA state machine receives a
CMD_EXEC_FORM message, it stores the sequence number present in the
message and notifies the upper layer with a RUN_DLG notification,
while transitioning to the DLG_RCVD state. Subsequent primitives
(Sm(DLG_ACTIVE) or Sm(DLG_ERROR)) that are received from the upper
layer in response to the RUN_DLG notification are processed only if
the sequence number in the primitive matches with what the state
machine is expecting. The LOAD_DOC notification and its responses
from the upper layer (Sm(DOC_LOADED) or Sm(DOC_ERROR)) are handled
similarly.
In configurations using an Interaction Manager, it is assumed that
the user agents operate the same state machines as in the distributed
client configuration. The IM operates as a proxy in most cases. In
some implementations the IM may synthesize event messages. Event
messages carry a correlation number to determine if it was initiated
by a user agent or synthesized. The correlation is used to prevent
an infinite loop in the IM when synthesizing messages.
In the following sections, the state machines are specified using
tables (one per state). In each table, only the relevant events are
included. Events that occur in a state that are not specified in
these tables are to be ignored and no state transition takes place.
This includes any event that occurs without a condition matching what
is specified in the table.
The state machine specification is articulated in terms of the
Engelsma & Cross Expires February 1, 2008 [Page 38]
Internet-Draft DMSP Protocol July 2007
client(GUA)/server(VUA) configuration for simplicity. The state
machines are unaffected with the introduction of an Interaction
Manager.
4.4.1. GUI User Agent State Machine
The GUA state machine consists of the following states:
CONN_CLOSED: Protocol is not established with the VUA. This is an
initial state.
INIT_SENT: GUA has initiated the protocol with the VUA, but its not
yet established.
CONN_OPEN: The protocol is established.
DOC_SENT The GUA has requested the VUA load a document.
DOC_LOADED: The VUA has acknowledged the requested document is
loaded.
DLG_SENT: The GUA has requested the VUA begin executing a dialog.
DLG_ACTIVE: The VUA has acknowledged that the requested dialog is
now running. This is optionally an initial state.
VXML_START_SENT The GUA has initiated the protocol with the VUA and
specified the initial dialog to be executed.
It is possible to initiate the GUA state machine in the DLG_ACTIVE
state. In this case, it is assumed that the underlying transport
protocol has been used to specify a consistent initial DLG_ACTIVE
state for both the GUA and VUA state machines. For example, if an
implementation utilized SIP as the transport mechanism, it would be
possible to have the initial INVITE sent from the GUA to the VUA
include enough information to enable the VUA to fetch, load, and
execute a particular VoiceXML form without exchanging any DMSP
messages.
4.4.1.1. CONN_CLOSED State
This is the initial state of the GUA state machine. In this state,
the underlying transport mechanism that carries the DMSP messages is
assumed to be established. The following events can be handled in
this state:
Engelsma & Cross Expires February 1, 2008 [Page 39]
Internet-Draft DMSP Protocol July 2007
Sm(OPEN_CONN): This is a primitive received from the upper layer.
This event is handled by sending a SIG_INIT message to the VUA to
establish a connection. The state machine transitions to the
INIT_SENT state after handling the primitive. This primitive is
used if the GUA desires fine grained control of which remote
browser events it wishes to listen to.
Sm(VXML_START): This is a primitive received from the upper layer.
This event is handled by sending a SIG_VXML_START to the VUA.
This primitive is used if the GUA wishes to start a VoiceXML
dialog on the remote VUA and listen to all the events it
generates.
+----------------+-----------------+--------------------+
| Event | Next State | Action |
+----------------+-----------------+--------------------+
| Sm(OPEN_CONN) | INIT_SENT | Tx(SIG_INIT) |
| Sm(VXML_START) | VXML_START_SENT | Tx(SIG_VXML_START) |
+----------------+-----------------+--------------------+
Table 44: CONN_CLOSED State
4.4.1.2. INIT_SENT State
In this state, the state machine is awaiting response to the messages
sent in the CONN_CLOSED state. The following events are handled:
Rx(SIG_INIT): The state machine receives a SIG_INIT message
indicating that the VUA has accepted the connection request. The
event is handled by notifying the upper layer with a CONN_OPEN
notification and the state machine transitions to the CONN_OPEN
state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message
indicating that the VUA has declined the connection request. The
event is handled by notifying the upper layer with a CONN_FAIL
notification and the state machine transitions back to the
CONN_CLOSED state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
used to initiate a connection close. The event is handled by
sending a SIG_CLOSE message to the VUA and the state machine
transitions back to the CONN_CLOSED state.
Engelsma & Cross Expires February 1, 2008 [Page 40]
Internet-Draft DMSP Protocol July 2007
+----------------+-------------+---------------+
| Event | Next State | Action |
+----------------+-------------+---------------+
| Rx(SIG_INIT) | CONN_OPEN | N(CONN_OPEN) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_FAIL) |
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
+----------------+-------------+---------------+
Table 45: INIT_SENT State
4.4.1.3. CONN_OPEN State
The protocol has been successfully established with the VUA in this
state. The following events are handled:
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the VUA and the state
machine transitions to the CONN_CLOSED state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the VUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(LOAD_DOC): This is a primitive received from the upper layer,
instructing the state machine to load a VoiceXML document. The
event is handled by sending a CMD_LOAD_URL or CMD_LOAD_SRC message
to the VUA and the state machine transitions to the DOC_SENT
state.
Sm(ADD_LISTENER): This is a primitive received from the upper layer,
instructing the state machine to listen for an event or set of
events. The event is handled by sending a CMD_ADD_EVT_LISTENER
message to the VUA. There is no state transition.
Sm(REMOVE_LISTENER): This is a primitive received from the upper
layer, instructing the state machine to no longer listen to an
event or set of events. The event is handled by sending a
CMD_REMOVE_EVT_LISTENER message to the VUA. There is no state
transition.
RX(RESP_OK): RESP_OK messages are received for each successful
Sm(ADD_LISTENER) or Sm(REMOVE_LISTENER) primitives invoked by the
upper layer in this state. There is no state transition.
Engelsma & Cross Expires February 1, 2008 [Page 41]
Internet-Draft DMSP Protocol July 2007
RX(RESP_ERROR): A RESP_ERROR indicates the failure of a
Sm(ADD_LISTENER) or Sm(REMOVE_LISTENER). The state machine
informs the upper layer of the failure and transitions to the
CONN_CLOSED state.
+---------------------+-------------+----------------------------+
| Event | Next State | Action |
+---------------------+-------------+----------------------------+
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(LOAD_DOC) | DOC_SENT | Tx(CMD_LOAD_SRC) |
| | | || Tx(CMD_LOAD_URL) |
| Sm(ADD_LISTENER) | CONN_OPEN | Tx(CMD_ADD_EVT_LISTENER) |
| Sm(REMOVE_LISTENER) | CONN_OPEN | Tx(CMD_REMOVE_EVT_LISTENER |
| Rx(RESP_OK) | CONN_OPEN | |
+---------------------+-------------+----------------------------+
Table 46: CONN_OPEN State
4.4.1.4. DOC_SENT State
A CMD_LOAD_SRC or CMD_LOAD_URL message has been sent to the VUA and
the GUA is awaiting a response from the VUA. The following events
are handled:
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the VUA and the state
machine transitions to the CONN_CLOSED state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the VUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Rx(RESP_ERROR): The state machine receives a RESP_ERROR message from
the VUA, indicating that an error occurred while loading a
document.
Condition: The document instance sequence number in the RESP_ERROR
message matches with the state machine's document instance
sequence number. This indicates that an error occurred while
loading the document for which the GUA is awaiting a response.
The event is handled by notifying the upper layer with a DOC_ERROR
notification and the state machine transitions to the CONN_OPEN
state.
Engelsma & Cross Expires February 1, 2008 [Page 42]
Internet-Draft DMSP Protocol July 2007
Rx(RESP_OK): The state machine receives a RESP_OK message from the
VUA, indicating that a document was loaded successfully.
Condition: The document instance sequence number in the RESP_OK
message matches with the state machine's document instance
sequence number. This indicates that the RESP_OK message
corresponds to the CMD_LOAD_SRC or CMD_LOAD_URL message sent
earlier, for which the GUA is awaiting a response.
The event is handled by notifying the upper layer with a
DOC_LOADED notification and the state machine transitions to the
DOC_LOADED state.
Sm(LOAD_DOC): This is a primitive received from the upper layer,
instructing the state machine to load a VoiceXML document while
the state machine is still awaiting response to a previously sent
CMD_LOAD_SRC or CMD_LOAD_URL message. The event is handled by
sending a CMD_LOAD_SRC or CMD_LOAD_URL message to the VUA and the
state machine transitions to the DOC_SENT state.
+----------------+-----------------+-------------+------------------+
| Event | Condition | Next State | Action |
+----------------+-----------------+-------------+------------------+
| Sm(CLOSE_CONN) | | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | | CONN_CLOSED | N(CONN_CLOSED) |
| Rx(RESP_ERROR) | Document | CONN_OPEN | N(DOC_ERROR) |
| | Sequence Match | | |
| Rx(RESP_OK) | Document | DOC_LOADED | N(DOC_LOADED) |
| | Sequence Match | | |
| Sm(LOAD_DOC) | | DOC_SENT | Tx(CMD_LOAD_SRC) |
| | | | || |
| | | | Tx(CMD_LOAD_URL) |
+----------------+-----------------+-------------+------------------+
Table 47: DOC_SENT State
4.4.1.5. DOC_LOADED State
The VUA has successfully loaded a VoiceXML document. The following
events are handled:
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the VUA and the state
machine transitions to the CONN_CLOSED state.
Engelsma & Cross Expires February 1, 2008 [Page 43]
Internet-Draft DMSP Protocol July 2007
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the VUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(LOAD_DOC): This is a primitive received from the upper layer,
instructing the state machine to load a VoiceXML document. The
event is handled by sending a CMD_LOAD_SRC or CMD_LOAD_URL message
to the VUA and the state machine transitions to the DOC_SENT
state.
Sm(RUN_DLG): This is a primitive received from the upper layer,
instructing the state machine to run a VoiceXML dialogue. The
event is handled by sending a CMD_EXEC_FORM message to the VUA and
the state machine transitions to the DLG_SENT state.
Sm(ADD_LISTENER): This is a primitive received from the upper layer,
instructing the state machine to listen for an event or set of
events. The event is handled by sending a CMD_ADD_EVT_LISTENER
message to the VUA. There is no state transition.
Sm(REMOVE_LISTENER): This is a primitive received from the upper
layer, instructing the state machine to no longer listen to an
event or set of events. The event is handled by sending a
CMD_REMOVE_EVT_LISTENER message to the VUA. There is no state
transition.
RX(RESP_OK): RESP_OK messages are received for each successful
Sm(ADD_LISTENER) or Sm(REMOVE_LISTENER) primitives invoked by the
upper layer in this state. There is no state transition.
+---------------------+-------------+----------------------------+
| Event | Next State | Action |
+---------------------+-------------+----------------------------+
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(RUN_DLG) | DLG_SENT | Tx(CMD_EXEC_FORM) |
| Sm(LOAD_DOC) | DOC_SENT | Tx(CMD_LOAD_SRC) |
| | | || Tx(CMD_LOAD_URL) |
| Sm(ADD_LISTENER) | CONN_OPEN | Tx(CMD_ADD_EVT_LISTENER) |
| Sm(REMOVE_LISTENER) | CONN_OPEN | Tx(CMD_REMOVE_EVT_LISTENER |
| Rx(RESP_OK) | CONN_OPEN | |
+---------------------+-------------+----------------------------+
Table 48: DOC_LOADED State
Engelsma & Cross Expires February 1, 2008 [Page 44]
Internet-Draft DMSP Protocol July 2007
4.4.1.6. DLG_SENT State
The GUA has sent a request to the VUA to activate a dialogue and is
awaiting a response. The following events are handled:
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the VUA and the state
machine transitions to the CONN_CLOSED state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the VUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(LOAD_DOC): This is a primitive received from the upper layer,
instructing the state machine to load a VoiceXML document. The
event is handled by sending a CMD_LOAD_SRC or CMD_LOAD_URL message
to the VUA and the state machine transitions to the DOC_SENT
state.
Sm(RUN_DLG): This is a primitive received from the upper layer,
instructing the state machine to run another VoiceXML dialogue.
The event is handled by sending a CMD_EXEC_FORM message to the
VUA. The state machine remains in the DLG_SENT state. Since only
one dialogue can be active at a time, the state machine sends a
CMD_ABORT message to the VUA, instructing it to cancel the
previous dialogue activation.
Sm(CANCEL_DLG): This is a primitive received from the upper layer,
instructing the state machine to cancel the current dialogue. The
event is handled by sending a CMD_ABORT message to the VUA and the
state machine transitions to the DOC_LOADED state.
Rx(RESP_ERROR): The state machine receives a RESP_ERROR message from
the VUA indicating that an error occurred in activating a voice
dialogue.
Condition: The dialogue instance sequence number of the RESP_ERROR
message matches with the dialogue instance sequence number of the
state machine. This ensures that an error occurred while
activating the dialogue for which the GUA is awaiting a response.
The event is handled by notifying the upper layer with a DLG_ERROR
notification and the state machine transitions to the DOC_LOADED
state.
Engelsma & Cross Expires February 1, 2008 [Page 45]
Internet-Draft DMSP Protocol July 2007
Rx(RESP_OK): The state machine receives a RESP_OK message from the
VUA indicating that a voice dialogue has been activated
successfully.
Condition: The dialogue instance sequence number of the RESP_OK
message matches with the dialogue instance sequence number of the
state machine. This ensures the RESP_OK message corresponds to a
previously sent CMD_EXEC_FORM message, for which the GUA is
awaiting a response.
The event is handled by notifying the upper layer with a
DLG_ACTIVE notification and the state machine transitions to the
DLG_ACTIVE state.
+----------------+----------------+-------------+-------------------+
| Event | Condition | Next State | Action |
+----------------+----------------+-------------+-------------------+
| Sm(CLOSE_CONN) | | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(LOAD_DOC) | | DOC_SENT | Tx(CMD_LOAD_SRC) |
| | | | || |
| | | | Tx(CMD_LOAD_URL) |
| Sm(RUN_DLG) | | DLG_SENT | Tx(CMD_EXEC_FORM) |
| Sm(CANCEL_DLG) | | DOC_LOADED | Tx(CMD_ABORT) |
| Rx(RESP_ERROR) | Dialog | DOC_LOADED | N(DLG_ERROR) |
| | Sequence Match | | |
| Rx(RESP_OK) | Dialog | DLG_ACTIVE | N(DLG_ACTIVE) |
| | Sequence Match | | |
+----------------+----------------+-------------+-------------------+
Table 49: DLG_SENT State
4.4.1.7. DLG_ACTIVE State
The VUA has successfully activated a voice dialogue and the GUA can
remotely interact with it. As discussed above, this state can
optionally serve as an initial state for implementations in which a
VUA can be initialized in a running state by the underlying transport
mechanism. The following events are handled:
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the VUA and the state
machine transitions to the CONN_CLOSED state.
Engelsma & Cross Expires February 1, 2008 [Page 46]
Internet-Draft DMSP Protocol July 2007
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the VUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(LOAD_DOC): This is a primitive received from the upper layer,
instructing the state machine to load a VoiceXML document. The
event is handled by sending a CMD_LOAD_SRC or CMD_LOAD_URL message
to the VUA and the state machine transitions to the DOC_SENT
state.
Sm(RUN_DLG): This is a primitive received from the upper layer,
instructing the state machine to run another VoiceXML dialogue.
The event is handled by sending a CMD_EXEC_FORM message to the VUA
and the state machine transitions to the DLG_SENT state. Since
only one dialogue can be active at a time, the VUA state machine
will implicitly abort any currently running dialog.
Sm(CANCEL_DLG): This is a primitive received from the upper layer
instructing the state machine to cancel the current dialogue. The
event is handled by sending a CMD_ABORT message to the VUA and the
state machine transitions to the DOC_LOADED state.
Rx(EVT_RECO_RESULT): The state machine receives a EVT_RECO_RESULT
message from the VUA. This message will have the results of a
successful voice recognition. The event is handled by notifying
the upper layer with a DLG_RESULTS notification. The state
machine remains in the same state.
Rx(EVT_ERROR): The state machine receives a EVT_ERROR message from
the VUA. This message indicates the VUA has an encountered an
error while processing the dialogue. The event is handled by
notifying the upper layer with a DLG_ERROR notification. The
state machine remains in the same state.
Rx(EVT_HELP): The state machine receives a EVT_HELP message from the
VUA. This message indicates the dialogue has thrown a help event.
The event is handled by notifying the upper layer with a DLG_HELP
notification. The state machine remains in the same state.
Rx(EVT_NOMATCH): The state machine receives a EVT_NOMATCH message
from the VUA. This message indicates the dialogue has thrown a
nomatch event. The event is handled by notifying the upper layer
with a DLG_NOMATCH notification. The state machine remains in the
same state.
Engelsma & Cross Expires February 1, 2008 [Page 47]
Internet-Draft DMSP Protocol July 2007
Rx(EVT_NOINPUT): The state machine receives a EVT_NOINPUT message
from the VUA. This message indicates the dialogue has thrown a
noinput event. The event is handled by notifying the upper layer
with a DLG_NOINPUT notification. The state machine remains in the
same state.
Rx(EVT_VXMLDONE): The state machine receives a EVT_VXMLDONE message
from the VUA. This message indicates the VoiceXML browser has
completed filling the current form. The event is handled by
notifying the upper layer with a DLG_VXMLDONE notification. The
state machine remains in the same state.
Sm(UPDATE_DLG): This is a primitive received from the upper layer,
instructing the state machine to update the values of a VoiceXML
field. The event is handled by sending an CMD_SET_FIELDS message
to the VUA. The state machine remains in the same state.
Sm(FOCUS_DLG): This is a primitive received from the upper layer,
instructing the state machine to set the focus on a VoiceXML
field. The event is handled by sending a CMD_SET_FOCUS message to
the VUA. The state machine remains in the same state.
+---------------------+-------------+---------------------+
| Event | Next State | Action |
+---------------------+-------------+---------------------+
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | CONN_CLOSED | Notify(CONN_CLOSED) |
| Sm(LOAD_DOC) | DOC_SENT | Tx(CMD_LOAD_SRC) |
| | | || Tx(CMD_LOAD_URL) |
| Sm(RUN_DLG) | DLG_SENT | Tx(CMD_EXEC_FORM) |
| Sm(CANCEL_DLG) | DOC_LOADED | Tx(CMD_ABORT) |
| Rx(EVT_RECO_RESULT) | DLG_ACTIVE | N(DLG_RESULTS) |
| Rx(EVT_ERROR) | DLG_ACTIVE | N(DLG_ERROR) |
| Rx(EVT_HELP) | DLG_ACTIVE | N(DLG_HELP) |
| Rx(EVT_NOMATCH) | DLG_ACTIVE | N(DLG_NOMATCH) |
| Rx(EVT_NOINPUT) | DLG_ACTIVE | N(DLG_NOINPUT) |
| Rx(EVT_VXMLDONE) | DLG_ACTIVE | N(DLG_VXMLDONE) |
| Sm(UPDATE_DLG) | DLG_ACTIVE | Tx(CMD_SET_FIELDS) |
| Sm(FOCUS_DLG) | DLG_ACTIVE | Tx(CMD_SET_FOCUS) |
+---------------------+-------------+---------------------+
Table 50: DLG_Active State
4.4.1.8. VXML_START_SENT State
In this state the GUA is waiting for the a response from the VUA
indicating the session has been established, and the requested
VoiceXML dialogue is executing. The following events are handled:
Engelsma & Cross Expires February 1, 2008 [Page 48]
Internet-Draft DMSP Protocol July 2007
Rx(SIG_VXML_START): The state machine receives a SIG_VXML_START
message indicating that the VUA has accepted the connection
request and has started executing the requested VoiceXML dialogue.
The event is handled by notifying the upper layer with a
VXML_STARTED notification and the state machine transitions to the
DLG_ACTIVE state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message
indicating that the VUA has declined the connection request. The
event is handled by notifying the upper layer with a CONN_FAIL
notification and the state machine transitions back to the
CONN_CLOSED state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
used to initiate a connection close. The event is handled by
sending a SIG_CLOSE message to the VUA and the state machine
transitions back to the CONN_CLOSED state.
+--------------------+-------------+-----------------+
| Event | Next State | Action |
+--------------------+-------------+-----------------+
| Rx(SIG_VXML_START) | DLG_ACTIVE | N(VXML_STARTED) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_FAIL) |
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
+--------------------+-------------+-----------------+
Table 51: VXML_START_SENT State
4.4.2. VoiceXML User Agent State Machine
The VUA state machine consists of the following states:
CONN_CLOSED: Protocol is not established with the GUA. This is an
initial state.
CONN_RCVD The VUA has received a SIG_INIT from the GUA.
CONN_OPEN: The VUA has acknowledged session is established.
DOC_RCVD The VUA has received a request from the GUA to load a
document.
DOC_LOADED The VUA has acknowledged the requested document is
loaded.
Engelsma & Cross Expires February 1, 2008 [Page 49]
Internet-Draft DMSP Protocol July 2007
DLG_RCVD The VUA has received a request from the GUA to execute a
form.
DLG_ACTIVE: The VUA has acknowledged that the requested dialog is
now running. This is optionally an initial state.
VXML_START_RCVD The VUA has received a SIG_VXML_START from the GUA
to establish a session and invoke the initial VXML dialog.
As discussed in Section 4.4.1, both the VUA and GUA state machines
can be initiated in the DLG_ACTIVE state if the underlying transport
mechanism has been used to coordinate. In this case, implementations
must ensure that both state machines are initiated in their
respective DLG_ACTIVE states. The only other possibility allowed is
that both state machines are initiated in their respective
CONN_CLOSED states.
4.4.2.1. CONN_CLOSED State
This is an initial state of the VUA server state machine. In this
state, the underlying transport mechanism that carries the DMSP
message is assumed to be established. The following events can be
handled in this state:
Rx(SIG_INIT) A SIG_INIT message is received from the GUA, indicating
its intent to establish the protocol. The event is handled by
notifying the upper layer with a CONN_OPEN notification and the
state machine transitions to the CONN_RCVD state.
Rx(Rx(SIG_VXML_START)) A SIG_VXML_START message is received from the
GUA, indicating its intent to establish the protocol and initiate
the load and execution of a VoiceXML document. The event is
handled by notifying the upper layer with a VXML_START
notification and the state machine transitions to the
VXML_START_RCVD state.
+--------------------+-----------------+---------------+
| Event | Next State | Action |
+--------------------+-----------------+---------------+
| Rx(SIG_INIT) | CONN_RCVD | N(CONN_OPEN) |
| Rx(SIG_VXML_START) | VXML_START_RCVD | N(VXML_START) |
+--------------------+-----------------+---------------+
Table 52: CONN_CLOSED State
Engelsma & Cross Expires February 1, 2008 [Page 50]
Internet-Draft DMSP Protocol July 2007
4.4.2.2. CONN_RCVD State
The state machine has received a SIG_INIT request from the GUA. It
is possible to either initiate the protocol with the GUA or to
reject. The upper layer will determine this and call the appropriate
state machine primitive. The following events can be handled in this
state:
Sm(ACCEPT_CONN): This is a primitive received from the upper layer,
indicating that the connection has been accepted. The event is
handled by sending a SIG_INIT message to the GUA and the state
machine transitions to the CONN_OPEN state.
Sm(REJECT_CONN): This is a primitive received from the upper layer,
indicating that the connection has been rejected. The event is
handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
+-----------------+-------------+----------------+
| Event | Next State | Action |
+-----------------+-------------+----------------+
| Sm(ACCEPT_CONN) | CONN_OPEN | Tx(SIG_INIT) |
| Sm(REJECT_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_CLOSED) |
+-----------------+-------------+----------------+
Table 53: CONN_RCVD State
4.4.2.3. CONN_OPEN State
The protocol has been successfully initiated with the GUA. The
following events can be handled in this state:
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Engelsma & Cross Expires February 1, 2008 [Page 51]
Internet-Draft DMSP Protocol July 2007
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Rx(CMD_LOAD_URL): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given URL. The event is handled by notifying the upper layer with
a LOAD_DOC notification. The state machine transitions to the
DOC_RCVD state.
Rx(CMD_LOAD_SRC): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given string. The event is handled by notifying the upper layer
with a LOAD_DOC notification. The state machine transitions to
the DOC_RCVD state.
Rx(CMD_ADD_EVT_LISTENER): The VUA has received a
CMD_ADD_EVT_LISTENER from the GUA. The event is handled by
notifying the upper layer with an ADD_LISTENER notification.
There is no state transition.
Rx(CMD_REMOVE_EVT_LISTENER): The VUA has received a
CMD_REMOVE_EVT_LISTENER from the GUA. The event is handled by
notifying the upper layer with an REMOVE_LISTENER notification.
There is no state transition.
+-----------------------------+-------------+----------------+
| Event | Next State | Action |
+-----------------------------+-------------+----------------+
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(CMD_LOAD_URL) | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_LOAD_SRC) | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_ADD_EVT_LISTENER) | CONN_OPEN | N(ADD) |
| Rx(CMD_REMOVE_EVT_LISTENER) | CONN_OPEN | N(REMOVE) |
+-----------------------------+-------------+----------------+
Table 54: CONN_OPEN State
4.4.2.4. DOC_RCVD State
The VUA has received a request to load a VoiceXML document. The
following events can be handled in this state:
Engelsma & Cross Expires February 1, 2008 [Page 52]
Internet-Draft DMSP Protocol July 2007
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Sm(DOC_ERROR): This is a primitive received from the upper layer,
indicating that an error occurred while loading a document.
Condition: The document instance sequence number in the primitive
matches with the document instance sequence number of the state
machine.
The event is handled by sending a RESP_ERROR message to the GUA
and the state machine transitions to the CONN_OPEN state.
Sm(DOC_LOADED): This is a primitive received from the upper layer,
indicating that a document has been loaded successfully.
Condition: The document instance sequence number in the primitive
matches with the document instance sequence number of the state
machine.
The event is handled by sending a RESULT_OK message to the GUA and
the state machine transitions to the DOC_LOADED state.
Rx(CMD_LOAD_URL): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given URL. The event is handled by notifying the upper layer with
a LOAD_DOC notification. The state machine transitions to the
DOC_RCVD state.
Rx(CMD_LOAD_SRC): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from a
string the GUA has sent. The event is handled by notifying the
upper layer with a LOAD_DOC notification. The state machine
transitions to the DOC_RCVD state.
Engelsma & Cross Expires February 1, 2008 [Page 53]
Internet-Draft DMSP Protocol July 2007
+------------------+-----------------+-------------+----------------+
| Event | Condition | Next State | Action |
+------------------+-----------------+-------------+----------------+
| Rx(SIG_CLOSE) | | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(CLOSE_CONN) | | CONN_CLOSED | Tx(SIG_CLOSE) |
| Sm(DOC_ERROR) | Document | CONN_OPEN | Tx(RESP_ERROR) |
| | Sequence Match | | |
| Sm(DOC_LOADED) | Document | DOC_LOADED | Tx(RESP_OK) |
| | Sequence Match | | |
| Rx(CMD_LOAD_URL) | | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_LOAD_SRC) | | DOC_RCVD | N(LOAD_DOC) |
+------------------+-----------------+-------------+----------------+
Table 55: DOC_RCVD State
4.4.2.5. DOC_LOADED State
The VUA has successfully loaded a VoiceXML document. The following
events are handled:"
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Rx(CMD_LOAD_URL): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given URL. The event is handled by notifying the upper layer with
a LOAD_DOC notification. The state machine transitions to the
DOC_RCVD state.
Rx(CMD_LOAD_SRC): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from a
string sent by the GUA. The event is handled by notifying the
upper layer with a LOAD_DOC notification. The state machine
transitions to the DOC_RCVD state.
Rx(CMD_EXEC_FORM): This is a message received from the GUA
instructing the state machine to activate a VoiceXML form. The
event is handled by notifying the upper layer with a RUN_DLG
notification. The state machine transitions to the DLG_RCVD
state.
Engelsma & Cross Expires February 1, 2008 [Page 54]
Internet-Draft DMSP Protocol July 2007
Rx(CMD_ADD_EVT_LISTENER): The VUA has received a
CMD_ADD_EVT_LISTENER from the GUA. The event is handled by
notifying the upper layer with an ADD_LISTENER notification.
There is no state transition.
Rx(CMD_REMOVE_EVT_LISTENER): The VUA has received a
CMD_REMOVE_EVT_LISTENER from the GUA. The event is handled by
notifying the upper layer with an REMOVE_LISTENER notification.
There is no state transition.
+-----------------------------+-------------+----------------+
| Event | Next State | Action |
+-----------------------------+-------------+----------------+
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(CMD_LOAD_URL) | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_LOAD_SRC) | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_EXEC_FORM) | DLG_RCVD | N(RUN_DLG) |
| Rx(CMD_ADD_EVT_LISTENER) | DOC_LOADED | N(ADD) |
| Rx(CMD_REMOVE_EVT_LISTENER) | DOC_LOADED | N(REMOVE) |
+-----------------------------+-------------+----------------+
Table 56: DOC_LOADED State
4.4.2.6. DLG_RCVD State
The state machine has received a dialogue activation request from the
GUA and the request has been passed on to the upper layer. The
following events are handled:
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Rx(CMD_LOAD_URL): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given URL. The event is handled by notifying the upper layer with
a LOAD_DOC notification. The state machine transitions to the
DOC_RCVD state.
Engelsma & Cross Expires February 1, 2008 [Page 55]
Internet-Draft DMSP Protocol July 2007
Rx(CMD_LOAD_SRC): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from a
string sent by the GUA. The event is handled by notifying the
upper layer with a LOAD_DOC notification. The state machine
transitions to the DOC_RCVD state.
Rx(CMD_EXEC_FORM): This is a message received from the GUA
instructing the state machine to activate a VoiceXML dialogue.
The event is handled by notifying the upper layer with a RUN_DLG
notification. The state machine transitions to the DLG_RCVD
state.
Rx(CMD_ABORT): This is a message received from the GUA instructing
the state machine to deactivate a voice dialogue. The event is
handled by notifying the upper layer with a CANCEL_DLG
notification. The state machine transitions to the DOC_LOADED
state.
Sm(DLG_ERROR): This is a primitive received from the upper layer
indicating that an error occurred in activating a voice dialogue.
The event is handled by sending a RESULT_ERROR message to the GUA.
The state machine transitions to the DOC_LOADED state.
Condition: The dialogue instance sequence number in the primitive
matches with the dialogue instance sequence number of the state
machine.
Sm(DLG_ACTIVE): This is a primitive received from the upper layer
indicating that a voice dialogue has been activated successfully.
The event is handled by sending a DLG_ACTIVE message to the GUA.
The state machine transitions to the DLG_ACTIVE state.
Condition: The dialogue instance sequence number in the primitive
matches with the dialogue instance sequence number of the state
machine.
Engelsma & Cross Expires February 1, 2008 [Page 56]
Internet-Draft DMSP Protocol July 2007
+-------------------+----------------+-------------+----------------+
| Event | Condition | Next State | Action |
+-------------------+----------------+-------------+----------------+
| Rx(SIG_CLOSE) | | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(CLOSE_CONN) | | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(CMD_LOAD_URL) | | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_LOAD_SRC) | | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_EXEC_FORM) | | DLG_RCVD | N(RUN_DLG) |
| Rx(CMD_ABORT) | | DOC_LOADED | N(CANCEL_DLG) |
| Sm(DLG_ERROR) | Dialog | DOC_LOADED | Tx(RESP_ERROR) |
| | Sequence Match | | |
| Sm(DLG_ACTIVE) | Dialog | DLG_ACTIVE | Tx(RESP_OK) |
| | Sequence Match | | |
+-------------------+----------------+-------------+----------------+
Table 57: DOC_RCVD State
4.4.2.7. DLG_ACTIVE State
The VUA has successfully activated a voice dialogue with which a GUA
can interact remotely. The following events are handled:
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message from
the GUA. This instructs it to close the connection. The event is
handled by notifying the upper layer with a CONN_CLOSED
notification and the state machine transitions to the CONN_CLOSED
state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
instructing the state machine to close the connection. The event
is handled by sending a SIG_CLOSE message to the GUA and the state
machine transitions to the CONN_CLOSED state.
Rx(CMD_LOAD_URL): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from the
given URL. The event is handled by notifying the upper layer with
a LOAD_DOC notification. The state machine transitions to the
DOC_RCVD state.
Rx(CMD_LOAD_SRC): This is a message received from the GUA
instructing the state machine to load a VoiceXML document from a
string sent by the GUA. The event is handled by notifying the
upper layer with a LOAD_DOC notification. The state machine
transitions to the DOC_RCVD state.
Engelsma & Cross Expires February 1, 2008 [Page 57]
Internet-Draft DMSP Protocol July 2007
Rx(CMD_EXEC_FORM): This is a message received from the GUA
instructing the state machine to activate a VoiceXML dialogue.
The event is handled by notifying the upper layer with a RUN_DLG
notification. The state machine transitions to the DLG_RCVD
state. Since another form is actively executing when the
CMD_EXEC_FORM is received in this state, the VUA will implicitly
abort that form's execution.
Rx(CMD_ABORT): This is a message received from the GUA instructing
the state machine to deactivate a voice dialogue. The event is
handled by notifying the upper layer with a CANCEL_DLG
notification. The state machine transitions to the DOC_LOADED
state.
Sm(DLG_RESULTS): This is a primitive received from the upper layer.
It contains the results of a successful voice recognition or an
error in case an error occurred in the voice recognition. The
event is handled by sending the appropriate event message to the
GUA. There is no transition in the state machine.
Condition: The dialogue instance sequence number in the message
matches with the dialogue instance sequence number of the state
machine.
Rx (CMD_SET_FIELDS): This is a message received from a GUA
containing updated values of a field in an active voice dialogue.
The event is handled by notifying the upper layer with a
UPDATE_DLG notification. There is no transition in the state
machine.
Rx (CMD_SET_FOCUS): This is a message received from a GUA,
instructing the VUA to set the focus on a particular field in an
active voice dialogue. The event is handled by notifying the
upper layer with a FOCUS_DLG notification. There is no transition
in the state machine.
Engelsma & Cross Expires February 1, 2008 [Page 58]
Internet-Draft DMSP Protocol July 2007
+-------------------+----------+-------------+----------------------+
| Event | Conditio | Next State | Action |
| | n | | |
+-------------------+----------+-------------+----------------------+
| Rx(SIG_CLOSE) | | CONN_CLOSED | N(CONN_CLOSED) |
| Sm(CLOSE_CONN) | | CONN_CLOSED | Tx(SIG_CLOSE) |
| Rx(CMD_LOAD_URL) | | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_LOAD_SRC) | | DOC_RCVD | N(LOAD_DOC) |
| Rx(CMD_EXEC_FORM) | | DLG_RCVD | N(RUN_DLG) |
| Rx(CMD_ABORT) | | DOC_LOADED | N(CANCEL_DLG) |
| Sm(DLG_RESULTS) | Dialog | DLG_ACTIVE | Tx(EVT_RECO_RESULTS) |
| | Sequence | | |
| | Match | | |
| | | | || Tx(EVT_ERROR) |
| | | | || Tx(EVT_HELP) |
| | | | || Tx(EVT_NOMATCH) |
| | | | || Tx(EVT_NOINPUT) |
| | | | || Tx(EVT_VXMLDONE) |
| Rx(CMD_SET_FIELDS | | DLG_ACTIVE | N(UPDATE_DLG) |
| ) | | | |
| Rx(CMD_SET_FOCUS) | | DLG_ACTIVE | N(FOCUS_DLG) |
+-------------------+----------+-------------+----------------------+
Table 58: DOC_ACTIVE State
4.4.2.8. VXML_START_RCVD State
The VUA has received a SIG_VXML_START message from the GUA. These
events are handled:
Sm(VXML_STARTED): This is a primitive received from the upper layer,
that indicates the session is initialized, the VXML document
loaded, and the dialogue executing. The event is handled by
sending a SIG_VXML_START to the GUA and transitioning to the
DLG_ACTIVE state.
Rx(SIG_CLOSE): The state machine receives a SIG_CLOSE message
indicating that the GUA has terminated the session. The event is
handled by notifying the upper layer with a CONN_FAIL notification
and the state machine transitions back to the CONN_CLOSED state.
Sm(CLOSE_CONN): This is a primitive received from the upper layer,
used to initiate a connection close. The event is handled by
sending a SIG_CLOSE message to the GUA and the state machine
transitions back to the CONN_CLOSED state.
Engelsma & Cross Expires February 1, 2008 [Page 59]
Internet-Draft DMSP Protocol July 2007
+------------------+-------------+--------------------+
| Event | Next State | Action |
+------------------+-------------+--------------------+
| Sm(VXML_STARTED) | DLG_ACTIVE | Tx(SIG_VXML_START) |
| Rx(SIG_CLOSE) | CONN_CLOSED | N(CONN_FAIL) |
| Sm(CLOSE_CONN) | CONN_CLOSED | Tx(SIG_CLOSE) |
+------------------+-------------+--------------------+
Table 59: VXML_START_RCVD State
5. Message Transport
DMSP is specified independent of the underlying transport mechansim.
The inclusion of rudimentary signaling messages in the protocol
provide implementation flexibility in that the protocol can be
implemented directly on a native transport layer protocol such as
TCP, or carried by popular application layer protocols such as SIP
and HyperText Transport Protocol (HTTP).
6. IANA Considerations
A media type registration may be required for DMSP, depending on
which application layer transport protocol an implementation uses.
It is anticipated that bindings of DMSP to specific application
protocols such as SIP and HTTP would be specified separately and
would include the appropriate IANA requirements.
7. Security Considerations
The DMSP protocol may carry sensitive application information such as
account numbers, passwords, private information, etc. For this
reason it is important that clients have the option of secure
communication with the VUA for both messages it sends and receives,
though the GUA is not required to use it. This can be achieved by
imposing following requirement on DMSP VoiceXML user agent
implementations: All DMSP VoiceXML user agents MUST be implemented
upon transport mechanisms that can be properly secured.
8. Contributors
The editors acknowledge the following individuals made significant
contributions to DMSP:
Jaroslav Gergic (IBM)
Engelsma & Cross Expires February 1, 2008 [Page 60]
Internet-Draft DMSP Protocol July 2007
Rafah Hosn (IBM)
Thomas Ling (IBM)
Charles Wiecha (IBM)
Michael Pearce (Motorola)
Rohit Chaudhri (Motorola)
James Ferrans (Motorola)
Paolo Baggia (Loquendo)
Andrew Wahbe (VoiceGenie)
9. References
9.1. Normative References
[1] Bradner, S., "The Internet Standards Process -- Revision 3",
BCP 9, RFC 2026, October 1996.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", RFC 3986,
January 2005.
[4] Kristol, D. and L. Montulli, "HTTP State Management Mechanism",
RFC 2965, October 2000.
9.2. Informative References
[5] Worldwide Web Consortium, "Voice Extensible Markup Language
(VoiceXML) Version 2.0", W3C Recommendation (http://www.w3.org/
TR/2004/REC-voicexml20-20040316/), March 2004.
[6] Worldwide Web Consortium, "Multimodal Architecture and
Interfaces", W3C Working
Draft (http://www.w3.org/TR/mmi-arch/), April 2006.
[7] Open Mobile Alliance, "OMA Multimodal and Multi-device Enabler
Architecture", Draft OMA-AD-MMMD-V1_0-20060612-D, June 2006.
[8] Krasner, G. and S. Pope, "A cookbook for using the model-view-
controller user interface paradigm in Smalltalk-80."", Journal
of Object-Oriented Programming 1(3):26-49, August/
September 1988.
[9] Worldwide Web Consortium, "Document Object Model (DOM) Level 2
Core Specification", W3C Recommendation (http://www.w3.org/TR/
2000/REC-DOM-Level-2-Core-20001113/), November 2000.
Engelsma & Cross Expires February 1, 2008 [Page 61]
Internet-Draft DMSP Protocol July 2007
[10] Worldwide Web Consortium, "Semantic Interpretation for Speech
Recognition", W3C
Recommendation (http://www.w3.org/TR/semantic-interpretation/),
January 2006.
[11] Worldwide Web Consortium, "XML Events, An Events Syntax for
XML", W3C Recommendation (http://www.w3.org/TR/xml-events/),
October 2003.
[12] VoiceXML Forum, "XHTML+Voice Profile 1.2", March 2004.
[13] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[14] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
"RTP: A Transport Protocol for Real-Time Applications",
RFC 3550, July 2003.
[15] Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie, "Real-
Time Transport Protocol (RTP) Payload Format and File Storage
Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-
Rate Wideband (AMR-WB) Audio Codecs", RFC 3267, June 2002.
[16] European Telecommunications Standards Institute (ETSI) Standard
ES 202 050, "Speech Processing, Transmission and Quality
Aspects (STQ); Distributed Speech Recognition; Front-end
Feature Extraction Algorithm; Compression Algorithms",
(http://pda.etsi.org/pda/) , October 2002.
[17] European Telecommunications Standards Institute (ETSI) Standard
ES 202 211, "Speech Processing, Transmission and Quality
Aspects (STQ); Distributed Speech Recognition; Extended front-
end feature extraction algorithm; Compression algorithms; Back-
end speech reconstruction algorithm",
(http://pda.etsi.org/pda/) , November 2003.
[18] European Telecommunications Standards Institute (ETSI) Standard
ES 202 212, "Speech Processing, Transmission and Quality
aspects (STQ); Distributed speech recognition; Extended
advanced front-end feature extraction algorithm; Compression
algorithms; Back-end speech reconstruction algorithm",
(http://pda.etsi.org/pda/) , November 2003.
[19] Xie, Q., "RTP Payload Format for European Telecommunications
Standards Institute (ETSI) European Standard ES 201 108
Distributed Speech Recognition Encoding", RFC 3557, July 2003.
Engelsma & Cross Expires February 1, 2008 [Page 62]
Internet-Draft DMSP Protocol July 2007
[20] Xie, Q. and D. Pearce, "RTP Payload Formats for European
Telecommunications Standards Institute (ETSI) European Standard
ES 202 050, ES 202 211, and ES 202 212 Distributed Speech
Recognition Encoding", RFC 4060, May 2005.
[21] Shanmugham, S. and D. Burnett, "Media Resource Control Protocol
Version 2(MRCPv2)", IETF Internet Draft , September 2006.
[22] Worldwide Web Consortium, "Document Object Model (DOM) Level 2
Events Specification", W3C Recommendation (http://www.w3.org/
TR/2000/REC-DOM-Level-2-Events-20001113/), November 2000.
Appendix A. Schema for XML Message Encoding
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="http://www.ietf.org/dmsp"
xmlns:dmsp="http://www.ietf.org/dmsp"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:annotation id="x-version">
<xsd:documentation>1.0</xsd:documentation>
</xsd:annotation>
<xsd:element name="packet">
<xsd:complexType>
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element ref="dmsp:signal" />
<xsd:element ref="dmsp:command" />
<xsd:element ref="dmsp:response" />
<xsd:element ref="dmsp:event" />
</xsd:choice>
<xsd:attributeGroup ref="dmsp:common" />
<xsd:attribute name="version" type="dmsp:versionType"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="signal">
<xsd:complexType>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element ref="dmsp:init" />
<xsd:element ref="dmsp:vxml_start" />
<xsd:element ref="dmsp:close" />
</xsd:choice>
Engelsma & Cross Expires February 1, 2008 [Page 63]
Internet-Draft DMSP Protocol July 2007
<xsd:attributeGroup ref="dmsp:common" />
</xsd:complexType>
</xsd:element>
<xsd:element name="command">
<xsd:complexType>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element ref="dmsp:add_evt_listener" />
<xsd:element ref="dmsp:remove_evt_listener" />
<xsd:element ref="dmsp:can_dispatch" />
<xsd:element ref="dmsp:dispatch_evt" />
<xsd:element ref="dmsp:load_url" />
<xsd:element ref="dmsp:load_src" />
<xsd:element ref="dmsp:set_focus" />
<xsd:element ref="dmsp:get_focus" />
<xsd:element ref="dmsp:set_fields" />
<xsd:element ref="dmsp:get_fields" />
<xsd:element ref="dmsp:cancel" />
<xsd:element ref="dmsp:exec_form" />
</xsd:choice>
<xsd:attributeGroup ref="dmsp:common" />
</xsd:complexType>
</xsd:element>
<xsd:element name="response">
<xsd:complexType>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="syntax_error" type="dmsp:error_struct" />
<xsd:element name="semantic_error"
type="dmsp:error_struct" />
<xsd:element name="boolean_value" type="xsd:boolean" />
<xsd:element name="string_value" type="xsd:string" />
<xsd:element name="fields_value" type="dmsp:field_set" />
</xsd:choice>
<xsd:attributeGroup ref="dmsp:common" />
<xsd:attribute name="to" type="xsd:NCName"
use="required" />
<xsd:attribute name="status" type="dmsp:resultCodeEnum"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="event">
<xsd:complexType>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="uiEvent" type="dmsp:uiEventType" />
<xsd:element name="mouseEvent" type="dmsp:mouseEventType" />
<xsd:element name="keyboardEvent"
Engelsma & Cross Expires February 1, 2008 [Page 64]
Internet-Draft DMSP Protocol July 2007
type="dmsp:keyboardEventType" />
<!-- the following elements do not correspond to W3C structures -->
<xsd:element name="x-uri" type="xsd:anyURI" />
<xsd:element name="x-errorStruct" type="dmsp:errorStruct" />
<xsd:element name="x-valueChange"
type="dmsp:valueChangeType" />
<xsd:element name="x-formData" type="dmsp:fieldSetType" />
<xsd:element name="x-interaction"
type="dmsp:interactionType" />
<xsd:element name="x-recoResult"
type="dmsp:recoResultType" />
<xsd:element name="x-recoResultEx"
type="dmsp:recoResultExType" />
<xsd:element name="x-custom" type="xsd:string" />
</xsd:choice>
<xsd:attributeGroup ref="dmsp:common" />
<xsd:attribute name="correlation" type="xsd:NCName"
use="optional" />
<xsd:attribute name="type" type="dmsp:eventTypeEnum"
use="required" />
<xsd:attribute name="namespace" type="xsd:anyURI"
use="required" />
<xsd:attribute name="userAgent" type="xsd:token"
use="required" />
<xsd:attribute name="targetNodeId" type="xsd:token"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name="common">
<xsd:attribute name="id" type="xsd:ID" use="required" />
<xsd:attribute name="timestamp" type="xsd:long"
use="required" />
</xsd:attributeGroup>
<xsd:element name="init">
<xsd:complexType>
<xsd:attribute name="version" type="xsd:string"
use="required"/>
<xsd:attribute name="sessionID" type="xsd:string"
use="required"/>
<xsd:attribute name="userAgent" type="xsd:string"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="add_evt_listener">
<xsd:complexType>
Engelsma & Cross Expires February 1, 2008 [Page 65]
Internet-Draft DMSP Protocol July 2007
<xsd:attribute name="targetNodeId" type="xsd:token"
use="required" />
<xsd:attribute name="eventType" type="dmsp:eventTypeEnum"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="remove_evt_listener">
<xsd:complexType>
<xsd:attribute name="targetNodeId" type="xsd:token"
use="required" />
<xsd:attribute name="eventType" type="dmsp:eventTypeEnum"
use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="can_dispatch">
<xsd:complexType>
<xsd:attribute name="eventType" type="dmsp:eventTypeEnum"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="dispatch_evt">
<xsd:complexType>
<xsd:all>
<xsd:element ref="dmsp:event" />
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="load_url">
<xsd:complexType>
<xsd:attribute name="url" type="xsd:anyURI" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="load_src">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="baseURI" type="xsd:anyURI"
use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Engelsma & Cross Expires February 1, 2008 [Page 66]
Internet-Draft DMSP Protocol July 2007
<xsd:element name="set_focus">
<xsd:complexType>
<xsd:attribute name="nodeId" type="xsd:token"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="get_focus">
<xsd:complexType></xsd:complexType>
</xsd:element>
<xsd:element name="set_fields" type="dmsp:fieldSetType" />
<xsd:element name="get_fields">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="nodeId" type="xsd:token" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="cancel">
<xsd:complexType></xsd:complexType>
</xsd:element>
<xsd:element name="exec_form">
<xsd:complexType>
<xsd:attribute name="formId" type="xsd:NCName"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:complexType name="error_struct">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="code" type="xsd:token"
use="required" />
<xsd:attribute name="place" type="xsd:token"
use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="MFEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="GUI" />
<xsd:enumeration value="SPEECH" />
Engelsma & Cross Expires February 1, 2008 [Page 67]
Internet-Draft DMSP Protocol July 2007
</xsd:restriction>
</xsd:simpleType>
<!-- DOM Events Level 3 / UIEvent -->
<xsd:complexType name="uiEventType">
<xsd:attribute name="detail" type="xsd:long" use="optional"/>
</xsd:complexType>
<!-- DOM Events Level 2 / MouseEvent -->
<xsd:complexType name="mouseEventType">
<xsd:complexContent>
<xsd:extension base="dmsp:uiEventType">
<xsd:attribute name="screenX" type="xsd:long" use="optional"/>
<xsd:attribute name="screenY" type="xsd:long" use="optional"/>
<xsd:attribute name="clientX" type="xsd:long" use="required"/>
<xsd:attribute name="clientY" type="xsd:long" use="required"/>
<xsd:attribute name="ctrlKey" type="xsd:boolean"
use="optional" />
<xsd:attribute name="shiftKey" type="xsd:boolean"
use="optional" />
<xsd:attribute name="altKey" type="xsd:boolean"
use="optional" />
<xsd:attribute name="metaKey" type="xsd:boolean"
use="optional" />
<xsd:attribute name="button" type="xsd:unsignedShort"
use="required" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- DOM Events Level 3 / KeyboardEvent -->
<xsd:complexType name="keyboardEventType">
<xsd:complexContent>
<xsd:extension base="dmsp:uiEventType">
<xsd:attribute name="keyIdentifier" type="xsd:token"
use="required"/>
<xsd:attribute name="keyLocation" type="xsd:unsignedLong"
use="optional"/>
<xsd:attribute name="ctrlKey" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="shiftKey" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="altKey" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="metaKey" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="altGraphKey" type="xsd:boolean"
use="optional"/>
Engelsma & Cross Expires February 1, 2008 [Page 68]
Internet-Draft DMSP Protocol July 2007
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!-- eXtension structure / captures field change data -->
<xsd:complexType name="valueChangeType">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="field">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="value" type="xsd:string" />
</xsd:sequence>
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="oldValue" type="xsd:string" />
</xsd:sequence>
</xsd:sequence>
<xsd:attribute name="nodeId" type="xsd:token"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- eXtension structure/captures form data - name/value pairs -->
<xsd:complexType name="field_set">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="field">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="value" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="nodeId" type="xsd:token"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- eXtension structure/captures voice specific events data -->
<xsd:complexType name="interactionType">
<xsd:attribute name="count" type="xsd:unsignedInt"
use="required" />
<xsd:attribute name="handled" type="xsd:boolean"
use="required" />
</xsd:complexType>
Engelsma & Cross Expires February 1, 2008 [Page 69]
Internet-Draft DMSP Protocol July 2007
<xsd:complexType name="recoResultType">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="result">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rawUtterance" type="xsd:string" />
<xsd:element name="fieldSet" type="dmsp:fieldSetType" />
</xsd:sequence>
<xsd:attribute name="score" type="xsd:float"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="recoResultExType">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="result">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rawUtterance" type="xsd:string" />
<xsd:element name="grammar" type="xsd:anyURI" />
<xsd:element name="semantics" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="score" type="xsd:float"
use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="stateEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="associated" />
<xsd:enumeration value="loading" />
<xsd:enumeration value="loaded" />
<xsd:enumeration value="ready" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="resultCodeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="OK" />
<xsd:enumeration value="ERR_SYNTAX" />
<xsd:enumeration value="ERR_SEMANTICS" />
</xsd:restriction>
</xsd:simpleType>
Engelsma & Cross Expires February 1, 2008 [Page 70]
Internet-Draft DMSP Protocol July 2007
<xsd:simpleType name="versionType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1}\.\d{1}\.\d{3}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="eventTypeEnum">
<xsd:restriction base="xsd:string">
<!-- DOM Events Level 3 / 1.4 Event types (subset) -->
<!-- xml-events namespace -->
<xsd:enumeration value="DOMActivate"/> <!-- uiEvent -->
<xsd:enumeration value="DOMFocusIn" /> <!-- uiEvent -->
<xsd:enumeration value="DOMFocusOut"/> <!-- uiEvent -->
<xsd:enumeration value="click" /> <!-- mouseEvent -->
<xsd:enumeration value="mousedown" /> <!-- mouseEvent -->
<xsd:enumeration value="mouseup" /> <!-- mouseEvent -->
<xsd:enumeration value="keydown" /> <!-- keyboardEvent -->
<xsd:enumeration value="keyup" /> <!-- keyboardEvent -->
<xsd:enumeration value="load" /> <!-- x-uri -->
<xsd:enumeration value="unload" /> <!-- x-uri -->
<xsd:enumeration value="abort" /> <!-- x-uri -->
<xsd:enumeration value="error" /> <!-- x-errorStruct -->
<xsd:enumeration value="change" /> <!-- x-valueChange -->
<xsd:enumeration value="submit" /> <!-- x-formData -->
<xsd:enumeration value="reset" /> <!-- x-formData -->
<!-- VoiceXML namespace -->
<xsd:enumeration value="help" /> <!-- x-interaction -->
<xsd:enumeration value="nomatch" /> <!-- x-interaction -->
<xsd:enumeration value="noinput" /> <!-- x-interaction -->
<!-- XHTML + VoiceXML namespace -->
<xsd:enumeration value="vxmldone" /> <!-- x-formData -->
<xsd:enumeration value="recoResult" /> <!-- x-recoResult -->
<xsd:enumeration value="recoResultEx"/><!-- x-recoResultEx -->
<!-- Custom events (any namespace) -->
<xsd:enumeration value="custom" /> <!-- x-custom -->
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Engelsma & Cross Expires February 1, 2008 [Page 71]
Internet-Draft DMSP Protocol July 2007
Authors' Addresses
Jonathan Engelsma, Editor
Motorola, Inc.
1295 E. Algonquin Road
Schaumburg, IL 60196
US
Phone: +1-616-777-0432
Email: Jonathan.Engelsma@motorola.com
Chris Cross, Editor
IBM
8051 Congress Ave
Boca Raton, FL 33487
US
Phone: +1-561-862-2102
Email: xcross@us.ibm.com
Engelsma & Cross Expires February 1, 2008 [Page 72]
Internet-Draft DMSP Protocol July 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Engelsma & Cross Expires February 1, 2008 [Page 73]