Wednesday, September 1, 2010

ARRL News on Allstar Node

After some review, and testing. I have updated my previous script to download the Amateur Radio Newsline when the ARRL Audio news is unavailable. I also made the script choose which announcement to play, based on which news was downloaded.

If you plan on playing MP3 files, you will need the Asterisk Addon:
Do the following:
wget -nd http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-addons-1.4.13.tar.gz
tar xvzf asterisk-addons-1.4.13.tar.gz
cd  asterisk-addons-1.4.13
./configure
make
make install
restart asterisk an you can start using mp3 format. However format_mp3 can cause Asterisk to crash on certain mp3 files (notably 8k files made with lame) due to bugs in mpglib.  If you must use this module, use it only with mp3's you know will work with it. This needs to be done every time asterisk is compiled and reinstalled.

My scripts are available to Amateur Radio Operator to use. I only ask that you make a comment here and let me know where it is deployed.

To use this script, you will need to create a "news" directory first by entering "mkdir /var/lib/asterisk/sounds/rpt/news".

You will also need to create 2 audio files for this. These are your precursor announcements, and I include the command to stop automated playback in the announcement, just in case there is emergency or priority traffic.

/var/lib/asterisk/sounds/rpt/ARRL-QST-News.ulaw
/var/lib/asterisk/sounds/rpt/ARN-QST-News.ulaw

