VXML AMD Detection

Introduction

A very effective way of detecting AMD on a VXML call is via the noinput tag. As per the w3c voiceXML specification, the noinput tag is a short hand for catching events. In other words

<source lang="xml"> <noinput>I didn't hear anything, please try again.</noinput> </source> can be replaced with <source lang="xml"> <catch event="noinput"> I didn't hear anything, please try again. <catch> </source>

This page will now demonstrate one possible way of using the noinput tag to detect answering machines.

Detecting Answering Machines

Answering machine detection has to be done early in the calls for multiple reasons:

  1. It is easy to detect, most humans will not have the propensity to answer and not do anything.
  2. There's maybe a three-four second window within which you should either get a DTMF tone coming in, or a hangup.
  3. Waiting too long to detect answering machines can be loss of precious talk time (not to mention unnecessary billing).

It is therefore recommended that any VXML document have the detection mechanism as the first option in the call.

Sample Call Flow

Caller: Answering machine picks up
CallFire: This is a VoiceXML Message from CallFire, Please press 1 to continue.
Caller: No DTMF input
CallFire: (second time)This is a VoiceXML Message from CallFire, Please press 1 to continue.
Caller: No DTMF input
CallFire: (third time)I'm sorry, I did not understand your response. Goodbye!

The vxml document for such a call flow will look like: <source lang="XML"> <form id="top">

   <block>
    <prompt>This is a VoiceXML Message from CallFire, Please press 1 to continue.
    </prompt>
   <block>
   <field name="AMD" type="digits?length=1">
     <noinput>
       <reprompt/>
     </noinput>
   <noinput count="3">
    <prompt>I'm sorry, I did not understand your response. Goodbye!
    </prompt>
   </noinput>

</form> </source>