All pastes #960873 Raw Edit

Unnamed

public text v1 · immutable
#960873 ·published 2008-03-28 14:52 UTC
rendered paste body
[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
<?php
/*
Script to test for
/var/spool/asterisk/voicemail/default/${EXTEN}/${STATUS}.wav
where ${STATUS} = busy/unavail

Michael Rice
March 6th, 2008
*/

require_once "phpagi.php";
require_once "phpagi-asmanager.php";

$myagi = new AGI();

$debug = 4;

// $argv[1] EXTEN
// $argv[2] STATUS
// $argv[3] CONTEXT

$exten = $argv[1];
$status = $argv[2];
$context = "default";
$variable = "HASMESSAGE";
$value = "FALSE";

if(isset($argv[3])) {
  $context = $argv[3];
}
// first thing is first, if they have a temp greeting set we need to play it
// and we dont care if they have any other recording set.
if(is_file("/var/spool/asterisk/voicemail/$context/$exten/temp.wav") or
   is_file("/var/spool/asterisk/voicemail/$context/$exten/temp.WAV") or
   is_file("/var/spool/asterisk/voicemail/$context/$exten/temp.gsm") ) { 
    $myagi->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;
  }