#!/usr/bin/perl # # Simple AGI application to play mp3's selected by a user both using # xmms and over the phone itself. # $|=1; while() { chomp; last unless length($_); if (/^agi_(\w+)\:\s+(.*)$/) { $AGI{$1} = $2; } } print STDERR "AGI Environment Dump:\n"; foreach $i (sort keys %AGI) { print STDERR " -- $i = $AGI{$i}\n"; } dbmopen(%DIGITS, "/var/lib/asterisk/mp3list", 0644) || die("Unable to open mp3list");; sub checkresult { my ($res) = @_; my $retval; $tests++; chomp $res; if ($res =~ /^200/) { $res =~ /result=(-?[\w\*\#]+)/; return $1; } else { return -1; } } #print STDERR "1. Playing beep...\n"; #print "STREAM FILE beep \"\"\n"; #$result = ; #checkresult($result); print STDERR "2. Getting song name...\n"; print "GET DATA demo-enterkeywords\n"; $result = ; $digitstr = checkresult($result); if ($digitstr < 0) { exit(1); } $digitstr =~ s/\*/ /g; print STDERR "Resulting songname is $digitstr\n"; @searchwords = split (/\s+/, $digitstr); print STDERR "Searchwords: " . join(':', @searchwords) . "\n"; foreach $key (sort keys %DIGITS) { @words = split(/\s+/, $DIGITS{$key}); $match = 1; foreach $search (@searchwords) { $match = 0 unless grep(/$search/, @words); } if ($match > 0) { print STDERR "File $key matches\n"; # Play a beep print "STREAM FILE beep \"\"\n"; system("xmms", $key); $result = ; if (&checkresult($result) < 0) { exit 0; } print "EXEC MP3Player \"$key\"\n"; # print "WAIT FOR DIGIT 60000\n"; $result = ; if (&checkresult($result) < 0) { exit 0; } print STDERR "Got here...\n"; } } print STDERR "4. Testing 'saynumber' of $digitstr...\n"; print "STREAM FILE demo-nomatch\"\"\n"; $result = ; checkresult($result);