Last week we introduced the new Worldwide Weather Station for Asterisk® 1.8 using Google's new Google Talk Guru. And, as promised, today we bring you the first of several new Asterisk applications to retrieve sports scores and schedules from the convenience of your telephone. With Google Talk Guru, you can retrieve the latest Atlanta Braves info by issuing this Chat command: score braves. What you'll receive in reply using Google Chat within Gmail would look something like this:
Atlanta Braves 2 - Milwaukee Brewers 1
Next game: @ Milwaukee Brewers, 6 Apr 3:10am
With today's installation, you'll also be able to dial M-L-B (652) from any Asterisk extension and retrieve the latest score and next game schedule for any one of 10 Major League Baseball teams by pressing a single button. For example, to retrieve the latest Atlanta Braves score and next game schedule, press 2. To try out our demo, just dial 425-406-4532 from any phone in the U.S. Here's the entire list which you can modify to meet your own requirements:
0 - Yankees
1 - Mets
2 - Braves
3 - Reds
4 - Marlins
5 - Orioles
6 - Pirates
7 - Royals
8 - Dodgers
9 - White Sox
As was true with weather forecasts, retrieval of baseball scores and schedules using Google Talk Guru takes less than a second for almost any team. And, in addition to playing these scores and schedules over the phone using Asterisk 1.8, we've added the ability to also forward the results to your favorite email address. If you're already familiar with last week's installation procedure, then drop down to the Quick Installation topic. The whole drill should take you no more than a couple minutes. If you're new to all of this, keep reading.
How It Works. Here's a quick summary of how all this works. With the Google Talk Guru, you can send a query as a text message to email@example.com. You then get a reply message in Google Talk with the answer to your query. What we've done is add this querying functionality to your Asterisk dialplan with some preassigned baseball teams to obtain the latest sports scores and schedules. Once the response arrives, we've added a PHP application that puts the text (as shown above) into something that's a little more TTS friendly for Flite and Cepstral. If you're curious about how to do all of this, take a look at the dialplan and PHP code in the links below. It's not hard, but it is tedious. One little typo and nothing works. Ask us how we know. 😉
Prerequisites. If you're new to all of this, here's a quick list of what you'll need. First, you'll need a PBX in a Flash server running the very latest Asterisk 1.8. We call it PIAF-Purple. Bidirectional Google chatting only works in the most recent releases of Asterisk 1.8 so, no, you can't wing it with an earlier release and expect a working system. Next you'll need to add Google Voice and Chat support. You can install these components yourself, or you can use Incredible PBX 1.8. The latest release as of today has this application preinstalled. If you dial 652 from an extension on your Incredible PBX and are prompted to choose a team for the latest score and schedule after hearing a list of the available teams, then your installation is complete even though it won't work until you invite yourself to chat with firstname.lastname@example.org using the same Gmail account you're using for Google Voice on your Asterisk server. If dialing 652 doesn't work, then you'll need to add this application to your existing Incredible PBX 1.8 installation by following the simple steps below in addition to enabling chats with email@example.com. Almost any other (current) Asterisk 1.8 server should work as well so long as you've installed FreePBX, PHP and the Flite or Cepstral voice synthesizer. But then you're on your own. If you're a nuts-and-bolts Asterisk guy, then you should be able to decipher what needs to be done by reading through this tutorial.
Quick Installation. Assuming you have all the prerequisites in place, today's installation is about a five minute chore. There are 3 easy steps:
(1) While signed in to Gmail with the same account credentials being used for Google Voice on your Asterisk server, activate chat temporarily and invite yourself to chat with firstname.lastname@example.org. Run a test query using the Braves example above. IMPORTANT: Once it works, disable chat on your desktop, or Google Voice and Chat will no longer work with Asterisk!
(2) Download the Baseball Scores & Schedules application into the agi-bin directory on your Asterisk system. Here are the commands after logging into your server as root:
tar zxvf nv-mlb-google.tgz
(3) While still logged in as root, switch to the /etc/asterisk directory and edit extensions_custom.conf with this command:
nano -w extensions_custom.conf
Search for 652 and delete any existing lines with that extension. Then cut-and-paste the following code inserting it just below the [from-internal-custom] context marker (but above any other context marker) or in the existing position if you deleted existing 652 lines. Use nano -w extensions_custom.conf to open the file, or word wrap will delete part of the cut-and-paste code! Once you've saved your changes, reload your Asterisk dialplan:
asterisk -rx "dialplan reload"
Customization. By default, the application is set to use Flite as the text-to-speech (TTS) engine. If you have installed Cepstral, you can change to Cepstral. In the /var/lib/asterisk/agi-bin directory, edit nv-mlb-google.php and change $ttspick = 0 to $ttspick = 1. Do not delete the trailing semicolon! If you want the sports scores and schedules also emailed to you when you dial them up, then insert your actual email address in the $email variable and set $emailscore = 1.
You need not use the 10 teams that are preconfigured in the application. You can choose your own. First, write down the names of the 10 teams you wish to use. Do NOT use city names! Make a backup of extensions_custom.conf: cp extensions_custom.conf ext_custom.bak. Then carefully edit /etc/asterisk/extensions_custom.conf using nano -w filename. Move down to the 652,3 and 652,5 lines and make the necessary changes using the teams you have chosen. Finally, move down to 652,50 and replace Yankees with your 0 choice, 612,52 Mets with your 1 choice, etc. Save your changes and reload your dialplan. NOTE: For multi-word teams such as White Sox, be sure to use an underscore between the words, NOT A SPACE, e.g. white_sox.
If you want to retrieve scores and schedules for more than 10 teams, the easiest solution is to clone all of the 652 dialplan code and renumber each occurrence of 652 to 653. HINT: Some 652 entries are actually embedded in the code as well as in the extension numbers. Be sure to renumber those entries as well. Use Ctrl-W to find each 652 occurrence in the new context, and you won't inadvertently miss one. That gets you 10 more teams. Repeat as desired. Note also that you need not announce 10 teams in the voice prompt unless you want to. If you only plan to follow 3 teams, then alter the initial voice prompt to only announce those teams. You do NOT need to delete the dialplan code that actually picks other teams. No one will ever know. 😉
Adding a Miscellaneous Destination. This step is optional. Access FreePBX with your browser, and choose Setup, Misc Destination. If it's not already there, add a new entry for MLBScores with 652 as the Dial entry. Save your entry and then click the Red Bar to reload Asterisk.
Taking Baseball Scores and Schedules for a Spin. Now we should be all set. Just pick up an extension on your system and dial 652. You'll be prompted to enter a one-digit code. Punch in 5 and check out the latest score and next game for the Baltimore Orioles. Enjoy!
Housekeeping 101. Temporary files in /tmp get cleaned up by Linux housekeeping automatically. Temporary files stored elsewhere don't unless you're using Incredible PBX. The weather scripts store .wav files with your requested weather forecasts in /var/lib/asterisk/sounds/tts. So, from time to time, make a mental note to remove all of these files with a command like this:
rm -f /var/lib/asterisk/sounds/tts/tts*
Or just log into your Asterisk® server as root and edit the following file: nano -w /etc/crontab. Move to the bottom of the file and insert the following code on a blank line:
01 0 * * * root rm -f /var/lib/asterisk/sounds/tts/tts* > /dev/null
This code will delete all of the TTS files in the tts folder every night. Now save your changes: Ctrl-X, Y, then Enter.
Best of Nerd Vittles Link. This application also will be available on our Best of Nerd Vittles site shortly. Enjoy!
Originally published: Monday, April 11, 2011
whos.amung.us If you're wondering what your fellow man is reading on Nerd Vittles these days, wonder no more. Visit our new whos.amung.us statistical web site and check out what's happening. It's a terrific resource both for us and for you.
Awesome Vitelity Special. Vitelity has generously offered a terrific discount for Nerd Vittles readers. You now can get an almost half-price DID from our special Vitelity sign-up link. If you're seeking the best flexibility in choosing an area code and phone number plus the lowest entry level pricing plus high quality calls, then Vitelity is the hands-down winner. Vitelity provides Tier A DID inbound service in over 3,000 rate centers throughout the US and Canada. When you use our special link to sign up, Nerd Vittles gets a few shekels down the road to support our open source development efforts while you get an incredible signup deal as well. The going rate for Vitelity's DID service is $7.95 a month which includes up to 4,000 incoming minutes on two simultaneous channels with terminations priced at 1.45¢ per minute. Not any more! For our users, here's a deal you can't (and shouldn't) refuse! Sign up now, and you can purchase a Tier A DID with unlimited incoming calls and four simultaneous channels for just $3.99 a month. To check availability of local numbers and tiers of service from Vitelity, click here. NOTE: You can only use the Nerd Vittles sign-up link to order your DIDs, or you won't get the special pricing! Vitelity's rate is just 1.44¢ per minute for outbound calls in the U.S. There is a $35 prepay when you sign up. This covers future usage. Any balance is refundable if you decide to discontinue service with Vitelity.
Some Recent Nerd Vittles Articles of Interest...