All pastes #352552 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-02-12 22:17 UTC
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;