How do I make a hidden IVR?

I’m a small company and have no need for a “Press 1 for…” type of IVR. I just want my clients to hear the standard ringing, then either I answer the phone or it goes to voicemail. I have that part working. Now I would like to add a “hidden” IVR that I can use when I call in. During the “ringing” and before the voicemail kicks in, I’d like to be able to press a key and have Asterisk jump over to my private menu of some sort.

you want something like :

exten => s,1,Answer()
exten => s,2,PlayTones(ringing)
exten => s,3,DigitTimeout(3)
exten => s,4,ResponseTimeout(4)
exten => s,5,StopPlayTones
exten => s,6,NoOp(Continue with rest of incoming context)
; etc etc
exten => 1,1,Goto(my-menu,s,1); where 1 is the number you press
exten => t,1,Goto(incoming,s,6)

Thanks! This is close. I had to add a Wait(5) just before the StopPlayTones tho because it just fell through to the rest of my incoming context. It did not give me a chance to press a key. That works, but also makes it be 5 seconds before my desk phone rings. Not good. If I’m in the office, the caller waits an extra 5 seconds before my phone rings. Sure he does not know this, but the appearance is that I’m slow answering my phone. Is there a way to do this exact thing while my deskphone is ringing?

What you may want to think about doinig is putting the entry point to your hidden ivr in the context of your voice mail. This is a fairly standard practice. Since you are the one calling, you know that you won’t answer the phone, once your vmail message is playing you could enter your ivr extension then. This will also eliminate the answer delay when you are in your office.

Just a thought.

There are several solutions.

One is a greeting IVR for everyone, only you know the ‘hidden’ keys, invalid keys skip the IVR. The “m” in the DIAL() plays music on hold to the caller, a “r” would work as well.

exten => s,1,Ringing
exten => s,n,Wait(1.1)
exten => s,n,Answer
exten => s,n,Wait(0.9)
exten => s,n,Goto(10)

exten => s,10,Background(ivr/greeting) ; "You have reached ACME Corporation…"
exten => s,n,Background(silence/2)
exten => s,n,Background(vm-dialout) ; "please wait while I connect your call"
exten => s,n,Goto(20)

exten => s,n,Goto(voicemail-ivr,s,10)
exten => s,n,Hangup

exten => 1,1,VoiceMailMain(1000) ; check mailbox 1000
exten => 1,n,Hangup

exten => 2,1,NoOp(My private menu:${EXTEN})
exten => 2,n,Hangup

exten => 3,1,NoOp(My private menu:${EXTEN})
exten => 3,n,Hangup

exten => i,1,Goto(s,20)

exten => t,1,Hangup
exten => h,1,Hangup[/code]
Other options is a separate inbound DID for your IVR use, or use ${CALLERID(num)} to trigger your IVR.