Here is an example script that I read, and recorded into a ulaw format for the node per support instructions, (http://ohnosec.org/drupal/node/142):
------------------
QST QST QST

Please stand by for a re-transmission of last weeks ARRL Audio News.

When available, the ARRL Audio News is re-transmitted on this WA6YBN Repeater every Monday night at 7 PM Local Time. If the ARRL Audio News is unavailable, the Amateur Radio Newsline will be aired in its place.

If you have Emergency or Priority traffic during an automated playback, use *999 to cancel it.

For more information, e-mail WA6YBN@GMAIL.COM or visit us at qsl.net/wa6ybn

The Re-Transmission of the ARRL Audio News will begin momentarily.
------------------

Next, create the script file, watch out for word wrap if you copy and paste from this site. I will post the script file somewhere and post a link here for download.

Enter "vi /etc/asterisk/news", then type "i" to begin editing. Copy and paste the script below.
-------------------------------------------------------------------------------------


#!/bin/bash
#Please comment on my blog as to where this script is running. Thanks
#Script by KI6PSP, Ref KI6PSP.BLOGSPOT.COM, 73s
cd /var/lib/asterisk/sounds/rpt/news/
#Cleanup last weeks news file
rm -f /var/lib/asterisk/sounds/rpt/news/QST-News.ulaw
rm -f /var/lib/asterisk/sounds/rpt/news/news.wav
rm -f /var/lib/asterisk/sounds/rpt/news/news.mp3
rm -f /var/lib/asterisk/sounds/rpt/news/news.gsm
echo "Starting Dowload of ARRL Audio News @ $(date +%H:%M:%S)"
wget http://www.arrl.org/files/file/News/Audio%20News/AudioNews$(date --date="last thursday" +%m%d%y).mp3
if [ -f /var/lib/asterisk/sounds/rpt/news/AudioNews$(date --date="last thursday" +%m%d%y).mp3 ];
 then
 echo "Download complete @ $(date +%H:%M:%S)"
 #Extract the MP3 to RAW
 #Long Command here, may wordwrap......
 /usr/local/bin/mpg123 -s --rate 44100 --mono /var/lib/asterisk/sounds/rpt/news/AudioNews$(date --date="last thursday" +%m%d%y).mp3 > /var/lib/asterisk/sounds/rpt/news/news1.raw
 #Verify Extraction Completed
  if [ -f /var/lib/asterisk/sounds/rpt/news/news1.raw ]
  then
  echo "MP3 Expansion Complete, Starting Conversion @ $(date +%H:%M:%S)"
  #Convert RAW to WAV and reduce volume
   #Change the "-v .8" to a value acceptable for your system, .8 means 80% of original volume.
  /usr/bin/sox -r 44100 -w -s -c 1 /var/lib/asterisk/sounds/rpt/news/news1.raw -r 8000 -v .8 -c 1 /var/lib/asterisk/sounds/rpt/news/news.wav
  #Verify Conversion Completed
     if [ -f /var/lib/asterisk/sounds/rpt/news/news.wav ];
     then
     echo "Download and Conversion Completed @ $(date +%H:%M:%S)"
     else
     echo "Conversion Failed @ $(date +%H:%M:%S)"
     exit
     fi
  else
  echo "MP3 Expansion Failed @ $(date +%H%M%S)"
  exit
  fi
 #Cleanup MP3 Download and RAW File
 rm -f /var/lib/asterisk/sounds/rpt/news/AudioNews$(date --date="last thursday" +%m%d%y).mp3
 rm -f /var/lib/asterisk/sounds/rpt/news/news1.raw
 #List directory for log file
 cp /var/lib/asterisk/sounds/rpt/ARRL-QST-News.ulaw /var/lib/asterisk/sounds/rpt/news/QST-News.ulaw
 ls -l
 else
 echo "ARRL Audio News Unavailable, Downloading Amateur Radio Newsline @ $(date +%H:%M:%S)"
 rm -f /var/lib/asterisk/sounds/rpt/news/missing.png
 wget http://arnewsline.squarespace.com/storage/audio/news.mp3
   if [ -f /var/lib/asterisk/sounds/rpt/news/news.mp3 ];
   then
   echo "Download complete @ $(date +%H:%M:%S)"
   /usr/local/bin/mpg123 -s --rate 44100 --mono /var/lib/asterisk/sounds/rpt/news/news.mp3 > /var/lib/asterisk/sounds/rpt/news/news1.raw
     if [ -f /var/lib/asterisk/sounds/rpt/news/news1.raw ]
     then
     echo "MP3 Expansion Complete, Starting Conversion @ $(date +%H:%M:%S)"
     #Convert RAW to WAV and reduce volume
      #Change the "-v .8" to a value acceptable for your system, .8 means 80% of original volume.
     /usr/bin/sox -r 44100 -w -s -c 1 /var/lib/asterisk/sounds/rpt/news/news1.raw -r 8000 -v .8 -c 1 /var/lib/asterisk/sounds/rpt/news/news.wav
     #Verify Conversion Completed
       if [ -f /var/lib/asterisk/sounds/rpt/news/news.wav ];
       then
       echo "Download and Conversion Completed @ $(date +%H:%M:%S)"
       #Cleanup MP3 Download and RAW File
       rm -f /var/lib/asterisk/sounds/rpt/news/news.mp3
       rm -f /var/lib/asterisk/sounds/rpt/news/news1.raw
       #List directory for log file
       cp /var/lib/asterisk/sounds/rpt/ARN-QST-News.ulaw /var/lib/asterisk/sounds/rpt/news/QST-News.ulaw
       ls -l
       else
       echo "Conversion Failed @ $(date +%H:%M:%S)"
       exit
       fi
     else
     echo "MP3 Expansion Failed @ $(date +%H%M%S)"
     #If download failed, delete the retrieved PNG File and copy alternate file to news.wav
     cp /var/lib/asterisk/sounds/rpt/NONE-QST-News.ulaw /var/lib/asterisk/sounds/rpt/news/news.ulaw
     exit
     fi
   else
   #If download failed, delete the retrieved PNG File and copy alternate file to news.wav
   cp /var/lib/asterisk/sounds/rpt/news/memory_notfound.gsm /var/lib/asterisk/sounds/rpt/news/news.gsm
   cp /var/lib/asterisk/sounds/rpt/NONE-QST-News.ulaw /var/lib/asterisk/sounds/rpt/news/QST-News.ulaw
   fi
 exit
 fi
exit

-------------------------------------------------------------------------------------

After pasting this, you need to save it by hitting the "Esc" key, then typing ":wq". Next we need to make sure the script has permission to run, by entering "sudo chmod o+x /etc/asterisk/news"

I created this script because I needed to download the MP3, but I convert the file because I couldn't get the MP3Player to work in Asterisk. I had everything installed, but couldn't get the syntax to actually play the file. But I was already playing wav files.

*****You will need to install the Add-on for Asterisk using these commands:*****

cd /tmp/
wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-addons-1.4.13.tar.gz
tar -xf asterisk-addons-1.4.13.tar.gz
cd asterisk-addons-1.4.13
make clean
./configure
make install
service asterisk restart

Now your reasy to test, to run the script manually for testing purposes, enter "/etc/asterisk/news"

To automate this script, I used crontab. I typed "crontab -e" and pasted in the following:
0 7 * * 5 /etc/asterisk/news > /etc/asterisk/news.log
This will run my script on Friday Mornings, so the news will be ready to go for Monday nights.

To make this fully automated, we modify the rpt.conf to add something like this:

[schedule27178]
25= 0 19 * * 1     ;Announce the News Re-Transmission at 7:00 PM on Monday
26= 1 19 * * 1     ;Begin playback of the ARRL Audio news that is already downloaded

[functions27178]
925=playback,rpt/QST-News     ;Command to make Announcement
926=playback,rpt/news/news     ;Command to start playback
999=cop,24 ; Flush All Telemetry (AKA:Be Quiet)

[macro27178]
25=*925#     ;Macro for scheduler to make Announcement
26=*926#     ;Macro for scheduler to start playback

This repeater is setup to Morse its ID over the audio, so I don't have to key in the Club Call during the news.

Ed
KI6PSP
http://ki6psp.blogspot.com/

4 comments:

  1. cant get tar file from asterisk.org

    ReplyDelete
  2. Here is the updated link until I get a chance to edit this post
    http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-addons-1.4.13.tar.gz

    ReplyDelete
  3. I see this output on the console. I "think" the script is working correctly, what have I done wrong?

    /etc/asterisk/news
    Starting Dowload of ARRL Audio News @ 15:21:55
    --2013-02-13 15:21:55-- http://www.arrl.org/files/file/News/Audio%20News/AudioNews020713.mp3
    Resolving www.arrl.org... 184.106.62.248
    Connecting to www.arrl.org|184.106.62.248|:80... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: http://www.arrl.org/img/file_types/missing.png [following]
    --2013-02-13 15:21:55-- http://www.arrl.org/img/file_types/missing.png
    Connecting to www.arrl.org|184.106.62.248|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 9771 (9.5K) [image/png]
    Saving to: `missing.png'

    100%[======================================>] 9,771 --.-K/s in 0.05s

    2013-02-13 15:21:55 (197 KB/s) - `missing.png' saved [9771/9771]

    ARRL Audio News Unavailable, Downloading Amateur Radio Newsline @ 15:21:55
    --2013-02-13 15:21:55-- ftp://ftp.arnewsline.org/quincy/News/news.mp3
    => `news.mp3'
    Resolving ftp.arnewsline.org... failed: Name or service not known.
    wget: unable to resolve host address `ftp.arnewsline.org'
    cp: cannot stat `/var/lib/asterisk/sounds/rpt/news/memory_notfound.gsm': No such file or directory
    cp: cannot stat `/var/lib/asterisk/sounds/rpt/NONE-QST-News.ulaw': No such file or directory
    [root@k0jsc asterisk]# /etc/asterisk/news
    Starting Dowload of ARRL Audio News @ 15:23:06
    --2013-02-13 15:23:06-- http://www.arrl.org/files/file/News/Audio%20News/AudioNews020713.mp3
    Resolving www.arrl.org... 184.106.62.248
    Connecting to www.arrl.org|184.106.62.248|:80... connected.
    HTTP request sent, awaiting response... 302 Found
    Location: http://www.arrl.org/img/file_types/missing.png [following]
    --2013-02-13 15:23:06-- http://www.arrl.org/img/file_types/missing.png
    Connecting to www.arrl.org|184.106.62.248|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 9771 (9.5K) [image/png]
    Saving to: `missing.png'

    100%[======================================>] 9,771 --.-K/s in 0.05s

    2013-02-13 15:23:06 (198 KB/s) - `missing.png' saved [9771/9771]

    ARRL Audio News Unavailable, Downloading Amateur Radio Newsline @ 15:23:06
    --2013-02-13 15:23:06-- ftp://ftp.arnewsline.org/quincy/News/news.mp3
    => `news.mp3'
    Resolving ftp.arnewsline.org... failed: Name or service not known.
    wget: unable to resolve host address `ftp.arnewsline.org'
    cp: cannot stat `/var/lib/asterisk/sounds/rpt/news/memory_notfound.gsm': No such file or directory
    cp: cannot stat `/var/lib/asterisk/sounds/rpt/NONE-QST-News.ulaw': No such file or directory

    ReplyDelete
  4. The Amateur Radio Newsline changed servers. I have updated the script file. The change was the following:
    Old:
    wget ftp://ftp.arnewsline.org/quincy/News/news.mp3

    New:
    wget http://arnewsline.squarespace.com/storage/audio/news.mp3

    73
    KI6PSP

    ReplyDelete