VoiceXML 2.1 Development Guide Home  |  Frameset Home

  ANI Spoofing on the VXML 2.0 platform  |  TOC  |  E: VoiceXML Variables  

Motorola Porting Table

The inception of the 2.0 browser deprecates several well known elements and attributes. However, if we write our application with the facts firmly in mind, we will dramatically shorten the time needed to port an application between browsers. Since Motorola is as close as possible to the specification, there will undoubtedly be some changes you'll need to make in order to make a pre-existing application work on the platform. However, do bear in mind that the suggestions offered here will function on most other vxml 2.0-compliant platforms as well.


Porting Hints

Let's face it, all VXML platforms have their own idiosyncracies, and the Motorola platform is no exception. If you are facing preliminary porting problems, check and be sure the following items are up to speed:


A complete summary of the relevant element and attribute changes are detailed in the following listing:



Nuance Element/Attribute Motorola Equivalent
break msecs break time

Details: This change to the ‘time’ attribute, and subsequent deprecation of the ‘msecs’ attribute was made to reflect the most recent version of the w3c VoiceXML specification, as the ‘msecs’ attribute is Nuance-specific. When writing a Nuance application with future porting in mind, it is best practice to use the ‘size’ attribute rather than the ‘msec’ attribute unless a specific time value is required by your application.



Nuance Element/Attribute Motorola Equivalent
div paragraph|sentence

Details: The <div> element was the Nuance version of the SSML tags <P> and <S>. Again, this change was made to reflect the most recent incarnation of the 2.0 specification. However, neither the <Div> element, nor the <Sentence/Paragraph> elements will have any effect on the TTS output on their respective platforms. For this reason, it is best to not include them in your code at all.


Nuance Element/Attribute Motorola Equivalent
emp emphasis

Details: The <emp> element was the Nuance version of the SSML tag <emphasis>. Again, this change was made to reflect the most recent incarnation of the 2.0 specification. However, neither the <emp> element, nor the <emphasis> elements will have any effect on the TTS output on their respective platforms. For this reason, it is best to not include them in your code at all.



Nuance Element/Attribute Motorola Equivalent
pros prosody

Details:The <pros> element was the Nuance version of the SSML tag <prosody>. The change to the more compliant <prosody>.  element was made to reflect the most recent incarnation of the 2.0 specification. However, neither the <pros>  element, nor the <prosody> elements will have any effect on the TTS output on their respective platforms. For this reason, it is best to not include them in your code at all.



Nuance Element/Attribute Motorola Equivalent
sayas/say-as class/type say-as interpret-as/format

Details: While the Nuance browser has implemented their own syntax(es) for the SSML <say-as> element, the Motorola browser is strict with the specification, and only allows the <say-as> element. In addition, the only allowable attributes of this element are interpret-as and, in some cases, format.


Nuance Element/Attribute Motorola Equivalent
sayas phon phoneme

Details: The <sayas phon> was equivalent to the w3c standard tag of <phoneme>. Of note is the fact that since neither Nuance or Motorola has SSML support enabled on the Voxeo network, neither incarnation of this element will have any effect on TTS output. For this reason, it is best practice not to include either of these speech markup tags within your code.


Nuance Element/Attribute Motorola Equivalent
sayas sub sub alias

Details: This change is another change to the naming convention of the element; functionality remains absolutely the same. Of note is the fact that since neither Nuance or Motorola has SSML support enabled on the Voxeo network, neither incarnation of this element will have any effect on TTS output. For this reason, best practices dictate that you use an alternate hardcoded value to ensure compatiability with both platforms:

VWS1.3
<prompt> you are watching <sayas sub="public broadcasting system"> pbs </sub></prompt>

VWS2.0
<prompt> you are watching <sub alias="public broadcasting system"> pbs </sub></prompt>

Best practice
<var name="PBS" expr="'public broadcasting system'"'/>
<prompt> you are watching <value expr="PBS"/> <prompt>



Nuance 1.3 Element/Attribute Motorola Equivalent
value class say-as interpret-as/format

Details: The <value class> element/attribute pairing from VWS1.3 is entirely non-compliant to the 2.0 specification. For this reason, it should be replaced by nesting the <value> tag within the <say-as interpret-as> element.


Nuance Element/Attribute Motorola Equivalent
dtmf grammar type=dtmf

Details: The <dtmf> element in Nuance has been completely deprecated in VXML 2.0; any code containing this element will throw an error.badfetch when running on the 2.0 platform. To ease the migration to the newer platform, it is advised that you write any dtmf grammars so that they are contained within the <grammar> element rather than the <dtmf> tag..



Nuance Element/Attribute Motorola Equivalent
nbest/nuance:nbest nuance:nbest

Details: Nuance has changed their proprietary extensions to having the 'nuance' prefix, thus making non-w3c compliant elements easier to recognize at a glance. However, as the <nbest> element is an extension element, the more compliant w3c method of NBesting within the <script> element will need to be used on Motorola. See the Motorola tutorial on NBest post-processing for a more detailed explanation.


