[asterisk-users] Automon -> Voicemail

Doug Lytle support at drdos.info
Mon Dec 7 14:58:10 CST 2009


Steve Johnson wrote:
> Hi all,
>
> What's the best method to send automon call recordings (*1) to the
> voicemail box of the Asterisk user?
>
>    

I've picked up the following off the list a while ago.  Works pretty 
good.  I do a mysql lookup to see if the user has the ability or not:

__features.conf:__


[applicationmap]

recordtovm => *8,self,Macro,recordtovm


__Dial plan entry:__

; ********************************
; Call recording, initiated by *8
; after hangup, send recording to
; callers voice mail box
; ********************************

[macro-recordtovm]

exten => s,1,MYSQL(Connect connid localhost username 'supersecret' 
call_recording)
exten => s,n,GosubIf($["${MYSQL_STATUS}" = "-1"]?mysql_failed,s,6)
exten => s,n,MYSQL(Query resultid ${connid} SELECT allowed FROM 
Indianapolis WHERE extension = ${CALLERID(number)})
exten => s,n,MYSQL(Fetch fetchid ${resultid} results)
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,Set(RECORDING.OK=${results})
exten => s,n,GotoIf($["${results}" = "Y"]?9:15)
exten => 
s,n,Set(MONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)})
exten => s,n,Set(ORIG_DATE=${STRFTIME(${EPOCH},,%c)})
exten => s,n,Set(ORIG_TIME=${STRFTIME(${EPOCH},,%s)})
exten => s,n,Set(ORIG_CID=${ARG2})
exten => s,n,Playback(local/stutter)
exten => 
s,n,MixMonitor(${MONITOR_FILENAME}.wav,b,/usr/local/bin/recordtovm.pl 
${CALLERID(num)} ${MONITOR_FILENAME}.wav "${ORIG_DATE}" "${ORIG_TIME}" 
"${ORIG_CID}")
exten => s,n,NoOP(User allowed to record calls? ${results})



__Perl script__

cd /usr/local/bin

cat recordtovm.pl

#!/usr/bin/perl -w
#
use strict;

my $monitordir="/var/spool/asterisk/monitor/";
my $vmdir="/var/spool/asterisk/voicemail/sip/";
my $vmfolder="INBOX";
my $vmbox=$ARGV[0];
my $vmpath=$vmdir."$vmbox/"."$vmfolder";
my $monitorfilename=$ARGV[1];
my $orig_date=$ARGV[2];
my $orig_time=$ARGV[3];
my $orig_cid=$ARGV[4];

opendir (DIR, $vmpath);
my @files = grep(/\.txt$/,readdir(DIR));
closedir(DIR);
my @sortedfiles = sort {$b cmp $a} @files;
my $vmid;
if ($sortedfiles[0] =~ /^(msg)(\d\d\d\d)(.txt)/)
{
     $vmid=$2;
     $vmid++;
}
else
{
     $vmid="0000";
};

open VMFILE,"> $vmpath/msg$vmid.txt";
print VMFILE ";\n";
print VMFILE "; Message Information file\n";
print VMFILE ";\n";
print VMFILE "[message]\n";
print VMFILE "origmailbox=$vmbox\n";
print VMFILE "context=\n";
print VMFILE "macrocontext=\n";
print VMFILE "exten=s\n";
print VMFILE "priority=\n";
print VMFILE "callerchan=\n";
print VMFILE "callerid=$orig_cid\n";
print VMFILE "origdate=$orig_date\n";
print VMFILE "origtime=$orig_time\n";
print VMFILE "category=\n";
print VMFILE "duration=\n";
close VMFILE;

if ($ARGV[1])
{
     system("mv $monitordir"."$monitorfilename $vmpath/msg$vmid.wav");
};


-- 

Ben Franklin quote:

"Those who would give up Essential Liberty to purchase a little Temporary Safety, deserve neither Liberty nor Safety."




More information about the asterisk-users mailing list