#!/usr/bin/perl -- # -*- Mode: Perl -*- # "true" || eval 'exec /usr/bin/perl -S $0 $argv:q'; eval '(exit $?0)' && eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' & eval 'exec /usr/bin/perl -S $0 $argv:q' if $running_under_some_shell; use strict; use MIME::Lite; my $msgfile = $ARGV[0]; my $callerid = $ARGV[1]; die "No message file argument" unless defined($msgfile); die "Message file $msgfile not readable: $!" unless -r $msgfile; # Change these! my $msgto = ""; my $msgfrom = ""; my $msgsubject = "New Phone Message"; die "Edit script & set msgto" unless $msgto ne ""; die "Edit script & set msgfrom" unless $msgfrom ne ""; print "Started at " . `date`; my $base = `/usr/bin/basename $0`; chomp($base); $base = "/tmp/" . $base."XXXXXX"; #print "base = $base\n"; my $tmpdir = `/usr/bin/mktemp -dq $base`; chomp($tmpdir); #print "tmpdir = $tmpdir\n"; die "$tmpdir not writable" unless -r $tmpdir; #my @args=("/bin/sh", "/usr/local/bin/rmdtopvf", "$msgfile", "|", "/usr/local/bin/pvftowav", "|", "sox", "-t", "wav", "-", "-r", "8000", "-t", "wav", "-", "|", "/usr/local/bin/lame", "--preset", "phone", "-", "$tmpdir/message.mp3"); my @args = ("/usr/local/bin/msgtowav $msgfile | /usr/local/bin/sox -t wav - -r 8000 -t wav - | /usr/local/bin/lame --preset phone - $tmpdir/message.mp3"); system(@args); if ($? == -1) { die "Failed to execute converter: $!"; } elsif ($? & 127) { die "Converter died with signal", ($? & 127); } else { my $exitval = $? >> 8; die "Converter exited with value $exitval" unless $exitval == 0; } #print "Message encoded\n"; my $msg = "Message received at " . `date` . "\n"; $msg .= "Contained in $msgfile, attached as an mp3\n"; if (defined($callerid)) { $msg .= "Caller ID: $callerid\n"; } ### Start with a simple text message: $msg = MIME::Lite->new( From =>$msgfrom, To =>$msgto, Subject =>$msgsubject, Type =>'TEXT', Data =>$msg ); ### Attach a part... the make the message a multipart automatically: $msg->attach( Type =>'audio/x-mp3', Path =>"$tmpdir/message.mp3", Filename =>'message.mp3' ); $msg->send; #print "Message sent\n"; @args = ("/bin/rm -rf $tmpdir"); system(@args); print "Finished at " . `date`;