Page 1 of 1

Time between prompts

Posted: Thu Nov 09, 2006 9:30 pm
by brent.russell
It seems that it takes a while between saying prompts. Is there a way to limit this time. It seems it takes a whole 1-2 secs in order for the next prompt to start.

In this example... when a user presses 2 it goes to Please enter your 10 digit phone number on your numeric keypad and it takes about 2 seconds between prompts. I want to speed it up. Any ideas?

Code: Select all

<form id="confirmCallerID">
		<field name="confirmNumberChoice">
			<grammar type="application/x-jsgf">1|2</grammar>
			<property name="interdigittimeout" value="4s"/>
			<prompt count="1" timeout="6s">If this phone number is correct, press one, if not press two</prompt>
			<filled>
				<if cond="confirmNumberChoice==1">
					<assign name="document.phone_number" expr="session.telephone.ani"/>
					<assign name="application.GVphone" expr="session.telephone.ani"/>
					<goto next="u_mainMenu.vxml"/>
					<elseif cond="confirmNumberChoice==2"/>
					<goto next="#getNumber"/>
				</if>
			</filled>
			<noinput>
				<reprompt/>
			</noinput>
			<nomatch>
        Sorry, that was not one of the choices.
        <reprompt/>
			</nomatch>
		</field>
	</form>
	<!-- Get Phone number on Caller ID incorrect -->
	<form id="getNumber">
		<field name="enterNumber" type="digits?length=10">
			<prompt>Please enter your 10 digit phone number on your numeric keypad</prompt>
			<filled>
				<assign name="document.tempPhoneNumber" expr="enterNumber"/>
				<goto next="#confirmMobileNumber"/>
			</filled>
			<noinput>
				<reprompt/>
			</noinput>
		</field>
	</form>

IVR platform immediately proceeds after collecting 10 digits

Posted: Fri Nov 10, 2006 10:20 am
by support
You have a 4 second interdigittimeout set in the first field. This means that the IVR will always wait 4 seconds for additional DTMF after the last keypress. Since the IVR grammar only looks for 1 digit, you should lower interdigittimeout to something like 100ms. This will make your first field much more responsive.

For your second field, you're collecting 10 digits. If you know you're collecting exactly 10 digits, you can set the termmaxdigits property to "true" and the IVR platform will immediately proceed after it has collected exactly 10 digits.

So your new IVR code snippet will look like this:

Code: Select all

   <form id="confirmCallerID">
      <field name="confirmNumberChoice">
         <grammar type="application/x-jsgf">1|2</grammar>
         <property name="interdigittimeout" value="100ms"/>
         <prompt count="1" timeout="6s">If this phone number is correct, press one, if not press two</prompt>
         <filled>
            <if cond="confirmNumberChoice==1">
               <assign name="document.phone_number" expr="session.telephone.ani"/>
               <assign name="application.GVphone" expr="session.telephone.ani"/>
               <goto next="u_mainMenu.vxml"/>
               <elseif cond="confirmNumberChoice==2"/>
               <goto next="#getNumber"/>
            </if>
         </filled>
         <noinput>
            <reprompt/>
         </noinput>
         <nomatch>
        Sorry, that was not one of the choices.
        <reprompt/>
         </nomatch>
      </field>
   </form>
   <!-- Get Phone number on Caller ID incorrect -->
   <form id="getNumber">
      <property name="termmaxdigits" value="true"/>
      <field name="enterNumber" type="digits?length=10">
         <prompt>Please enter your 10 digit phone number on your numeric keypad</prompt>
         <filled>
            <assign name="document.tempPhoneNumber" expr="enterNumber"/>
            <goto next="#confirmMobileNumber"/>
         </filled>
         <noinput>
            <reprompt/>
         </noinput>
      </field>
   </form> 
Please note that you must NOT have any other active IVR grammars loaded (for instance, root grammars) while in that second field or else termmaxdigits will be automatically set back to false due to potential input length ambiguity.