Implementing a call menu in my extension.conf

For some days I have been testing different codes in asterisk.conf, but I cannot
get it right for my purposes

The goal is as following:

Somebody calls me at my sipgate number in austria
Then he shall hear a short beep.
When nothing happens within one second, the call shall be forwarded to
my sip hardware phone(it shall ring, so i can take the call)

BUT, when the dialer calls ‘1’ within this second, he shall hear nice music(just for
functional verification)

I already have this code stable:

[sipgateat-in]
exten => s,1,Goto(menu,s,1)

[playmusic1]
exten => s,1,MP3Player(/usr/lib/asterisk/seq/entertainer.mid)
exten => s,2,HangUp()

[playmusic2]
exten => s,1,MP3Player(/usr/lib/asterisk/seq/Kohlkopf1.mid)
exten => s,2,HangUp()

The main part of the code is not working

The code fragments I am using at the moment are

[menu]
exten => s,1,Answer
exten => s,2,MP3Player(/root/a.wav)
exten => s,3,Goto(menu2,s,1)

[menu2]
exten => s,1,Set(TIMEOUT(digit)=3)
exten => s,2,Set(TIMEOUT(response)=3)
exten => s,3,WaitExten
exten => 1,1,Goto(playmusic2,s,1)
;exten => s,3,HangUp()
;exten => s,3,Goto(playmusic2,s,1)
exten => t,1,Goto(playmusic1,s,1)

Can somebody provide me with an easy solotion(maybe with just one context ?)

rds

this should work

[sipgateat-in]
exten => s,1,Answer
exten => s,n,MP3Player(/root/a.wav)
exten => s,n,Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=3)
exten => s,n,WaitExten
exten => 1,1,MP3Player(/usr/lib/asterisk/seq/entertainer.mid)
exten => 1,2,HangUp()
exten => 2,1,MP3Player(/usr/lib/asterisk/seq/Kohlkopf1.mid)
exten => 2,2,HangUp()
exten => t,1,Dial(your sip exten)