[Asterisk-Users] ivr key press?

Olle E. Johansson oej at edvina.net
Sun Dec 21 02:00:12 MST 2003

As I understand it, building a menu is best done in a separate context, done for the menu.

I'm guessing a bit, but my tests indicate that Asterisk finds out the longest extension within
the context (including included contexts) and listens until you've entered as many digits as the
longest one, or a DigitTimeout. So if you have a menu with a "1" and one "3000" as the longest one,
entering 3000 makes Asterisk stop listening and start processing directly, but entering "1" makes
Asterisk wait until a DigitTimeout. User's appreciate fast processing, so try to keep your
menues consistent in input length.

The 'i' extension is used for invalid input, catch it. It has to be within the menu extension.
The 't' extension is for timeouts. Catch that too.

Rich's example:
 > > exten => 620,1,Wait,1
 > > exten => 620,2,Answer
 > > exten => 620,3,DigitTimeout,5
 > > exten => 620,4,ResponseTimeout,10
 > > exten => 620,5,Background(npi-greeting)  ; "Thanks for calling press 1 for"
 > >
 > > exten => 1,1,Goto(npi-directory,s,1)

I would change this to something like

exten => 620,1,Goto(richsmenu,s,1)

exten => s,1,wait(1)
exten => s,2,Answer
exten => s,3,DigitTimeout(5)
exten => s,4,ResponseTimeout(10)
exten => s,5,Background(npi-greeting)

;Possible choices
exten => 1,1, blablabla
exten => 2,1, blablabla

;Catch three character extensions
exten => _XXX,1,goto(myextensions,${exten},1

;Invalid extensions
exten => i, 1, Playback(invalid)
exten => i, 2, goto(s,5)
;Timeouts, restart
exten => t, 1, goto (s,5)

Also make sure there's an 'i' extension in [myextensions]

Of course one could include 'myextensions' but there might be other stuff in there that you
won't want to be reachable from a menu.


Good luck building menues! It's fun.

More information about the asterisk-users mailing list