In an automated telephone system, experienced users are accustomed to interrupting the system to quickly navigate to the next prompt. In the world of telephony this is known as "bargein." Bargein is a great feature because it enables experienced users to move rapidly through the system to get to the information that they want. Circumstances will arise, however, when a voice application developer wants to disable bargein. This article explains how.
You can disable bargein by setting the bargein property to false. The following example disables bargein within the main dialog to ensure that the user listens to the entire advertisement.
<vxml version="2.1"> <form id="main"> <!-- disable bargein for this dialog --> <property name="bargein" value="false"/> <!-- play an ad --> <block> <audio src="http://adsrv0.mycompany.com/ads/ad1.wav"/> </block> <!-- dialog --> <field name="city"> <prompt>What city are you calling from?</prompt> <grammar src="city.grammar"/> </field> </form> </vxml>
In previous versions of the Tellme Voice Application Network, the bargein property did not affect DTMF input, thus, users could bypass parts of a voice application such as advertisements and critical information by pressing a key on their telephone keypad.
To comply with the VoiceXML specification and to provide developers with tighter control over their voice applications, the current release of the Tellme VoiceXML interpreter respects the bargein property setting for both DTMF and spoken input.
Tellme realizes that, despite the benefits, this change in functionality may cause undesirable behavior in legacy applications. For example, some application developers have attempted to emulate DTMF only applications by setting the bargein property to false and by setting the mode attribute of the grammar element to "dtmf".
<form id="get_dept"> <field name="dept"> <property name="bargein" value="false"/> <grammar mode="dtmf" src="some.grammar"/> <prompt> Use your touch tone keypad to enter the first three letters of the department you want. <!-- play long list of departments --> </prompt> </field> </form>
The current and future behavior of the previous code snippet is to disallow the user from entering anything until after the entire list of departments is played. If the user hears the department they want or has used the system before and knows the desired department, they may become impatient and frustrated.
To revise the DTMF-only portions of your application to function correctly, set the bargein property to true, and set the inputmodes property to "dtmf". You can also set the mode attribute of the grammar element as a hint to the VoiceXML intepreter that the grammar contains values for DTMF input only.
<form id="get_dept"> <field name="dept"> <!-- bargein is true by default, so you needn't set it here if it's not set to false elsewhere --> <property name="bargein" value="true"/> <property name="inputmodes" value="dtmf"/> <grammar mode="dtmf" src="some.grammar"/> <prompt> Use your touch tone keypad to enter the first three letters of the department you want. <!-- long list of departments --> </prompt> </field> </form>
The inputmodes property defaults to "voice dtmf". This means that the speech system will accept both spoken and DTMF input. If you are writing a DTMF-only application, you can set the value to "dtmf" in your application root document as well as in each of the documents of your application that implement subdialogs.