#!/usr/bin/perl use XML::Simple; use Asterisk::AGI; use LWP::Simple; $AGI = new Asterisk::AGI; $xml = new XML::Simple; $data = $xml->XMLin(get("http://www.nws.noaa.gov/data/current_obs/KMSP.xml")); $AGI->exec('Playback','custom/current-conditions-msp'); if (($data->{temp_f}) || ($data->{temp_f} eq "0")) { $AGI->exec('Playback','wx/temperature'); if (($data->{temp_f}) eq NA) { $AGI->exec('Playback','is-curntly-unavail'); } else { $AGI->exec('SayNumber',$data->{temp_f}); $AGI->exec('Playback','degrees'); }; }; if (($data->{dewpoint_f}) || ($data->{dewpoint_f} eq "0")) { $AGI->exec('Playback','wx/dew-point'); if (($data->{dewpoint_f}) eq NA) { $AGI->exec('Playback','is-curntly-unavail'); } else { $AGI->exec('SayNumber',$data->{dewpoint_f}); $AGI->exec('Playback','degrees'); }; }; if (($data->{windchill_f}) || ($data->{windchill_f} eq "0")) { if (($data->{windchill_f}) ne NA) { $AGI->exec('Playback','wx/wind-chill'); $AGI->exec('SayNumber',$data->{windchill_f}); $AGI->exec('Playback','degrees'); }; }; if (($data->{heat_index_f}) || ($data->{heat_index_f} eq "0")) { if (($data->{heat_index_f}) ne NA) { $AGI->exec('Playback','wx/heat-index'); $AGI->exec('SayNumber',$data->{heat_index_f}); $AGI->exec('Playback','degrees'); }; }; if (($data->{relative_humidity}) || ($data->{relative_humidity} eq "0")) { $AGI->exec('Playback','wx/humidity'); if (($data->{relative_humidity}) eq NA) { $AGI->exec('Playback','is-curntly-unavail'); } else { $AGI->exec('SayNumber',$data->{relative_humidity}); $AGI->exec('Playback','wx/percent'); }; }; if (($data->{pressure_in}) || ($data->{pressure_in} eq "0")) { $AGI->exec('Playback','barometric'); $AGI->exec('Playback','pressure'); if (($data->{pressure_in}) eq NA) { $AGI->exec('Playback','is-curntly-unavail'); } else { my ($inches,$fraction) = split(/\./, $data->{pressure_in}); $AGI->exec('SayNumber',$inches); $AGI->exec('Playback','wx/point'); if ((index $fraction, "0") eq "0") { $AGI->exec('Playback','digits/0'); }; $AGI->exec('SayNumber',$fraction); $AGI->exec('Playback','wx/inches'); }; }; $AGI->exec('Playback','goodbye'); $AGI->hangup; exit;