[incoming] exten => _bXXX,1,Set(VBOX=${EXTEN:1:3}) exten => _bXXX,n,Set(RETURN=${EXTEN:1:3}) exten => _bXXX,n,Set(MESSAGE=busy) exten => _bXXX,n,Goto(ivr-vmail,s,1) exten => _uXXX,1,Set(VBOX=${EXTEN}) exten => _uXXX,n,Set(RETURN=${EXTEN:1:3}) exten => _uXXX,n,Set(MESSAGE=unavail) exten => _uXXX,n,Goto(ivr-vmail,s,1) [ivr-vmail] include => outgoing exten => h,1,Hangup exten => s,1,Set(LOOPCOUNT=0) exten => s,n,Set(__DIR-CONTEXT=default) exten => s,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT}) exten => s,n,Set(_IVR_CONTEXT=${CONTEXT}) exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?begin) exten => s,n,Answer exten => s,n,Wait(1) exten => s,n(begin),Set(TIMEOUT(digit)=3) exten => s,n,Set(TIMEOUT(response)=3) ;test if exten has busy/unavail.wav | temp.wav exten => s,n,AGI(vmtest,${RETURN},${MESSAGE},default) ; ${HASMESSAGE} = FALSE, TRUE, NOGREET or TEMPGREET ; ${MSG} = vm-isonphone, or vm-isunavail ; ${D1} = first number of exten ; ${D2} = second number of exten ; ${D3} = last number of exten ;if has temp ${HASMESSAGE} = TEMPGREET exten => s,n,GotoIf($["${HASMESSAGE}" = "TEMPGREET"]?40) ;if has a busy/unavail ${HASMESSAGE} = "TRUE" exten => s,n,Gotoif($["${HASMESSAGE}" = "TRUE"]?50:60) ; step 40 play temp greet ;exten => s,40,Background(custom/${RETURN}/temp) ;exten => s,41,WaitExten() ;temp work around for now exten => s,40,gotoif($[${RETURN} = 231 ]?vmvm,${RETURN},1) exten => s,41,VoiceMail(s${RETURN}@default) ; step 50 had busy/unavail message exten => s,50,Background(custom/${RETURN}/${MESSAGE}) exten => s,51,WaitExten() ; step 60 did not have busy/unavail does it have greet.wav? exten => s,60,Gotoif($["${HASMESSAGE}" = "NOGREET" ]?61:70) ; if greet.wav then we need play it and play the status message ;if yes play it then play the is busy/unavail message from system exten => s,61,Background(custom/${RETURN}/greet&${MSG}) exten => s,62,WaitExten() ;ok so they dont even have their name recorded so now we need to just ;play "the person at ${EXTEN} is ${MSG} exten => s,70,Background(vm-theperson&digits/${D1}&digits/${D2}&digits/${D3}&${MSG}) exten => s,71,WaitExten() exten => *,1,VoicemailMain(${RETURN}@default) exten => #,1,VoiceMail(s${RETURN}@default) exten => hang,1,Playback(vm-goodbye) exten => hang,n,Hangup exten => i,1,dbDel(${BLKVM_OVERRIDE}) exten => i,n,Set(__NODEST=) exten => i,n,Goto(ivr-1,s,begin) exten => t,1,dbDel(${BLKVM_OVERRIDE}) exten => t,n,Set(__NODEST=) exten => t,n,VoiceMail(s${RETURN}@default) exten => 0,1,Dial(IAX2/toPBX1/600,15) exten => 0,2,Goto(incoming,252) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ AGI Script #!/usr/bin/env php set_variable($variable, "TEMPGREET"); debug("Setting $variable, TEMPGREET",1); return; } // ok so they dont have a temp greet set so we need to check if they // have a busy/unavail message recorded if(is_file("/var/spool/asterisk/voicemail/$context/$exten/$status.wav")) { // if so we set HASMESSAGE -> true & return $value = "TRUE"; $myagi->set_variable($variable, $value); return; } // ok so they dont have one. now we need to check if they have their // name recorded. else { // check if greet.wav is a file if(is_file("/var/spool/asterisk/voicemail/$context/$exten/greet.wav")) { // if yes then we will set HASMESSAGE = NOGREET and set MSG to the proper status message $myagi->set_variable($variable, "NOGREET"); if($status == "busy" ) $myagi->set_variable("MSG", "vm-isonphone"); if($status == "unavail" ) $myagi->set_variable("MSG", "vm-isunavail"); return; } //ok so they dont have a greet.wav so they have nothing and the system has to take care of everything //for them else { //we need to split $exten into an array where $exten = 231 -> $exten = array("2","3","1") //then we need to set D1 = $exten[0] D2 = $exten[1] D3 = $exten[2] if($status == "busy" ) $myagi->set_variable("MSG", "vm-isonphone"); if($status == "unavail" ) $myagi->set_variable("MSG", "vm-isunavail"); list($a,$b,$c) = str_split($exten); $myagi->set_variable("D1","$a"); $myagi->set_variable("D2","$b"); $myagi->set_variable("D3","$c"); return; }