rendered paste body#!/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;