When the accept attribute of choice is
set to "approximate", or is not set and the accept attribute of its
enclosing menu is set to "approximate", then the text of the choice
element defines an approximate recognition phrase, as defined under
"Grammar Generation" in section 2.2.
The type attribute, if present,
specifies the name of one of the following builtin grammar types from
Appendix P: boolean, date, digits, currency, number, phone, time.
[optional] A field containing two
builtin grammar elements, one referring to the builtin speech grammar
and the other referring to the builtin DTMF grammar of the same type is
equivlent to a field whose type attribute is set to the equivalent
type.
A VoiceXML document can initiate a
transfer to another entity using the transfer tag, such that the
Interpreter remains connected to the original caller and interpretation
resumes upon termination of the transfer.
A VoiceXML document can initiate a
transfer to another entity using the transfer tag, such that the
Interpreter disconnects from the caller immediately upon attempting the
transfer and continues execution as it would under termination of the
Session.
A bridged transfer can contain speech
grammars such that the interpreter listens to the original caller for
the duration of the transfer, terminating the transfer as soon as a
spoken utterance matches an active speech grammar.
A bridged transfer specifying a
'connecttimeout' attribute with a W3C time specification will terminate
a transfer attempt if the destination entity cannot be connected to
within that period of time.
A bridged transfer specifying a
'maxtime' attribute with a W3C time specification will terminate a
transfer after that period of time has elapsed after connecting to the
destination entity if it has not already been terminated for other
reasons.
A bridged transfer specifying a
'transferaudio' attribute with valid URI to an audio file wil play that
audio from the beginning of the transfer attempt until the attempt is
terminated or the destination entity is connected to.
If the originating caller hangs up
during a bridged transfer, a 'connection.disconnect.hangup' event is
thrown and the transfer name variable remains undefined.
If the Interpreter is unable to
connect to the destination entity when attempting a transfer because it
is busy, the transfer name variable is filled with the value 'busy'.
If a transfer is terminated because
the original caller matches an active DTMF grammar, the transfer name
variable is filled with the value 'near_end_disconnect'.
If a bridge transfer is terminated by
the Interpreter because the 'maxtime' has expired without the transfer
being terminated, the transfer name variable is filled with the value
'maxtime_disconnect'.
Upon termination of bridge transfer,
the shadow variable 'name$.duration' (where name is the name attribute
of the transfer element) is set to the number of seconds from the time
the destination entity was connected to and the transfer was
terminated.
Upon termination of bridge transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'voice'.
Upon termination of bridge transfer
due to the caller matching an active DTMF grammar
('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'dtmf'.
Upon termination of a bridge transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), the 'name$.utterance' shadow variable is set
to utterance text.
session.connection.redirect returns an
array representing the connection redirection paths. The first element
is the original called number, the last element is the last redirected
number. Each element of the array contains a uri, pi (presentation
information), si (screening information), and reason property. The
reason property can be either "unknown", "user busy", "no reply",
"deflection during alerting", "deflection immediate response", "mobile
subscriber not reachable".
session.connection.originator returns
the local or remote property. (For instance, the following ECMAScript
would return true if the remote party initiated the connection: var
caller_initiate = connection.originator == connection.remote;
A bridged transfer can contain DTMF
grammars such that the interpreter listens to the original caller for
the duration of the transfer, terminating the transfer as soon as DTMF
input matches an active DTMF grammar.
The form item 'object' has a guard
condition specified with the cond attribute. A form item is visited if
it is not filled and its cond is not specified or evaluates, after
conversion to boolean, to true.
The input item transfer may contain
the filled element. Filled elements contain an action to execute after
the result input item variable is filled in.
Upon termination of a bridged transfer
due to the caller matching an active DTMF grammar
('near_end_disconnect'), application.lastresult$ is assigned to the
DTMF result.
Upon termination of a bridged transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), application.lastresult$.utterance is assigned
the same value as the transfer's utterance shadow.
If a bridged transfer is terminated
due to a reason other than the caller matching an active speech or DTMF
grammar ('near_end_disconnect'), application.lastresult$ is undefined.
When the accept attribute of an option
element is set to "approximate", the user may say a subphrase of the
specified PCDATA for the option to be selected.
If the caller has insufficient
permission to perform a call transfer (e.g. not allowed to make long
distance calls, not permitted to make any transfers, etc.), destination
URL is malformed, a error.connection.noauthorization error is thrown.
The name
(session.connection.protocol.name) also represents the subobject name
for protocol specific information. For instance, if
session.connection.protocol.name is 'q931',
session.connection.protocol.q931.uui might specify the user-to-user
information property of the connection.
An application root document's
variables are defined and reachable via the application scope upon the
loading of a document that specifies it as the application root.
An application root document's
variables are no longer reachable from the application scope when the
user transitions to a document not in that application.
A user can direct interpretation in
scenarios where grammars outside the current dialog are active, by
matching one of these grammars, at which point execution transitions to
the dialog containing the matched grammar.
The value of xml:lang must be
inherited down the document hierarchy by elements which also define the
xml:lang attribute and do not have an alternative value.
When transitioning between two leaf
documents that both specify the same application fully resolved URI
then the transition must preserve the application root document's
variables for use by the second leaf document.
A transition from an application leaf
document to its own application root document caused by a 'goto' must
preserve the application root document's variables for use by the root
document.
If a transition occurs as the result
of a submit between an application leaf document and its own
application root document the application root document's variables
must be re-initialized.
If a transition occurs from an
application root document to a different application root document it
must initialize the new application root document and use the new
application root document's variables.
A form may contain form items, which
are subdivided into input items ( <field>, <record>,
<transfer>, <object>, <subdialog>) and control items
(<block> and <initial>).
The value of the name attribute of a
form item defines a dialog-scoped variable that holds the value of the
form item, i.e., dialog.name is a reference to the form item variable.
For all types of form item, if the
form item is assigned a value, that form item is not eligible to be
visited by the FIA (unless/until it is subsequently set to undefined).
Using the clear tag on a form item
variable will make it eligible to be visited by the FIA (provided that
it does not have a cond attribute evaluating to false).
If the last main FIA loop did not
result in a goto nextitem and there is no form item which is eligible
to be visited then an implicit exit is generated.
If an event handler, executed after an
event is thrown while processing a form item, transfers control with a
<goto> or <submit>, the FIA resumes in the new form at the
initialisation phase.
If an event handler, executed after an
event is thrown while processing a form item, does not transfer control
with a <goto> or <submit> the FIA resumes in the current
form at the selection phase.
If an event is thrown during the
execution of a <filled>, event handler selection starts in the
scope of the <filled>, which could be a form item or the form
itself, and then proceeds outward by enclosing dialog scopes.
If a menu's scope attribute is set to
"document", the menu's grammars are active over the whole document (or
if the menu is in the application root document, any loaded document in
the application).
If a menu's dtmf attribute is set to
"true", the first nine choices that have not explicitly specified a
value for the dtmf attribute are given the implicit ones "1", "2", etc.
Remaining choices that have not explicitly specified a value for the
dtmf attribute will not be assigned DTMF values (and thus cannot be
matched via a DTMF keypress).
When the accept attribute of choice is
set to "exact", or is not set and the accept attribute of its enclosing
menu is set to "exact", or neither choice's accept attribute nor menu's
is set, then the text of the choice element defines the exact phrase to
be recognized. The user must say the entire phrase in the same order in
which it occurs in the choice element phrase for matching this element.
The messageexpr attribute is an
ECMAScript expression evaluating to the variable _message inside the
catch element which catches the event being thrown.
If the event handler called after
matching a choice with an event or eventexpr attribute does not cause
the interpreter to exit or transition control, then the FIA will clear
the form item variable of the menu's anonymous field, causing the menu
to be executed again.
If the form item is initialized to a
value via evaluation of the expr attribute, the form item will not be
visited unless the form item variable is cleared.
If the slot attribute is absent, the
interpreter uses the value associated with the name attribute of the
field to map the grammar slot to the form item variable.
The field element exposes a shadow
variables named confidence, utterance, inputmode, and interpretation.
The values of the utterance and inputmode shadow variables correspond
to the values of the corresponding properties of the first object in
the application-scoped lastresult$ array.
The confidence shadow variable is the
confidence level for the name field of this interpretation and may
range from 0.0-1.0. A value of 0.0 indicates minimum confidence, and a
value of 1.0 indicates maximum confidence.
When the accept attribute of an option
element is set to "exact", the PCDATA of the option defines the exact
phrase to be recognized for the option to be selected.
The variables passed to the subdialog
via the <param> element are accessible as variables within the
dialog scope of the invoked subdialog. A <param> overrides the
corresponding <var> expr attribute which is ignored.
The interpreter throws error.badfetch
after the specified fetchtimeout when the URL associated with the src
or srcexpr attribute points to a non-existent resource.
The variable associated with the name
attribute of the record element can be submitted via the namelist of
the submit element. The submitted audio is valid.
If the dtmfterm attribute is true, and
the user terminates the recording by pressing a DTMF key which doesn't
match any active DTMF grammar, then the name$.termchar shadow variable
is set to the key pressed.
If the dtmfterm attribute is false,
and user presses a key which does not match any active DTMF grammar,
then recording is not terminated and the name$.termchar shadow variable
is undefined when the recording terminates
When <filled> is a child of a
<form>, and the mode attribute is set to "any", the filled is
executed when any of the form items specified in the namelist has been
filled.
When <filled> is a child of a
<form>, and the mode attribute is set to "all", the filled is
executed when all of the form items specified in the namelist have been
filled.
A link may specify a message or
messageexpr attribute providing additional context about the event
being thrown. The message is available as the value of the _message
variable within the scope of the catch element the interpreter selects
to handle the event.
During a dialog, the interpreter can
receive input from the user via the user's spoken utterance, such that
the spoken utterance is one of those described by an active grammar.
A grammar element can contain child
XML elements, such that those elements taken in context of the
enclosing grammar element comprise a proper SRGS grammar.
A document containing a grammar
element specifying both a 'src' attribute and an inline grammar
description causes the Interpreter to throw an 'error.badfetch' event
upon fetching of the document.
During a dialog, the Interpreter can
receive input from the user via a set of dual tone multi frequency
(DTMF) key presses, such that the sequence of presses is one of those
described by an active grammar.
If a form-level grammar matches and
returns a semantic interpretation for a field name or slot that is a
non-scalar ECMAScript variable, the field will be filled with that
non-scalar ECMAScript value. The selected property may be a compound
object.
If the result from a field-level
grammar is neither a simple result nor a structure with a property that
matches the slot name, the entire semantic result is assigned to the
input item variable.
If the interval specified by the
timeout attribute of the prompt element is exceeded, the platform will
throw a noinput event. The default is the value specified by the
timeout property
Variables must be declared prior to
use. Assigning to an undeclared variable does not automatically create
it. Instead, it results in error.semantic being thrown.
In a form, variables declared by var
and by form items are initialized every time the form is entered. These
initializations take place in document order.
Variables can be declared in
application, document, dialog and anonymous scopes. Variables declared
at one scope are visible at that scope and all more local scopes.
var and script elements that are
children of the application root document's vxml element create their
variables at application scope. They are no longer accessible when
another application is entered.
var and script elements that are
children of the document's vxml element create their variables at
document scope. They are no longer accessible when another document is
entered.
var and script elements that are
children of a form element (but not in an anonymous scope) create their
variables at dialog scope. They are no longer acc
VoiceXML Forum - Conformance Test Report
Platform Certification Program
Certification Test Report
When the accept attribute of choice is
set to "approximate", or is not set and the accept attribute of its
enclosing menu is set to "approximate", then the text of the choice
element defines an approximate recognition phrase, as defined under
"Grammar Generation" in section 2.2.
The type attribute, if present,
specifies the name of one of the following builtin grammar types from
Appendix P: boolean, date, digits, currency, number, phone, time.
[optional] A field containing two
builtin grammar elements, one referring to the builtin speech grammar
and the other referring to the builtin DTMF grammar of the same type is
equivlent to a field whose type attribute is set to the equivalent
type.
A VoiceXML document can initiate a
transfer to another entity using the transfer tag, such that the
Interpreter remains connected to the original caller and interpretation
resumes upon termination of the transfer.
A VoiceXML document can initiate a
transfer to another entity using the transfer tag, such that the
Interpreter disconnects from the caller immediately upon attempting the
transfer and continues execution as it would under termination of the
Session.
A bridged transfer can contain speech
grammars such that the interpreter listens to the original caller for
the duration of the transfer, terminating the transfer as soon as a
spoken utterance matches an active speech grammar.
A bridged transfer specifying a
'connecttimeout' attribute with a W3C time specification will terminate
a transfer attempt if the destination entity cannot be connected to
within that period of time.
A bridged transfer specifying a
'maxtime' attribute with a W3C time specification will terminate a
transfer after that period of time has elapsed after connecting to the
destination entity if it has not already been terminated for other
reasons.
A bridged transfer specifying a
'transferaudio' attribute with valid URI to an audio file wil play that
audio from the beginning of the transfer attempt until the attempt is
terminated or the destination entity is connected to.
If the originating caller hangs up
during a bridged transfer, a 'connection.disconnect.hangup' event is
thrown and the transfer name variable remains undefined.
If the Interpreter is unable to
connect to the destination entity when attempting a transfer because it
is busy, the transfer name variable is filled with the value 'busy'.
If a transfer is terminated because
the original caller matches an active DTMF grammar, the transfer name
variable is filled with the value 'near_end_disconnect'.
If a bridge transfer is terminated by
the Interpreter because the 'maxtime' has expired without the transfer
being terminated, the transfer name variable is filled with the value
'maxtime_disconnect'.
Upon termination of bridge transfer,
the shadow variable 'name$.duration' (where name is the name attribute
of the transfer element) is set to the number of seconds from the time
the destination entity was connected to and the transfer was
terminated.
Upon termination of bridge transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'voice'.
Upon termination of bridge transfer
due to the caller matching an active DTMF grammar
('near_end_disconnect'), the 'name$.inputmode' shadow variable is set
to 'dtmf'.
Upon termination of a bridge transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), the 'name$.utterance' shadow variable is set
to utterance text.
session.connection.redirect returns an
array representing the connection redirection paths. The first element
is the original called number, the last element is the last redirected
number. Each element of the array contains a uri, pi (presentation
information), si (screening information), and reason property. The
reason property can be either "unknown", "user busy", "no reply",
"deflection during alerting", "deflection immediate response", "mobile
subscriber not reachable".
session.connection.originator returns
the local or remote property. (For instance, the following ECMAScript
would return true if the remote party initiated the connection: var
caller_initiate = connection.originator == connection.remote;
A bridged transfer can contain DTMF
grammars such that the interpreter listens to the original caller for
the duration of the transfer, terminating the transfer as soon as DTMF
input matches an active DTMF grammar.
The form item 'object' has a guard
condition specified with the cond attribute. A form item is visited if
it is not filled and its cond is not specified or evaluates, after
conversion to boolean, to true.
The input item transfer may contain
the filled element. Filled elements contain an action to execute after
the result input item variable is filled in.
Upon termination of a bridged transfer
due to the caller matching an active DTMF grammar
('near_end_disconnect'), application.lastresult$ is assigned to the
DTMF result.
Upon termination of a bridged transfer
due to the caller matching an active speech grammar
('near_end_disconnect'), application.lastresult$.utterance is assigned
the same value as the transfer's utterance shadow.
If a bridged transfer is terminated
due to a reason other than the caller matching an active speech or DTMF
grammar ('near_end_disconnect'), application.lastresult$ is undefined.
When the accept attribute of an option
element is set to "approximate", the user may say a subphrase of the
specified PCDATA for the option to be selected.
If the caller has insufficient
permission to perform a call transfer (e.g. not allowed to make long
distance calls, not permitted to make any transfers, etc.), destination
URL is malformed, a error.connection.noauthorization error is thrown.
The name
(session.connection.protocol.name) also represents the subobject name
for protocol specific information. For instance, if
session.connection.protocol.name is 'q931',
session.connection.protocol.q931.uui might specify the user-to-user
information property of the connection.
An application root document's
variables are defined and reachable via the application scope upon the
loading of a document that specifies it as the application root.
An application root document's
variables are no longer reachable from the application scope when the
user transitions to a document not in that application.
A user can direct interpretation in
scenarios where grammars outside the current dialog are active, by
matching one of these grammars, at which point execution transitions to
the dialog containing the matched grammar.
The value of xml:lang must be
inherited down the document hierarchy by elements which also define the
xml:lang attribute and do not have an alternative value.
When transitioning between two leaf
documents that both specify the same application fully resolved URI
then the transition must preserve the application root document's
variables for use by the second leaf document.
A transition from an application leaf
document to its own application root document caused by a 'goto' must
preserve the application root document's variables for use by the root
document.
If a transition occurs as the result
of a submit between an application leaf document and its own
application root document the application root document's variables
must be re-initialized.
If a transition occurs from an
application root document to a different application root document it
must initialize the new application root document and use the new
application root document's variables.
A form may contain form items, which
are subdivided into input items ( <field>, <record>,
<transfer>, <object>, <subdialog>) and control items
(<block> and <initial>).
The value of the name attribute of a
form item defines a dialog-scoped variable that holds the value of the
form item, i.e., dialog.name is a reference to the form item variable.
For all types of form item, if the
form item is assigned a value, that form item is not eligible to be
visited by the FIA (unless/until it is subsequently set to undefined).
Using the clear tag on a form item
variable will make it eligible to be visited by the FIA (provided that
it does not have a cond attribute evaluating to false).
If the last main FIA loop did not
result in a goto nextitem and there is no form item which is eligible
to be visited then an implicit exit is generated.
If an event handler, executed after an
event is thrown while processing a form item, transfers control with a
<goto> or <submit>, the FIA resumes in the new form at the
initialisation phase.
If an event handler, executed after an
event is thrown while processing a form item, does not transfer control
with a <goto> or <submit> the FIA resumes in the current
form at the selection phase.
If an event is thrown during the
execution of a <filled>, event handler selection starts in the
scope of the <filled>, which could be a form item or the form
itself, and then proceeds outward by enclosing dialog scopes.
If a menu's scope attribute is set to
"document", the menu's grammars are active over the whole document (or
if the menu is in the application root document, any loaded document in
the application).
If a menu's dtmf attribute is set to
"true", the first nine choices that have not explicitly specified a
value for the dtmf attribute are given the implicit ones "1", "2", etc.
Remaining choices that have not explicitly specified a value for the
dtmf attribute will not be assigned DTMF values (and thus cannot be
matched via a DTMF keypress).
When the accept attribute of choice is
set to "exact", or is not set and the accept attribute of its enclosing
menu is set to "exact", or neither choice's accept attribute nor menu's
is set, then the text of the choice element defines the exact phrase to
be recognized. The user must say the entire phrase in the same order in
which it occurs in the choice element phrase for matching this element.
The messageexpr attribute is an
ECMAScript expression evaluating to the variable _message inside the
catch element which catches the event being thrown.
If the event handler called after
matching a choice with an event or eventexpr attribute does not cause
the interpreter to exit or transition control, then the FIA will clear
the form item variable of the menu's anonymous field, causing the menu
to be executed again.
If the form item is initialized to a
value via evaluation of the expr attribute, the form item will not be
visited unless the form item variable is cleared.
If the slot attribute is absent, the
interpreter uses the value associated with the name attribute of the
field to map the grammar slot to the form item variable.
The field element exposes a shadow
variables named confidence, utterance, inputmode, and interpretation.
The values of the utterance and inputmode shadow variables correspond
to the values of the corresponding properties of the first object in
the application-scoped lastresult$ array.
The confidence shadow variable is the
confidence level for the name field of this interpretation and may
range from 0.0-1.0. A value of 0.0 indicates minimum confidence, and a
value of 1.0 indicates maximum confidence.
When the accept attribute of an option
element is set to "exact", the PCDATA of the option defines the exact
phrase to be recognized for the option to be selected.
The variables passed to the subdialog
via the <param> element are accessible as variables within the
dialog scope of the invoked subdialog. A <param> overrides the
corresponding <var> expr attribute which is ignored.
The interpreter throws error.badfetch
after the specified fetchtimeout when the URL associated with the src
or srcexpr attribute points to a non-existent resource.
The variable associated with the name
attribute of the record element can be submitted via the namelist of
the submit element. The submitted audio is valid.
If the dtmfterm attribute is true, and
the user terminates the recording by pressing a DTMF key which doesn't
match any active DTMF grammar, then the name$.termchar shadow variable
is set to the key pressed.
If the dtmfterm attribute is false,
and user presses a key which does not match any active DTMF grammar,
then recording is not terminated and the name$.termchar shadow variable
is undefined when the recording terminates
When <filled> is a child of a
<form>, and the mode attribute is set to "any", the filled is
executed when any of the form items specified in the namelist has been
filled.
When <filled> is a child of a
<form>, and the mode attribute is set to "all", the filled is
executed when all of the form items specified in the namelist have been
filled.
A link may specify a message or
messageexpr attribute providing additional context about the event
being thrown. The message is available as the value of the _message
variable within the scope of the catch element the interpreter selects
to handle the event.
During a dialog, the interpreter can
receive input from the user via the user's spoken utterance, such that
the spoken utterance is one of those described by an active grammar.
A grammar element can contain child
XML elements, such that those elements taken in context of the
enclosing grammar element comprise a proper SRGS grammar.
A document containing a grammar
element specifying both a 'src' attribute and an inline grammar
description causes the Interpreter to throw an 'error.badfetch' event
upon fetching of the document.
During a dialog, the Interpreter can
receive input from the user via a set of dual tone multi frequency
(DTMF) key presses, such that the sequence of presses is one of those
described by an active grammar.
If a form-level grammar matches and
returns a semantic interpretation for a field name or slot that is a
non-scalar ECMAScript variable, the field will be filled with that
non-scalar ECMAScript value. The selected property may be a compound
object.
If the result from a field-level
grammar is neither a simple result nor a structure with a property that
matches the slot name, the entire semantic result is assigned to the
input item variable.
If the interval specified by the
timeout attribute of the prompt element is exceeded, the platform will
throw a noinput event. The default is the value specified by the
timeout property
Variables must be declared prior to
use. Assigning to an undeclared variable does not automatically create
it. Instead, it results in error.semantic being thrown.
In a form, variables declared by var
and by form items are initialized every time the form is entered. These
initializations take place in document order.
Variables can be declared in
application, document, dialog and anonymous scopes. Variables declared
at one scope are visible at that scope and all more local scopes.
var and script elements that are
children of the application root document's vxml element create their
variables at application scope. They are no longer accessible when
another application is entered.
var and script elements that are
children of the document's vxml element create their variables at
document scope. They are no longer accessible when another document is
entered.
var and script elements that are
children of a form element (but not in an anonymous scope) create their
variables at dialog scope. They are no longer acc