Outgoing Call Dialplan - Dialstatus / Voicemail Detection

What I’m trying to do is make an outgoing call, when the call is answered play an audio file. Also I would like to update the dial status to the following…
[ul]Answered[/ul]
[ul]Call hangup[/ul]
[ul]No Answer[/ul]
[ul]Call went to voicemail[/ul]

The dialplan below sometimes plays the audio file to the callee voicemail.

This is what I have so far…

Call File
Channel: SIP/…/…
MaxRetries: 0
WaitTime: 20
Context: myContext
Extension: s

extentions.conf context
[myContext]
exten => s,1,AGI() ;agi script to update dialstatus to answered
exten => s,n,MixMonitor() ;start recording
exten => s,n,PlayBack() ;play audio
exten => s,n,hangup()

exten => h,1,AGI() ;agi script to update dialstatus to call finished
exten => h,n,StopMixMonitor()

any help would be appreciated!