IVR and dial extension

Using Asterisk 1.4.19:

I have an IVR menu with about 6 choices (1-6). How can I set this up so that the user can directly dial an extension? Extensions are 100-500. Is there some way that the menu can detect by the rate at which the user presses the keys what it should do. In other words, if the user presses 123 then it sends the call to extension 123, but if they just dial 1 and nothing else then it goes to the first menu choice.

Regards,
Gerry

include => default

Now, is there a way to adjust the timeout for the wait? I don’t use WaitExten. The timeout seems to be about 5 secs which is a little long before it goes to a menu choice.

Regards,
Gerry

I tried adding WaitExten(1) but it still takes about 5 secs before it goes to the menu choice or to the extension number. Anything else can be done?

Regards,
Gerry

UPDATE:
Here is what I have:
exten => s,1,Answer( )
exten => s,n,Background(mainmenu)
exten => s,n,WaitExten(1)
exten => 1,1,Dial(Local/100,30)
exten => 2,1,Dial(Local/200,30)
exten => 3,1,Dial(Local/300,30)

exten => _XXX,1,Goto(default,${EXTEN},1)

I tried playing with different values to WaitExten() and nothing seems to change no matter what I set it to. It always waits about 5-6 secs before going to any menu choice. Could this be a bug? WaitExten() is not behaving the way I see it described in the docs.

Is there any type of inter-digit-timeout setting? If the caller fails to enter the next digit within say 2 or 3 seconds then Asterisk should just take what the caller has entered and process it. Is there such behavior?

Regards,
Gerry

I tried adding the following timeout control statements to my auto-attendant context but they do not work in Asterisk 1.4.19. They IVR stops working completely when I add these right after the Answer().:

exten => s,n,DigitTimeout(5)
exten => s,n,ResponseTimeout(10)

Need some help on this.

UPDATE:
These work with Asterisk 1.4:
exten => s,n,Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=10)

Regards,
Gerry