Page 1 of 1

Delay when DTMF and speech allowed

Posted: Wed Dec 20, 2017 1:27 pm
by jverweij
We have noticed that when we allow speech input there is a delay of upwards of 6 seconds before moving to the next step in the call flow. When it is DTMF the IVR moves within a second to the next step of the call flow. When we allow speech input there is that significant delay even if the answer is provided by keypad. For example, we ask for a "yes" or press 1. We press 1 and there is still the delay as the app seems to be waiting to record speech input. Is there anything that we can do to resolve that? Is that expected behavior? Here's a snippet of test vxml:
<form id="test">
<field name="test_response" type="boolean">
<grammar type="application/x-jsgf" mode="dtmf">
( 3 | 9 )
</grammar>
<prompt bargein="true">
Test
</prompt>
<filled>
<prompt>
<value expr="test_response"/>
</prompt>
<clear namelist="test_response"/>
<goto nextitem="test_response"/>
</filled>
</field>
</form>

Re: Delay when DTMF and speech allowed

Posted: Wed Dec 20, 2017 3:07 pm
by support
Hello,

Having voice input enabled should in no way alter how the system interprets DTMF input. There are two completely independent sets of timers at play. When an initial prompt plays there is:

Code: Select all

  <prompt timeout="2s">...</prompt>
The timeout of 2s above determines how long the system will wait for input (based on the inputmodes property). If that timeout is reached without any valid input the system will throw a noinput event. However, one a valid input is provided there are two different timeouts that will come into play. For DTMF input the "interdigittimeout" property will determine how long to wait for any additional digits. This value can be tuned, for example if you are only listening for one digit you can set the interdigittimeout to 10ms to have the system terminate input right away. For voice input the "completetimeout" property will determine how long the platform will listen for additional speech input after the user has stopped speaking. Like interdigittimeout this value can be tuned based on the type of input being collected. For short one word responses this can be tuned down to 1s. For your code we would recommend adjustments as follows:

Code: Select all

<?xml version="1.0"?>
<vxml version="2.0">
	<property name="inputmodes" value="dtmf voice"/>
	<property name="interdigittimeout" value="10ms"/>
	<property name="completetimeout" value="1s"/>
	<form id="test">
		<field name="test_response" type="boolean">
			<grammar type="application/x-jsgf" mode="dtmf">( 3 | 9 )</grammar>
			<prompt bargein="true" timeout="3s">Test</prompt>
			<filled>
				<prompt><value expr="test_response"/></prompt>
				<goto next="#test"/>
			</filled>
		</field>
	</form>
</vxml>