|
|
 |
March 2003
Potentially Breaking Changes
The most important changes are listed towards the top of the table, with minor ones later.
Some of the more complicated changes have links to the appropriate section of the VoiceXML
2.0 draft (e.g. §5.2)
for more detailed information.
| Relevance |
Description |
| Speech Objects |
Support for Nuance SpeechObjects has been removed.
In VoiceXML 2.0 applications, the <object>
tag now always throws error.unsupported.object.<objectname>.
In VoiceXML 1.0 applications, it always throws error.unsupported.object
|
| Field Types |
The extended field types such as citystate,
street, etc. have been removed. Use our corresponding
builtin <grammar>
types instead. |
| Grammars |
We no longer support Nuance GSC Grammars. |
| Grammars |
We have made a number of changes for compliance with
the Candidate Recommendation
version of the Speech Recognition Grammar Specification. See the
Grammar Reference.
|
| Grammars |
The version attribute of <grammar>
is now required, in both inline and external XML grammars. The only
supported version is "1.0"; other versions will cause an
error. |
| geoApi |
The geoApi functions have been removed from the VoiceXML
interpreter. Some functions (for example, getUSCityStateInfoFromPhone
and getUSZipCodeFromPhone) have migrated to the
Location Information Service.
For other functions, we encourage you to use the interpreter's built-in SOAP
client to access third-party
sources of geographic and other data.
|
| Outbound Notification |
The HTTP-based Outbound Notification Service has been replaced
with a SOAP-based version. For information on the new service, see
Outbound Notification Service.
|
| Caching |
Support for the expirationtime attribute
and the *expirationtime properties (e.g. audioexpirationtime)
has been removed from the interpreter. These were a nonstandard BeVocal
extension and have been supplanted by the standard maxstale
attribute in VoiceXML 2.0. In Café 1.6, expirationtime
was deprecated. For information on caching, see
Fetching and Caching Resources in the VoiceXML Programmer's Guide.
|
| Streaming Audio |
Support has been removed for streaming audio files using the stream value of the
audiofetchhint property and the fetchhint attribute of the
<audio> tag.
|
| Streaming Record |
Support has been removed for streaming record using the bevocal:dest
and bevocal:destexpr attributes.
|
| Session |
The nonstandard session.ani and session.dnis
variables have been removed. Use
session.telephone.*.
|
| Session |
The nonstandard session variable session.timeincall has been
removed. Use
session.bevocal.timeincall. |
| Audio |
The <audio>
tag must have one of the attributes src or expr. It cannot
be used just as a prompt container.
|
| SSML |
The sub attribute of <say-as>
is no longer valid. Use the <sub>
element instead.
|
| VXML |
The xmlns attribute of
<vxml>
tag must be http://www.w3.org/2001/vxml; otherwise, the interpreter
throws a parse error.
|
| VXML |
Previously, if the maxtime attribute of the call control tags
(<transfer> and
<bevocal:dial>)
was beyond permissible limits, then an error.noauthorization event was thrown.
In this release, an event is no longer thrown; instead, the call is placed for the
maximum permissible duration.
|
| HTTP |
The User-Agent header in the interpreter's
HTTP requests has been changed. Previously, it was simply
BeVocal/2.0
It is now
User-Agent: BeVocal/2.4 VoiceXML/2.0 BVPlatform/1.8.0.4
The BeVocal component reflects the version of the BeVocal
VoiceXML interpreter, the VoiceXML component reflects the version
of VoiceXML in the requesting document, and the BVPlatform
component reflects the version of the underlying BeVocal platform.
If you need to detect the User-Agent for a request, you should probably ignore the last
2 digits in the platform version, as these are likely to change occasionally.
See
Fetching and Caching Resources in the VoiceXML Programmer's Guide.
|
| MIME types |
The interpreter now checks for MIME types when it does fetches. It signals
a warning if it detects an obviously incorrect MIME type (such as text/html when it's
expecting a VoiceXML document). If you see a warning like this, it usually means your
server is misconfigured. See the Fetching
Resources section of the FAQ for information on configuring your server with the correct
MIME types. Note that in the next release, the interpreter will throw an exception when it
sees an incorrect MIME type.
|
| Voice Enrollment |
The keyexpr attribute of
<bevocal:enroll>
has been deprecated. To specify a security key, use the
bevocal.security.key property.
|
| Voice Enrollment |
The speakerid attribute of <bevocal:enroll> has been renamed
to speakeridexpr so that a JavaScript expression can be specified for a speaker ID during voice enrollment.
|
| Voice Enrollment |
The JavaScript function bevocal.removeEnrolledPhrase has been renamed to
bevocal.enroll.removeEnrolledPhrase.
|
| Ports |
In earlier releases, you could use a variety of ports when
submitting files or fetching resources.
For security reasons, you can now use only the following ports, both
for inbound and outbound purposes:
| 80 | | HTTP |
| 443 | | HTTPS |
| > 1023 | | User Ports |
|
Enhancements
| Relevance |
Description |
| DTMF |
The interpreter now buffers DTMF keys that are received between
input states, as described in VoiceXML 2.0 (§4.1.5,
§4.1.8).
This is controlled by the bargein attribute and property
and the new
bevocal.dtmf.flushbuffer
property. |
| DTMF |
The standard
termtimeout
property in VoiceXML is now supported. |
| JavaScript |
A new JavaScript function,
bevocal.getVersion,
has been added. It returns the version number of the interpreter, as a
string. Currently, the interpreter version returned by this function is "2.4". |
| Grammars |
Prefetching is now implemented for
<grammar>
elements that use the src attribute to refer to an external
grammar file. Bug 4382. |
| HTTP |
The interpreter's caching mechanism now has full support for
HTTP 1.1,
including the Age header and the private,
no-store, s-maxage, and must-revalidate
attributes of Cache-Control. For information on caching, see
Fetching and Caching Resources in the VoiceXML Programmer's Guide.
|
| Grammar |
We now support the NuanceGrammarObjects. See
Compiled Grammar Files
in the Grammar Reference for more details.
|
| FIA |
The interpreter now follows the rules for mapping semantic interpretations results to
<form> item
variables as described in §3.1.6.
For more details, see
Setting Input Variables
in the Grammar Reference.
|
| FIA |
If the user input fills one or more field item variables, then all
<initial>
form item variables are set to true before any
<filled> actions are executed.
See §2.3.3 for more details.
|
| Record |
If no audio was collected during the execution of
<record>,
its input variable is unfilled. This allows the form item to be visited again by the FIA.
(§2.3.6.)
|
| Record |
If the caller hangs up during
<record>, an
appropriate disconnect event is thrown. However, the recording stored until the point of
hangup is available via the <record>
shadow variables. (§2.3.6)
|
| SOAP |
The SOAP client in the interpreter now allows the addition of SOAP headers on the
SOAP proxy client objects by using the new
_addHeader method.
|
| SSML |
We now support the vxml:* types for the type attribute of
<say-as>.
|
<say-as> voices |
We've added a new male voice for use with <say-as type="citystate"
bevocal:mode="recorded">. See
TTS and Recorded Voice Selection in the
VoiceXML Programmer's Guide
|
| Documentation |
The Café documentation has undergone significant revision. Every document has been touched,
some have been completely rewritten or are new for this release. Highlights include:
| |
The Grammar Reference
has been completely rewritten. It now provides more information on how to use grammars
in your VoiceXML documents, as well as describing GSL, ABNF, and XML grammar syntax.
|
| |
Several chapters of the VoiceXML Programmer's Guide
have been rewritten. Most notably,
Fetching and Caching Resources
and SOAP Client Facility.
|
| |
The VoiceXML Performance Guide is currently under revision.
It's not done yet, but already contains a more complete checklist of things to look out
for when designing an application for performance.
|
| |
And, of course, all of the documentation on the
BeVocal Platform Services is new.
|
| |
In addition to content changes, the format and navigation of the HTML has also changed.
For example, the navigation links in the left frame are more complete,
now including the standard links to the rest of the Café site, as well as more levels
of navigation within a document.
And, if you ever find yourself looking at a document page without the
surrounding navigation frames, you can get the frames back from a link at the bottom of the page.
|
|
Known Bugs and Limitations
| Relevance |
Description |
| Hotword Recognition |
| |
DTMF tones are not recognized during hotword recognition. |
| |
You may see some spurious error.internal errors
during hotword recognition. This usually occurs when there are too many active grammars.
The workaround is catch error.internal in the hotword state and treat it as a nomatch.
|
|
| Enrolled Grammars |
If you don't have any grammars active while executing the <bevocal:enroll> tag,
the interpreter throws an error.semantic with the message "No grammars active during
recognition." The workaround is to have at least one grammar active during the enrollment process.
|
<menu> and <choice> tags |
In practice the accept attribute of the <menu> tag has no effect.
The accept attribute of the <choice> tag is intended to override
the value of the accept attribute of the parent <menu> element
only if your VoiceXML code actually supplies a value for that attribute.
However, because of the way the attribute is currently defined in the official
VoiceXML 2.0 DTD,
any value you put on a <menu> element is overridden in the child
<choice> element, either by the default value of exact or by
an explicitly-supplied value.
|
<choice> and <audio> tags |
If you put an <audio> tag inside a <choice> element,
you get incorrect output. One workaround is to use TTS instead of recorded audio
in your <choice> elements.
|
| SSL |
SSL is currently supported only for text files. In general, using SSL causes a
performance hit for fetches. Consequently, you should use SSL sparingly.
|
<say-as> & TTS voices |
With <say-as bevocal:mode="recorded"...>,
you can take advantage of prompts recorded by a human voice talent for many say-as types. There is a
related bug, however.
If you explicitly set the TTS voice to either jennifer or mark
(using the bevocal.voice.name property or the <voice> SSML tag),
the interpreter does not play appropriate recorded prompts.
As a workaround, instead of setting the TTS voice to one of these names, set the
recorded voice to bv_ann_en_us, bv_adam_en_us,
or bv_ben_en_us. These recorded voices use jennifer and mark
for TTS fallback.
Note that you can only set the recorded voice using the bevocal.voice.name property;
you cannot set a recorded voice with the <voice> SSML tag.
|
fetchhint limitations |
The fetchhint attribute is currently not supported for the <choice>,
<subdialog>, and <data> tags, despite what the documentation
used to claim.
|
| Chunking in transfer encoding |
If you use Tomcat as your servlet container, you must turn off chunking in transfer encoding.
Otherwise, you may get spurious error.badfetch errors when retrieving resources. For information
on how to setup Tomcat,
see the FAQ.
|
DOCTYPE doc bug |
Earlier versions of our documentation claimed that a DOCTYPE declaration is
required for a valid VoiceXML document. This is untrue; this declaration is optional.
We strongly recommend including a DOCTYPE during development,
as it provides better error checking, both by the interpreter and by the VoiceXML Checker. For deployment,
however, you may decide to remove the DOCTYPE declaration for better performance.
For more details on what constitutes a valid VoiceXML document,
see the FAQ.
|
Bug Fixes
| Bug |
Description |
| 3731 |
A <submit method="get"> of a JavaScript
integer would include a trailing ".0" in some circumstances.
This has been fixed. |
| 4201 |
The parser now does tighter error checking of the VoiceXML grammar
<ruleref>
element in documents with no DTD. The alias attribute
is no longer allowed, and the error message for bad values of the
special attribute has been improved. |
| 4826 |
The <assign>
element now throws a parse-time error.badfetch if the
name or expr attribute is missing. Previously,
this would cause a confusing run-time error message. |
| 4824 |
The interpreter's built-in HTTP cache was occasionally throwing
spurious error.badfetch events. This occurred if the current
fetch succeeded but a fetch of the same resource had failed sometime
in the past. This has been fixed. |
| 4829 |
In certain cases, when an outbound call placed with
<transfer>
or <bevocal:dial>
was not answered or was disconnected immediately after being answered,
the interpreter would get confused and all further activity on the
call would fail. The interpreter no longer gets confused by this. |
| 4837 |
Previously, if there was no recording, the duration shadow variable of
<record>
contained invalid values. Now if there is no audio recorded during the
execution of <record>, then the <record>
item variable and its shadow variables are not filled.
|
| 4855 |
Previously, double quotes present in the value of the
<tag>
element were erroneously dropped. They are preserved now.
|
| 4861 |
For the <data> tag, if the
name attribute was not present, then the HTTP response was not being ignored. Now
the HTTP response is rightly ignored.
|
| 4862 |
We now accept the MIME type application/x-nuance-gsl
for Nuance GSL grammars. See
Grammar Formats
in the Grammar Reference.
|
| 4865 |
Previously, for certain nomatch events, the
Log Browser displayed a confusing
message stating "No Interpretations was returned for this recognition." This
message is no longer displayed.
|
| 4872 |
The
application.lastresult$
variable is filled after each and every successful
recognition. This includes recognitions which resulted in an event being thrown or which matched a
<link> grammar.
|
|