[macro-vm]; exten => s,1,Dial(${ARG1},20,${ARG4}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Wait(1) exten => s-NOANSWER,n,Set(MISSEDCAUSE=no-answer) exten => s-NOANSWER,n,VoiceMail(${ARG2},u,${ARG3}) exten => s-NOANSWER,n,Goto(exit-${VMSTATUS},1) exten => s-BUSY,1,Wait(1) exten => s-BUSY,n,Set(MISSEDCAUSE=busy) exten => s-BUSY,n,VoiceMail(${ARG2},b,${ARG3}) exten => s-BUSY,n,Goto(exit-${VMSTATUS},1) exten => s-ANSWER,1,Set(MISSEDCAUSE=didntmiss) exten => s-ANSWER,n,Hangup() exten => _s-.,1,Goto(s-NOANSWER,1) exten => h,1,GosubIf($["${MISSEDCAUSE}" = ""]?reallyhungup) exten => h,n,GosubIf($["${SENDNOTIFICATIONS}" != "no"]?notify) exten => h,n,Hangup() exten => h,n(reallyhungup),Set(MISSEDCAUSE=hungup) exten => h,n,Return() exten => h,n(notify),Macro(email) exten => h,n,Return() exten => exit-FAILED,1,Answer() exten => exit-FAILED,n,Wait(1) exten => exit-FAILED,n,Playback(vm-theperson) exten => exit-FAILED,n,SayDigits(${ARG3}) exten => exit-FAILED,n,Playback(vm-isunavail) exten => exit-FAILED,n,GosubIf($["${SENDNOTIFICATIONS}" != "no"]?notify) exten => exit-FAILED,n,Hangup() exten => exit-FAILED,n(notify),Macro(email) exten => exit-FAILED,n,Return() exten => exit-SUCCESS,1,Playback(vm-goodbye) exten => exit-SUCCESS,n,GosubIf($["${SENDNOTIFICATIONS}" != "no"]?notify) exten => exit-SUCCESS,n,Hangup() exten => exit-SUCCESS,n(notify),Macro(email) exten => exit-SUCCESS,n,Return() exten => exit-USEREXIT,1,Playback(vm-goodbye) exten => exit-USEREXIT,n,GosubIf($["${SENDNOTIFICATIONS}" != "no"]?notify) exten => exit-USEREXIT,n,Hangup() exten => exit-USEREXIT,n(notify),Macro(email) exten => exit-USEREXIT,n,Return()