Properties are used to set values [in VoiceXML applications] that affect platform behavior, such as the recognition process, timeouts, caching policy, etc.
One of the most frequently used properties is the “inputmodes” property, which controls the types of input that a caller may use to interact with a VoiceXML application. In practice, it’s often a wise design consideration to construct handlers for when certain types of input are not working well (e.g., voice input) and direct a caller to utilize another input method (e.g., touch tone, or DTMF entry).
However, while it is fairly easy to detect the type of input method being used by a caller, and even easier to simply tell a caller to use an alternate input method, it can sometime be tricky to change the “inputmodes” property from within a VoiceXML application. Changing this property value can become important when a VoiceXML application is not handling voice input efficiently. This can occur in a noisy environment with lots of background noise, or when other factors (static on the line) may be causing the Automatic Speech Recognition (ASR) engine to try and recognize input. Often, an ASR engine will attempt a recognition when what it thinks is spoken input is detected. Setting the “inputmodes” property to DTMF will cause the VoiceXML platform to ignore spoken input.
`
</p>
`
VoiceXML doesn’t allow property values to be set through client-side scripting. There is no “expr” attribute to the
Please try entering your selection using your touch tone key pad.
Please wait while I transfer you to a customer service representative.
`
As stated above, its pretty straightforward to simply tell the caller to use DTMF entry – which I’ve done above – but quite another to actually enforce it by changing the “inputmodes” property. If the problem the caller is having is a function of a faulty line, or a noisy environment (both factors probably outside their control) telling them to use DTMF entry probably isn’t a good enough solution by itself.
**Changing property values inside a VoiceXML application – the static approach**
The easiest way to change property settings is simply to direct a caller to another dialog or module with the desired setting. So, using the above example, we might detect when a caller is having trouble and move them to a different part of the application:
`
Please try entering your selection using your touch tone key pad.