The com.voicegenie.strictconformance Property
The com.voicegenie.strictconformance property is set to true, or Yes,
to specify that the interpreter should conform strictly to the VoiceXML 2.0
specification in certain scenarios, requiring a set of behaviour changes from
previous versions. It is set to false, or No, to choose not to make the set of changes.
This property can be configured through the Media Server > VXML menu in the
Dialogic(r) IP Media Server Web User Interface.
Default Setting
The com.voicegenie.strictconformance property is initially set
to "true". Note that this script option will also affect the naming of call-related
events and session
variables.
Recommended Configuration
Note: Although the property is set in the platform defaults file, the property can still be configured per application by using multiple platform defaults files. That is, the platform would be configured in general, to use strict conformance, but specific applications could use a separate defaults file that disables strict conformance.
Behaviour Changes
The following chart documents the property's effects (i.e., the behaviour
changes between setting com.voicegenie.strictconformance to "true"
and "false").
Note: If an application has the <vxml>
version attribute set to 2.1 (or higher), the platform will behave
as if the com.voicegenie.strictconformance property is set to "true",
regardless of its actual value in the platform defaults file.
| Scenario | Behaviour when "true" | Behaviour when "false" |
The expr and src attributes are
used simultaneously in an <audio> element:
<audio src="audio.vox" expr="audiovar"/>
|
Results in an error.badfetch event being thrown.
|
The value of src overrides expr.
|
The bridge attribute is not specified for a
<transfer> element:
<transfer dest="sip:1234@host.com"/>
|
The default value is "false" (i.e. use blind transfer). | The default value is "true" (i.e. use bridge transfer). |
The xmlns attribute is not specified in the
<vxml> element.
|
Results in an error.badfetch event being thrown.
The xmlns attribute must be specified as follows:
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
Note that this applies to all application pages, any root pages, and the platform defaults file. |
The xmlns attribute is not required.
|
The version attribute is not specified in the
<vxml> element.
|
Results in an error.badfetch event being thrown.
The version attribute must be specified as follows:
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
Note that this applies to all application pages, and the platform defaults file. |
The version attribute is not required.
|
A. Attempt to <assign> to an undeclared
variable:
<assign name="myvar" value="42"/>
OR B. Attempt to make an assignment to an undeclared variable within an ECMAScript <script>:
<script>
Note: Variables can be declared either by the <var> element in VoiceXML, or by the "var"
keyword in ECMAScript.
|
Either of these scenarios will result in an
Note that when the |
Allowed.
When <assign> is encountered, variables will
be declared if not already declared.
Within ECMAScripts, variable definitions without "var" are
allowed.
|
Failure to evaluate a <value> inside
<log>:
<log> <value expr="bad expression"/> </log>
|
Results in an error.semantic event being thrown.
|
The <value> is ignored.
|
| A grammar returns a slot value that contains one or more "#" characters (possibly for an ambiguous result). | The slot value is only used up to the first "#" character. | The whole unchanged slot value is used. |
| There are no active grammars when an input is expected. |
Results in an error.semantic event being thrown.
|
Allowed. |
There's no input in a <field> (i.e. a
noinput event occurs); what is the status of
lastresult$.utteranceaudio?
|
The lastresult$.utteranceaudio shadow variable is
not set (i.e. is undefined).
|
Tthe lastresult$.utteranceaudio shadow variable is always
assigned an utterance filename, which is passed to the ASR engine to create
the utterance audio file. Reference to the utteranceaudio shadow variable
in cases where no audio file is created will result in an error.badfetch
event being thrown. |
There's no input in a <record> (i.e. a
noinput event occurs); what is the status of the
record shadow variables $.duration, $.size,
$.termchar, $.maxtime, $.dest,
and $.filetype?
|
The shadow variables are not set. | The shadow variables are set. |
After DTMF input during a <transfer>; what is
the value of the $.inputmode shadow variable?
|
The variable is set to "dtmf" (lowercase). | The variable is set to "DTMF" (uppercase). |
An invalid element is encountered inside <form>:
<form>
<dummy/>
...
</form>
|
Results in an error.badfetch event being thrown.
|
The invalid element is ignored. |
| Scenario | Behaviour when "true" | Behaviour when "false" |
The analysis attribute is not specified for a
<transfer> element:
<transfer dest="sip:1234@host.com"/>
|
The default value is "true" (i.e. perform analysis). | The default value is "false" (i.e. don't perform analysis). |
| An event is caught in a different page (ex. application root) from the page that the event was thrown in. | Relative URIs in the catch element are resolved relative to the page that the event was thrown in. | Relative URIs in the catch element are resolved relative to the page that catches the event. |
A <field>'s type attribute
references an invalid builtin type.
|
The error.unsupported.builtin event is thrown at
runtime.
|
The error.unsupported.builtin event is thrown at
compile time, and therefore cannot be caught by the application.
|
After a recognition session, more than MAXNBEST (specified by
the maxnbest property) results are available from
the ASR engine.
|
The length of the application.lastresult$ array
will not be longer than MAXNBEST.
|
The application.lastresult$ array may be filled
with more than MAXNBEST results.
|
The value of the
session.connection. protocol.<name>
session variable.
|
When session.connection. protocol.name is available,
the session.connection. protocol.<name>
session variable is always defined, with the <name>
specified by session.connection. protocol.name. The
variable is set to an ECMAScript object (which may or may not have
properties, depending on the protocol being used).
|
The session.connection. protocol.<name>
session variable is not always defined, depending on the protocol
being used.
|
Use of <prompt> timeout.
|
When the actual time elapsed during a timeout is measured (ex. by using JavaScript in the page), it will never be less than the specified timeout. (It may be slightly longer due to the design of the platform.) | The actual timeout elapsed may be slightly shorter than the specified amount. |
Use of <prompt> timeout
for an empty <prompt> tag (i.e. one that doesn't
contain any child elements or text).
|
The timeout will still be processed and used.
|
The timeouts of empty or invalid prompts are ignored.
|
Different bargein values are specified for each
<prompt> in a sequence of
queued prompts in an input item.
|
The bargein value of each prompt is honoured during
the period of time in which that prompt is playing.
|
Within a given input item, a prompt with bargein="true"
will cause bargein to remain enabled for all the remaining
queued prompts.
|
| A dialog (i.e. form or menu) transitions back to itself. | The dialog's event counters are reset. | The values of the dialog's event counters are preserved. |