#!/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`;

