VoiceXML 2.1 Development Guide Home  |  Frameset Home

  The Voxeo Real Time Debugger  |  TOC  |  Getting Support Help  

Application Debugging De-mystified

The debugging tool, as previously mentioned, takes some insight in order to correctly interpret the output. We are always trying to make the debugger a better tool for our developers, and we will continue to add helpful suggestions to the error statements that will assist you in your troubleshooting. What follows is a breakdown of the more common messages, what they mean, and what to look for in the event that you see them when running your application.

Basically, there are only three types of errors that you will see in the debugger:

While this is not a whole lot of information to go on, it does get us pointed in the right direction. A grammar compilation error usually follows with a specific message detailing the problem. An error.badfetch is the most generic of all the logger errors. Usually, when we see this error, we will have to trace up or down in the logger messages to get a more precise notation of what the problem is.  An error.semantic informs us that we have some bad news typos, or some scripting has gone awry; these are usually the most time consuming errors to track down. An improper timing property can cause this error, as can improper syntax in variable assignation. When your Motorola VoiceXML application runs into an error, the error message that you should see will look something like this:


error.semantic XML parse error(s) occurred in: http://MyServer/MyDir/MyFile.vxml[click on link for full URL] Dialog stack trace:



Now, while this is kind of generic, tracing down a few lines in the debugger output will usually give us a better indication of what the problem is. And of course, if you have the <meta maintainer> set up properly for your app, then you'll get an email with additional details that will help you track down the exact cause of the error. Let's take a closer look at some of these debugger/email messages to get a better understanding of how to spot & fix these errors:


The markup in the document following the root element must be well-formed
If you see this message, chances are that there is a simple XML parsing error, where there is no opening <vxml> element declared.


