Here is a CGI script to play messages. -- Paul Alfille On Fri, 2003-12-26 at 06:26, Des Aubery wrote:
What software is available in SuSe 9.0 Professional to enable my system to act as a 'Phone Answering Machine'?
#!/usr/bin/perl -w # FastCGI version use FCGI; my $title = "Voice Mail -- Paul Alfille" ; # constants my @w = ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); my @w3 = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); my @m = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); my $VOICEDIR="/var/spool/voice/incoming"; #File List my @Fil ; #File Size my %Siz ; #File Date my %Dat ; #File Name my %Nam ; sub FileList { my $rawname ; my ($dev,$ino,$mod,$nl,$uid,$gid,$rdv,$siz,$atm,$mtm,$ctm,$blk,$bks) ; my ($sec,$min,$hr,$mday,$mon,$yr,$wk,$yt,$idst) ; my $vmgs = 0 ; @Fil = () ; open( DIR , "ls -t1 $VOICEDIR/*.wav 2> /dev/null |" ) ; while (<DIR>) { if ( ! exists $Nam{$_} ) { chomp ; $Nam{$_} = 1 ; ($dev,$ino,$mod,$nl,$uid,$gid,$rdv,$siz,$atm,$mtm,$ctm,$blk,$bks) = stat ; s/\.wav$// ; my $f=(split("/"))[-1] ; ($sec,$min,$hr,$mday,$mon,$yr,$wk,$yt,$idst)=localtime($mtm); $Siz{$f}=$siz ; $yr += 1900 ; $Dat{$f}="$hr:$min\t$w3[$wk] $m[$mon] $mday, $yr"; $Fil[$vmgs++] = $f ; # print "$vmgs $Fil[$vmgs-1] $Siz{$Fil[$vmgs-1]} $Dat{$Fil[$vmgs-1]}\n"; } } close( DIR ) ; return $vmgs ; } $Color = "white" ; $DeleteColor = "salmon" ; $PlayColor = "lightgreen" ; $NoticeColor = "yellow" ; #Start of FatCGI loop my $request = FCGI::Request(); while ($request->Accept() >= 0 ) { my @pairs=split(/&/,$ENV{'QUERY_STRING'}); my $File = "" ; print "Content-type: text/html\n\n"; print "<HTML>\n" ; print "<HEAD><TITLE>Voice mail -- Paul Alfille</TITLE></HEAD>\n" ; print "<body BGCOLOR=white><blockquote><P>" ; foreach (@pairs) { ($key,$content)=split(/=/,$_,2); $content=~tr/+/ /; $content=~s/%(..)/pack("c",hex($1))/ge; # $fields{$key}=$content; # Found a message # Play message if ( $content eq "Play" ) { print "<TABLE><TR><TD><H3><B>Playing message $key </B></H3></TD></TR>\n" ; $Color = $PlayColor ; $File = $key ; # print "<TR><TD><EMBED SRC=$LINKDIR/$File.wav autostart=true volume=100 loop=1 CACHE=TRUE TYPE='audio/wav'><NOEMBED><BGSOUND SRC=$LINKDIR/$File.wav autostart=true volume=100 loop=1 CACHE=TRUE></NOEMBED></TD></TR>\n" ; print "<TR><TD><EMBED SRC=/vmail/$File.wav autostart=true volume=100 loop=1 CACHE=TRUE TYPE='audio/wav'><NOEMBED><BGSOUND SRC=/vmail/$File.wav autostart=true volume=100 loop=1 CACHE=TRUE></NOEMBED></TD></TR>\n" ; print "</TABLE>\n" ; last ; } # Delete message (1st pass) if ( $content eq "Delete" ) { $Color = $DeleteColor ; $File = $key ; print "<TABLE><TR><TD><H3>Delete voice message $key?</H3></TD></TR>\n" ; print "<TR><TD><STRONG><FORM> </FORM></STRONG></TD></TR>\n" ; print "</TABLE>\n" ; last ; } # Delete message (2nd pass, confirmed) if ( $content eq "DELETE!" ) { my $fil = "$VOICEDIR/$key.wav" ; if (!unlink( $fil )) { my $fe = $! ; print "<TABLE><TR><TD><H3>Deletion problem.</H3></TD></TR>\n" ; print "<TR><TD><H3>Message ".$fil."</TD><TR>\n" ; print "<TR><TD>".$fe."</TD></TR>\n" ; print "</TABLE>\n" ; } else { delete $Nam{$fil} ; delete $Siz{$key} ; delete $Dat{$key} ; } last ; } # Delete message (2nd pass, cancelled) if ( $content eq "Cancel" ) { $Color = $NoticeColor ; $File = $key ; last ; } } print "<body BGCOLOR=white><blockquote><P>" ; if ( FileList() ) { print "<TABLE BORDER=2 CELLSPACING=0 CELLPADDING=0><CAPTION>Phone Messages</CAPTION><TR><TH BGCOLOR=Yellow>Name</TH><TH BGCOLOR=Yellow>Date</TH><TH BGCOLOR=Yellow>Size</TH>