I'm creating a sub dialog another vendor is calling. I'm having trouble reading the values passed into my subdialog from that vendor. I can read the parameters passed in when I call the subdialog myself from another vxml browser, so I tend to think that the other vendor is passing them incorrectly. However, I have not been able to locate any details in the w3c spec on how that data really gets passed. When IIS posts my page from the voice browser I am using I don't see the parameters being specified as part of the query string. However, when this the browser for this other vendor requests my sub dialog I see the parameters in the query string and the values don't show up in the corresponding 's. This leads me to believe they are passing the variables incorrectly. Is there anywhere I can get details on how this process is suppose to work? How can I confirm that these values are not actually being passed? Thanks!
The subdialog element can be used to transition to forms within the same document or an external document. Since you are indicating that you are working with a third party, I'm going to assume the subdialog is to an external form in your document.
The subdialog passes arguments via the HTTP request. If the method attribute of the subdialog is GET or unset, they will be arguments on the URL. If it is post, they will be embedded within the request. If you are creating a standard servlet/jsp, you should be able to pick up these arguments as you would from any web application.
As you've probably noticed, the VoiceXML specification is a bit weak on a lot of details. One particular one that may cause you problem is how complex objects (ECMAScript objects) are passed. Some browsers will not pass them, some convert to text arguments like x.y.z=42 and some convert to a JSON string. I recommend keeping with passing primitive variables.
On the topic of passing of objects, you may find different behaviors within a browser when transitioning within the document versus transitioning to another document.
Some quick checks:
- See if the vendor has a sample application that demonstrates the argument passing
- Verify that you are using a browser that the vendor has used to validate their application.