Interrupting swift IVR voice

How can I interrupt my Swift IVR voice so that I can press the desired key while the voice is still speaking and it will bring me to the correct extension?

I think I need to set the DTMF input or something but does anyone know the correct syntax for doing it and where I need to set it?

THis is my current swift.conf file and IVR in extensions.conf

extensions.conf:
exten => s,1,Answer()
exten => s,2,Background(this-call-may-be-monitored-or-recorded)
exten => s,3,Background(for-qc-and-training-purposes)
exten => s,4,Background(if-u-know-ext-dial)
exten => s,5,Wait(1)exten => s,6,Swift(Thank you for calling.  To speak with Matt. Press 1.  To leave him a voicemail. press 2.  To call his cell phone. press 3. To listen to the weather forcast for Boston. Press 4.  Or to schedule a wake-up call. press 7.)
exten => s,7,NoOp(Key pressed: ${SWIFT_DTMF})
exten => s,8,WaitExten
exten => 1,1,Goto(submenu,1,1)
exten => 2,1,Goto(submenu,2,1)
exten => 3,1,Goto(submenu,3,1)
exten => 4,1,Goto(weather,s,1)
exten => *,1,Goto(mainmenu,s,6)
exten => #,1,Goto(resetasterisk,s,1)
exten => 7,1,Goto(sip,77,1)
swift.conf:
[general]
voice=Callie-8kHz
goto_exten=yes
buffer_size=65535

This may not answer your question, but using the “Playback” function, the user input will not be monitored, but using “Background” function, the system always listens, even while playing back an audio file.

Your swift.conf file is correct. However, you might want to change your dialplan a little bit. Im not saying you have to, but this is what I do, and it works for me:

exten	=>	s,1,Swift('blah blah blah')
exten	=>	s,2,WaitExten(TIMEOUT)

exten       =>            1,1,Noop()
exten       =>            2,1,Noop()
exten       =>            3,1,Noop()

the key is to have the directive “goto_exten=yes” in swift.conf, which you do have. Whenever you are watching *CLI>, and you press a key while the Swift engine is running, you should see something like:

NOTICE app_swift.c:369 swift_exec: User pressed a key: 1

at this point, app_swift will jump to that extension if it exists, else it will go to the next priority.

EDIT - TIMEOUT is a global variable i set in my dialplan equal to 10.

thanks for the input. I appreciate it.

I did try this in my dialplan and when I am looking at the *CLI> I can see that it says key pressed: 1

Immediately after this though the call is disconnected. Not sure why this happens

post the error message from *CLI>