#!/usr/bin/php -q get_variable("ARG2"); $timetmp = explode("-",$timestamp); $recpath = "/var/spool/asterisk/monitor/".$timetmp[0]; if (file_exists($recpath)==false){ mkdir ($recpath); } switch($type['data']) { case "Group": $r = $agi->get_variable("ARG1"); if ($r["result"] == 0) { $agi->verbose("Extension List not set -- nothing to do"); exit(1); } $extenlist = $r["data"]; $agi->set_variable("RecEnable", "DISABLED"); //disable by default $list = explode("-",$extenlist); if(!empty($list)) { foreach($list as $exten) { $setting = $agi->database_get("AMPUSER",$exten."/recording"); if ($setting["result"] == 0) { $agi->verbose("No DB Entry AMPUSER/$exten/recording - Not Recording for $exten, checking for others"); continue; } //explode recording vars $recording = explode("|",$setting["data"]); $recout = substr($recording[0],4); $recin = substr($recording[1],3); if ($recin == "Always") { $agi->verbose("Recording enable for ".$exten); $agi->verbose("CALLFILENAME={$recpath}/g{$exten}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CALLFILENAME","{$recpath}/g{$exten}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CDR(userfield)","/{$timetmp[0]}/g{$exten}-{$timestamp}-{$uniqueid}"); $agi->set_priority('record'); exit(0); } } } else { $agi->verbose("Extension List is empty -- nothing to do"); exit(1); } break; case "OUT": $dnid = $agi->request["agi_dnid"]; $exten = $agi->get_variable("ARG1"); $options = $agi->database_get("AMPUSER","{$exten['data']}/recording"); if ($options["result"] == "0") { $agi->verbose("No AMPUSER db entry for ".$exten["data"].". Not recording"); exit(1); } //explode recording vars $recording = explode("|",$options["data"]); $recout = substr($recording[0],4); $recin = substr($recording[1],3); if($recout == "Always") { $agi->verbose("Outbound recording enabled."); $agi->verbose("CALLFILENAME={$recpath}/OUT{$exten['data']}-{$dnid}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CALLFILENAME","{$recpath}/OUT{$exten['data']}-{$dnid}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CDR(userfield)","/{$timetmp[0]}/OUT{$exten['data']}-{$dnid}-{$timestamp}-{$uniqueid}"); $agi->set_priority('record'); exit(0); } else { $agi->verbose("Outbound recording not enabled"); exit(1); } break; case "IN": $callerid = $agi->request["agi_callerid"]; $exten = $agi->get_variable("ARG1"); $options = $agi->database_get("AMPUSER","{$exten['data']}/recording"); if ($options["result"] == "0") { $agi->verbose("No AMPUSER db entry for ".$exten["data"].". Not recording"); exit(1); } //explode recording vars $recording = explode("|",$options["data"]); $recout = substr($recording[0],4); $recin = substr($recording[1],3); if($recin == "Always") { $agi->verbose("Inbound recording enabled."); $agi->verbose("CALLFILENAME={$recpath}/IN{$exten['data']}-{$callerid}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CALLFILENAME","{$recpath}/IN{$exten['data']}-{$callerid}-{$timestamp}-{$uniqueid}"); $agi->set_variable("CDR(userfield)","/{$timetmp[0]}/IN{$exten['data']}-{$callerid}-{$timestamp}-{$uniqueid}"); $agi->set_priority('record'); exit(0); } else { $agi->verbose("Inbound recording not enabled"); exit(1); } break; } // we just exit with no changes to the variable. exit(1); ?>