Nuance Element/Attribute Motorola Equivalent
redef/nuance:redef None

Details: The redef and  nuance:redef elements are proprietary to the Nuance platforms, and have no equivalent on the Motorola platform.



Nuance VWS1.3 Element/Attribute Motorola Equivalent
caching maxage|maxstale

Details: The VXML 2.0 standard does not support the proprietary 'caching' attribute, and instead uses the more compliant 'maxage/maxstale' attributes. Be cautioned that the VWS2.0  and Motorola platforms will throw an error.badfetch should it encounter an element with the 'caching' attribute. Additionally,  the 'caching' attribute has no effect on the Nuance system, so it is considered best practice not to include it at all in your code.


The elements affected by this change are:


Nuance VWS1.3 Element/Attribute Motorola Equivalent
field hotword prompt bargeintype=hotword

Details: The 'hotword' attribute of the field element from VWS 1.3 is not supported with the 2.0 compliant Motorola browser, in favor of the w3c compliant <prompt bargeintype> element/attribute pairing.



Nuance Element/Attribute Motorola Equivalent
(VWS1.3): log level=application|voyager|detail (VWS2.0): log level=info|d_info|vd_info ----

Details:The above values for the Log level attributes have been changed from the legacy Nuance Voyager naming scheme to the more up-to-date 2.0 scheme. Since the 'level' attribute is not required in either browser, it is best to ignore it when coding your Nuance application.


Nuance VWS 1.3 Element/Attribute Motorola Equivalent
vxml lang vxml xml:lang

Details: The VWS 1.3 attribute of 'lang' has been updated to reflect the most recent w3c specification, hence, the change to 'xml:lang'. Unless you are specifying a language other than American English, then you should not have to use this attribute at all. However, the smart way to make your application ready for 2.0 compatibility is to make an include file containing this reference so as to make global changes to your application much easier.



Nuance Element/Attribute Motorola Equivalent
value mode N/A

Details: The Motorola 2.0 browser has no support for the non-compliant 'mode' attribute; as this value is determined dynamically at runtime, it is recommended that you not implement this attribute in your code.


VWS Nuance Session Variable VWS 2.0 Session Variable (sip) Motorola Session Variable (tel)
session.telephone.ani session.connection.local.uri session.callerid

Details: To keep up to date with the w3c specification, the session variable has been renamed to the compliant 'session.connection.local.uri'. However, since our underlying audio provider returns the sip address for this, we have decided to add a Voxeo-centric session variable which returns the tel: address for ANI, thus allowing developers to capture both sip and tel values for ANI.


VWS Nuance Session Variable VWS 2.0 Session Variable (sip) Motorola Session Variable (tel)
session.telephone.dnis session.connection.remote.uri session.calledid

Details: To keep up to date with the w3c specification, the session variable has been renamed to the compliant 'session.connection.remote.uri'. However, since our underlying audio provider returns the sip address for this, we have decided to add a Voxeo-centric session variable which returns the tel: address for DNIS values, thus allowing developers to capture both sip and tel values for DNIS.

Nuance Disconnect Event Motorola Disconnect Event
telephone.disconnect connection.disconnect.hangup

Details: Motorola is 100% compliant in regards to the event that is raised when the call is dropped, either via an explicit <disconnect/>, or by the caller hanging up. When porting your app for 2.0 compliance, be certain to catch the 'connection.disconnect.hangup' event rather than the deprecated 'telephone.disconnect' in any <catch> handlers residing in your code.



Nuance 2.0 Element/Attribute Motorola Equivalent
nuance:send dest send uri

Details: The <nuance:send dest> element is used in a slightly different manner on the Motorola platform. It is replaced with the <send uri> syntax. For more information, see the Motorola Element Guide listing for this element.





  ANNOTATIONS: EXISTING POSTS
kettle
1/24/2007 2:53 AM (EST)
"Details: The <sayas phon> was equivalent to the w3c standard tag of <phoneme>. Of note is the fact that since neither Nuance or Motorola has SSML support enabled on the Voxeo network, neither incarnation of this element will have any effect on TTS output. For this reason, it is best practice not to include either of these speech markup tags within your code."

Is there an alternative then, which will allow me some fairly fine grained control over the way that my synthesized utterances are realized by the TTS engine?  If so please describe it or link to it here. 

Right now I am considering building my own utterances with my own Japanese TTS engine and then using the <audio> element to play them back on the fly.  I'd prefer not to do this if possible.
MattHenry
1/24/2007 2:37 PM (EST)
Hi there,

I should be clear in the fact that the hosted Voxeo VXML platforms do not currently support <phoneme>. However, you may find a useful workaround by employing the <sub> element:


    <prompt>
      this message brough to you by the
        <sub alias="World Wide Web Consortium">W3C</sub>
    </prompt>

Hope this helps!

~Matthew henry

login

  ANI Spoofing on the VXML 2.0 platform  |  TOC  |  E: VoiceXML Variables  

© 2003-2008 Voxeo Corporation  |  Voxeo IVR  |  VoiceXML & CCXML IVR Developer Site