The element type "vxml" must be terminated by the matching end-tag "</vxml>".
Seeing this error in an email indicates that there is an element nested within the <vxml> tags that is not properly closed, (such as when the code has an closing </form>, but no opening <form>. Open the document in a web browser, such as Internet Explorer, to see exactly where the parse error occurs.


An error occurred while executing the following dialog. Initial URL: file:///c:/nuance/callrouting/motnewcall.vxml Current URL: file:///c:/nuance/callrouting/motnewcall.vxml Calling Number (ANI): 1112223333 Called Number (DNIS): 4445556666 Redirecting Number (RDNIS): "" State: URL1 VoxGateway Version: Load 123 (31 July 2003) Date/Time: 2003/8/6 19:3:35.878 com.mot.icsd.voxml.core.CoreException: Missing state in Vector 'state_vector'! ....
This somewhat befuddling error can crop up in a number of situations. If you see this, then you have an improper parent-child tag relationship in your code, such as a <field> declared at the <vxml> level, or a <say-as> sitting inside a <block>, rather than being nested within a <prompt>. Check the relationship in the Voxeo VoiceXML Guide to learn where to relocate your troublesome element.


error.semantic Could not infer the type of grammar '[foo]'. Specify the <grammar> type attribute, or the HTTP Content-Type head
This error is pretty self explanatory, and serves to remind you that Motorola absolutely requires the 'type' attribute of the <grammar> to be declared. Check the Element listing for the available types supported by the browser.


error.semantic <grammar> must have exactly one of "src", or "expr", or content.
If you see this error in the debugger output, then chances are that there is something wonky with your grammar references. If you are using an inline GSL construct, make sure that there is no 'src' declaring  only a rulename present in the <grammar> element.


error.semantic Compilation Server could not compile this grammar [NuanceSpeechChannel.newDynamicGrammar({db=-2147483645,key="7e66d0ee86ff
This is a somewhat generic error message for grammars that could mean a whole host of things. First, check to make sure that you do not have any capital letters in your grammar utterances. Then, make sure that any subgrammars referenced within the grammar file itself are not malformed. You will also want to ensure that you do not have any optional operators '?' within an OR grammar construct '[ ]'. This kind of error can be rather difficult to track down, so don't feel bad if you have to contact the Voxeo Support Team to help out.


VoiceException: error.connection.baddestination Invalid Tel URL - an area specifier is mandatory on a local number
This message only occurs when the voice browser encounters an improperly formatted telephone URL within the 'dest' attribute of an outbound <transfer>. To ensure maximum compatibility across multiple VoiceXML platforms, it is suggested that you always use the 'absolute' URL formatting as described in RFC2806:


<transfer name="T_1" bridge="true"  dest="tel:+12223334444">



error.semantic Can't install this grammar [Encountered "(some character/phrase)" at line 1, column 1. Was expecting one of: <EOF> <WORD_OR_NAME>
This grammar error gives us a bit more to work with. it tells us that, when parsing the grammar, it came across a character that it did not expect. Solutions for this vary with the message, but you can always take a look at an existing grammar or subgrammar for comparison; ususlly this is the best method for narrowing down just what the interpreter expects to see when it tries to compile your grammar.


error.semantic "(Some Variable Name)" is not defined. While evaluating: "(Some Variable Name)=='(Some Value)'"
This specific error message indicates that an unknown variable expression is being evaluated by a conditional <if/else/elseif> statement. Check any of these elements for misspellings, and ensure that variables referenced therein are, in fact, previously instantiated variables.


error.semantic <grammar> can only have a scope attribute if it is under <vxml> or <form>
Naughty. If you see this in your logger output, then you forgot that only form-level grammars may specify a scope. Your punishment is to re-read the specification until your eyeballs forcefully implode.


error.semantic unterminated string literal While evaluating: "'(some value)"
Looking closely at the variable value referenced reveals the reason for this error. The code designates a value for a variable, but neglects to use two single quotes:


    <var name="MyVar expr=" 'SomeValue "/>


error.semantic <form> has a duplicate form item named (Some name)
Shame on you. This message will occur when there are two or more instances of duplication in regards to form-item names, such as having two <field> elements that have the exact same name within the same <form>.


error.unsupported.objectname Objects are not supported on this platform.
As mentioned previously in the documentation, SpeechObjects are not enabled on our Staging or Production platforms; this message simply reminds the developer of this fact.


error.semantic.fatal Trying to record from user after a hangup
OR
error.semantic.fatal Trying to listen to user after a hangup.



While this message appears intimidating, it is simply reporting a non-issue for all practical purposes. In essence, when a user hangs up while within a  <record>,  or <field>, then the document must explicitly <exit> after catching & performing any clean up. To illustrate, the following code would indeed throw this error message if a user hung up while in the middle of a recording session:


    <catch event="connection.disconnect.hangup">
      <log expr=" '*********** CAUGHT THE EVENT ************' "/>
    </catch>


However, to get around this error, then all we need to do is code an explicit <exit> event:


    <catch event="connection.disconnect.hangup">
      <log expr=" '*********** CAUGHT THE EVENT ************' "/>
      <exit/>
    </catch>



VoiceException: error.semantic <audio> element needs exactly one "src" or "expr" attribute
Seeing this message indicates, in all likelihood, that the developer attempted to nest text to speech directly within an <audio> element rather than the <prompt> element. While some VoiceXML platforms allow the following code shortcut:


  <audio>
    hello world!
  </audio>


Be advised that this is non-compliant to the w3c specification. The proper way to code such a TTS string should always be done using the <prompt> element:


  <prompt>
    hello world!
  </prompt>



JSCEC: We received an exception installing a nuance parameter: X.Xs
Seeing this is indicative of an improperly formatted <property>. While not a fatal error, this message does serve to inform the developer that said parameter setting will not be properly honored. Most often, the cause for this is due to adding a 's' suffix to the value of a particular timing <property. An example of what might cause this error is illustrated below:

Incorrect setting:
<property name="com.nuance.ep.EndSecondsOnGrammarFinal" value="3.0s" /> 

Correct setting:
<property name="com.nuance.ep.EndSecondsOnGrammarFinal" value="3.0" /> 


com.mot.icsd.voxml.core.CoreException: Nuance Exception result at com.mot.icsd.voxml.framework.JSCExecutionContext.handleASRResponse
This error will pop up in the debugger under a number of circumstances, but is usually caused when an XML grammar specifies a GSL rulename:


<grammar src="http://MyServer.com/MyGrammar.xml#MYRULE" type="application/grammar-xml" />


There were more than com.mot.inputerrorlimit = 100 input errors.  Assuming a runaway session.
This error is indicative of a VoiceXML dialog receiving more than 100 'nomatch' or 'noinput' events. When this happens, the voxeo safeguards assume that this is a runaway call, and throws an error to the application that will 'kill' the call in question.

VoiceException: error.semantic This implementation platform limits documents to com.mot.documentlengthlimit=200000 bytes

This error is the result of attempting to fetch an XML document, (such as via the <data> element), that is greater than 200kb. This is a platform limitation for and, will not be changed in the foreseeable future.


Stay tuned, and we will dissect even more logger messages in the very near future!


  ANNOTATIONS: EXISTING POSTS
0 posts - click the button below to add a note to this page

login

  The Voxeo Real Time Debugger  |  TOC  |  Getting Support Help  

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