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.
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.