System information

Argument Purpose
attempts The number of times to play the prompt. If the caller fails to enter anything, the Read() application can
automatically re-prompt the user. The default is one attempt.
timeout The number of seconds the caller has to enter his input. The default value in Asterisk is 10 seconds, although it
can be altered for a single prompt using this option, or for the entire session by assigning a value using the
dialplan function TIMEOUT(response).
Once the input is received, it must be validated. If you do not validate the input, you
are most likely going to find your callers complaining of an unstable application. It is
not enough to handle the inputs you are expecting; you also need to handle inputs you
do not expect. For example, callers may get frustrated and dial 0 when in your IVR; if
you’ve done a good job, you will handle this gracefully and connect them to somebody
who can help them, or provide a useful alternative. A well-designed IVR (just like any
program) will try to anticipate every possible input and provide mechanisms to grace-
fully handle that input.
Once the input is validated, you can submit it to an external resource for processing.
This could be done via a database query, a submission to a URI, an AGI program, or
many other things. This external application should produce a result, which you will
want to relay back to the caller. This could be a detailed result, such as “Your account
balance is…,” or a simple confirmation, such as “Your account has been updated.” We
can’t think of any case where some sort of result returned to the caller is not required.
Sometimes the IVR may have multiple steps, and therefore a result might include a
request for more information from the caller in order to move to the next step of the
IVR application.
It is possible to design very complex IVR systems, with dozens or even hundreds of
possible paths. We’ve said it before and we’ll say it again: people don’t like talking to
your phone system, regardless of how clever it is. Keep your IVR simple for your callers,
and they are much more likely to get some benefit from it.
A Perfectly Tasty IVR
An excellent example of an IVR that people love to use is one that many pizza delivery
outfits use: when you call to place your order, an IVR looks up your caller ID and says
“If you would like the exact same order as last time, press 1.”
That’s all it does, and it’s perfect.
Obviously, these companies could design massively complex IVRs that would allow
you to select each and every detail of your pie (“for seven-grain crust, press 7”), but
how many drunken frat boys are going to successfully navigate that?
The best IVRs are the ones that require the least input from the caller. Mash that 1
button and your ’za is on its way! Woo hoo!
Components of an IVR | 391