Home » Technology (Page 81)

Category Archives: Technology

The Most Versatile VoIP Provider: FREE PORTING

Introducing Telephone Reminders for Asterisk 1.4 with Phone and Web Scheduling

If you loved your ‘Speak and Spell’ when you were a kid, then prepare for a childhood flashback… except the Nerd Vittles version is more akin to ‘Spell and Speak.’ Today’s edition of Telephone Reminders for Asterisk® 1.4 not only lets you schedule reminders by phone using your own voice, but now you can use a clever (if we do say so) web interface as well. Just fill out a simple web form to set your reminder or recurring reminder in motion, and Telephone Reminders for Asterisk will swing into action with Flite or Cepstral’s Allison to deliver your typed message to the phone of your choice at the appointed time. It’s the perfect tool for bugging the hell out of your friends without ever picking up the phone. Wanna wake your worst enemy in the middle of the night with a nice reading of the Gettysburg Address? No problem. Actually, there is a slight problem. It’s against the law to make irritating phone calls. But it’ll be great for calling all those politicians back to thank them for the hundreds of telephone messages they delivered while you were eating dinner. And, yes, we’ve preserved all of the recurring reminder functionality that you’ve grown to love. So you can schedule one-time reminders, weekday reminders, daily reminders, weekly reminders, monthly reminders, and annual reminders. Wowee! Our special thanks to the PBX in a Flash Pioneers that really shook the bugs out of our beta release, most of which were thanks to the Deprecation Aficionados on the Asterisk Development Team. STOP DEPRECATING COMMANDS! It has no place in the business community. </rant>

To celebrate the FreePBX Training Seminar being held in our Hometown U.S.A. this week, we’ve even added a new FreePBX Interface to Telephone Reminders for those of you that like FreePBX as much as we do.

While the entire application has been designed for 15-second installation on PBX in a Flash systems, it’ll work equally well on any Asterisk 1.4 system with an Apache web server, PHP, FreePBX, and Flite or Cepstral support. But why make things difficult when PBX in a Flash is so easy to install? And, did we mention? It is and always will be free… with no tricks, ever. Visit pbxinaflash.com to download your copy today.

How It Works. The original functionality of the application has been preserved. Dial 1-2-3 on a phone connected to your Asterisk 1.4 system and enter your password. The default is 12345678. Then you can record a reminder message, specify the phone number to which the reminder should be delivered, schedule the date and time for delivery, and decide whether to enable recurring reminders of one of the flavors outlined above. The Web Interface to Telephone Reminders lets you do exactly the same thing using a web browser. The only difference is that, instead of recording your reminder message, you type it and let Flite or Allison record it for you before the telephone reminder message is delivered. The FreePBX Interface to Telephone Reminders provides you the same web interface inside the FreePBX shell by adding a Reminders option under the Third Party Addon section of the Tools tab. As was true in version 3, both the telephone and web interfaces can be customized to meet your needs. See our detailed tutorial for customization tips. You now can also specify whether to use Flite or Allison for your web reminders. So let’s get started.

Installing Cepstral. If you want a perfect text-to-speech system for applications such as this one, then look no further than Cepstral. And we strongly recommend using the Voice of Allison that we’ve all grown up with in the Asterisk community. It’s the best $30 you’ll ever spend. Just follow our Cepstral installation tutorial, and you’ll be up and running in about 10 minutes. If you’ve already installed Cepstral on your system, then log into your server as root and make this one simple addition so that the Web Interface to Telephone Reminders can find the Cepstral application when it’s time to generate your text-to-speech phone reminder.

ln -s /opt/swift/bin/swift /usr/bin/swift

A Hint for the Early Pioneers. For the many pioneers that helped us get the bugs out of the beta release, THANK YOU! The best way to make sure you have a clean install of today’s release of Telephone Reminders with all the bells and whistles is to delete what you’re using now and start over. We will not delete any scheduled reminders, and it’ll only take a few minutes. Here’s how to clean off the old version on your system. Log into your server as root. First, edit crontab: nano -w /etc/crontab. Look for the two lines that look something like what you see below. Delete the two lines using Ctrl-K. Then save your changes: Ctrl-X, Y, then Enter.

0 0 * * * root /var/lib/asterisk/agi-bin/run_recurring > /dev/null
3 0 * * * root /var/lib/asterisk/agi-bin/run_reminders > /dev/null

Second, edit the extensions_custom config file: nano -w /etc/asterisk/extensions_custom.conf. There are two sections of code that need to be removed. The first will be found near the top of the file in the [from-internal-custom] context. Use Ctrl-W to search for 123, and you should see a clump of code that looks like the following. Use Ctrl-K to delete each of the lines.

exten => 123,1,Answer
exten => 123,2,Wait(1)
exten => 123,3,Authenticate(12345678)
exten => 123,4,Goto(reminder,s,1)

The second section of code to be deleted will be near the bottom of the file. Use Ctrl-W to search for reminder. Delete each line of code including the context headings from the following contexts. Hint: It’s a big chunk of code!

[reminder]
[reminder2]
[reminder3]
[reminder4]
[reminder5]
[reminder6]
[reminder7]
[reminder8]
[reminder9]
[reminder9a]
[remindem]

Then save your changes: Ctrl-X, Y, then Enter.

Now let’s delete another group of files, and you’re all set. Just execute the following commands to delete the original files:

cd /var/lib/asterisk/agi-bin
rm checkdate.php
rm checktime.php
rm reminder.php
rm run_recurring
rm run_reminders
rm /var/www/html/reminders/index.php

If You’re Not Using PBX in a Flash. Only read this section if you’re not installing Telephone Reminders for Asterisk 1.4 on a PBX in a Flash system. It’s still possible to use this application without running it on a PBX in a Flash system. The major difference is that it is up to you to assure that the prerequisites are met and properly functioning. For those running trixbox 2.x systems, that is next to impossible until the trixbox developers decide to support Flite… unless you use the commercial Cepstral product. The good news is that Cepstral apparently works. The other good news is that the telephone module of Telephone Reminders does not require either Flite or Cepstral; however, the Web Interface does. As long as you’re willing to live without the Web Interface (i.e. version 3 functionality), keep reading. First, download both the install script and the payload file and manually determine what needs to be placed where. Our recommendation is to build a /root/reminders directory and execute the following commands to get all of the code:

mkdir /root/reminders
cd /root/reminders
wget http://bestof.nerdvittles.com/applications/reminders4/reminders.pbx
wget http://pbxinaflash.net/scripts/reminders.tgz
tar -zxvf reminders.tgz

Unless you’re using PBX in a Flash or trixbox, carefully read the Telephone Reminders 3.0 tutorial on our Best of Nerd Vittles site. Then review the reminders.pbx script and make any necessary placement adjustments. Next, review the directory tree created below /root/reminders and be sure to copy and create the files and directory structure into the appropriate locations on your system. Make certain that you set ownership and file permissions properly for your system. The following assumptions are made in our setup. The root of the web server is located in /var/www/html, and Apache runs as user asterisk. AGI and PHP scripts for Asterisk are stored in /var/lib/asterisk/agi-bin. Logs for this application are written to /var/log/asterisk. Finally, the PHP and Asterisk configuration files are housed in /etc/asterisk. We don’t provide support for any installs other than on PBX in a Flash systems. Life’s too short!


 
Installation on PBX in a Flash Systems. We’ve saved the best for last. The entire install on a PBX in a Flash system takes about as long as it will take you to cut-and-paste the following commands. 15 seconds should do it! The script reportedly works on trixbox ce systems as well although we have not tested it. Log into your server as root and issue the following commands:
 

cd /root
wget http://bestof.nerdvittles.com/applications/reminders4/reminders.pbx
chmod +x reminders.pbx
./reminders.pbx
amportal restart
ln -s /opt/swift/bin/swift /usr/bin/swift

Test Run of Web Interface to Telephone Reminders. Assuming you have Cepstral running on your server, the web interface is ready to go since it comes configured to use Cepstral as the text-to-speech engine. We’ll show you how to change back to Flite in a minute. Using a web browser, go to the following site using the IP address of your Asterisk server: http://192.168.0.178/reminders/. Fill in the blanks including a reminder message. If you enter a date and time in the past, the phone number you enter will start ringing as soon as you hit the Schedule Reminder button. That’s a good way to be sure everything is working without having to sit and wait for a return call.

When Things Go Wrong. Immediately after scheduling a reminder, be sure to check for the pending reminder by clicking Review Existing Reminders. You should see both a .call file and a .gsm with otherwise matching file names. If the .gsm file is missing, one of two things has happened. If you haven’t installed Cepstral and you haven’t changed the default TTS engine, then solve it by doing one or the other. If Cepstral is working on your system (swift "Hello world." at command prompt), then you may be missing the sox application. To install it, log in as root and type: yum install sox.

Test Run of Telephone Reminders for Asterisk. On PBX in a Flash systems, the application will run once you complete the install as outlined above. Dial 1-2-3 from a phone on your system and enter the default password of 12345678 when prompted. Record a message and press #. When prompted for the phone number to which the reminder should be delivered, press # to choose the number you are calling from. When prompted for the date to deliver the message, press # to choose today. When prompted for the time, enter a 4-digit time with a 2-digit hour and 2-digit minute. Military time (24 hour clock) is fine. Make sure the time is at least 5 minutes in the future, and make sure the time on your watch and server match! Accept the settings, hang up, and wait for your reminder call.

Configuring Telephone Reminders for Asterisk. The phone interface to Telephone Reminders and the web interface are two separate applications so you’ll need to configure both of them. Let’s start with the phone interface. At a minimum, you’ll want to change the default password to something more secure. Edit /etc/asterisk/extensions_custom.conf using either nano or the FreePBX Config Edit option in Tools. Search for 123 and change the password in line 3 which looks like this. If you want to change the phone number to dial to enter reminders, simply replace 123 on every line with the number you wish to use.

exten => 123,3,Authenticate(12345678)

Update: A user on the PBX in a Flash Forum has pointed out that you can substitute the line below for the "Authenticate" line above, and the system will accept the existing voicemail password associated with the phone making the call:

exten => 123,3,vmauthenticate(${CALLERID(number)})

In order to take advantage of the new number conflict checking mechanism in FreePBX 2.4, we also recommend you add a Misc Destination for Telephone Reminders under the Setup tab. The entries should look something like the following:

Description Reminders
Dial 123

Once you’ve made the entry, click the Submit button and then reload the Asterisk dialplan when prompted.

The other changes you can make are accomplished by setting variables in the reminders.php application which is stored in /var/lib/asterisk/agi-bin. For a complete list of the variables and what they mean, take a look at the Telephony Configuration section in our Best of Nerd Vittles article.

Configuring the Web Interface to Telephone Reminders. The variable settings for the web interface are identical to those above. In addition, the text-to-speech engine can be set to Flite (instead of Cepstral) by changing the value of $ttspick from 1 to 0. The file to edit is index.php in /var/www/html/reminders. For more details, take a look at the Web Interface Configuration topic in our Best of Nerd Vittles article. Some may also find it desirable to secure the web interface to Telephone Reminders with a password. Here’s how.

Installing the FreePBX Interface to Telephone Reminders. After installing Telephone Reminders, a new Module will be available for installation in FreePBX by accessing Tools->Module Admin. Scroll to the bottom of the listing and click on Reminders and then the Install button. Once the installation completes, reload the Asterisk dialplan when prompted. A new FreePBX interface to Telephone Reminders then will display in the Third Party AddOn listing under the Tools tab in FreePBX.

Special Thanks. We want to extend our special thanks to Sangoma for their generous, unsolicited contribution to the PBX in a Flash project. While everything we produce is freely given for all to use, projects such as Nerd Vittles and PBX in a Flash still require money to fund research and product development. On behalf of the entire PBX in a Flash Development Team, thank you. SANGOMA ROCKS!!

Best of Nerd Vittles Tutorial. For those of you that prefer to read manuals, we also have a new Telephone Reminders 4.0 tutorial on our Best of Nerd Vittles site.

Need More Help? That’s what the PBX in a Flash Forum is for! Even if you don’t need help, stop by and let us know what’s on your Wish List! And remember, the Donate button at the top of Nerd Vittles makes wishes come true. Enjoy!


 

Special Thanks to Our Generous Sponsors


FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. Weā€™ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
 

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
 


Some Recent Nerd Vittles Articles of Interest…

Text-to-Speech Bonanza with Cepstral and Asterisk 1.4

There's almost too much to celebrate today. It's Valentine's Day, of course. You didn't forget, did you? And PBX in a Flash turns 3 months old with well over 1,000 downloads a week under our belt. Wow! Who woulda thunk? Thanks, Joe! Thanks, Tom! Get the latest scoop on our forums.

We're pleased to introduce our first hosting service provider, Aretta Communications, for those that would prefer to run PBX in a Flash in a secure, hosted environment with regular backups. Your hosted service in Atlanta will be one millisecond away from the Internet backbone. You can't do any better! And, we're excited to welcome VoipQ as our new European gateway host and contributor for PBX in a Flash. You now can access and download all of our resources through their 100 megabit connection in The Netherlands: pbxinaflash.nl. And there are two new European domains that link back to our main pbxinaflash.com site as well: pbxinaflash.eu and pbxinaflash.be. Our special thanks to Dillard and VoipQ for their support! We're also delighted to announce VoxZone as our new MidWest host for PBX in a Flash downloads. Thanks, Dinesh! And finally, we want to welcome Ad Hoc Electronics as our third West Coast host for PBX in a Flash downloads. Thanks, Jeremy! We hope you'll keep all of these open source supporters in mind when you're shopping for VoIP services and hardware.

To celebrate today's events, we thought it'd be a perfect time to introduce five newly customized Nerd Vittles applications for PBX in a Flash to take advantage of the Cepstral text-to-speech engine with Allison that we introduced last month. So today we bring you Weather by Airport Code, Weather by Zip Code, Worldwide Weather, NewsClips, and MailCall. The weather apps are self-explanatory. NewsClips reads Yahoo news feeds on any of 10 different news topics, and MailCall reads you your email by phone for one or many POP3 or IMAP email accounts. Now these new applications support both Flite and Cepstral. Once you hear Allison reading the news and your email, you'll never go back to Egor. And we're pleased to announce that we'll have a web interface to Telephone Reminders in a few short weeks. With the new Cepstral technology, you'll be able to generate single or recurring text-to-speech reminders from your web browser with delivery at the dates and times you specify... to any phone in the world. Whoa!! As a birthday bonus for Nerd Vittles readers, you can email Cepstral for a whopping, once-in-a-lifetime 15% discount code to use on your next Cepstral download and purchase.

For those using PBX in a Flash (and why wouldn't you!), all of these new applications are a 15-second install away using the downloadable scripts from the Nerd Vittles script repository. And, of course, there are dozens of additional scripts available from our PBX in a Flash Script Site which is run by Tom King.

First Install Procedure. If you've never installed an application that's on the menu today, make certain that you have first installed Cepstral. Our tutorial is here, and it only takes a few minutes. Then the process is painless with PBX in a Flash. Just log into your server as root and type the following commands... depending upon the application you wish to install. Do NOT use this procedure if you have previously installed the application on your PBX in a Flash server. We'll get to that in a minute. As mentioned, each install takes about 15 seconds. Then take a look at the instructions by clicking on the application link on the Best of Nerd Vittles site.

Weather by Airport Code. After logging into your server as root, type the following commands. Documentation is here.

cd /root
wget http://bestof.nerdvittles.com/applications/weather-airport/weather.pbx
chmod +x weather.pbx
./weather.pbx

Weather by Zip Code. After logging into your server as root, type the following commands. Documentation is here.

cd /root
wget http://bestof.nerdvittles.com/applications/weather-zip/weatherzip.pbx
chmod +x weatherzip.pbx
./weatherzip.pbx

Worldwide Weather. After logging into your server as root, type the following commands. Documentation is here.

cd /root
wget http://bestof.nerdvittles.com/applications/weather-world/weatherworld.pbx
chmod +x weatherworld.pbx
./weatherworld.pbx

NewsClips from Yahoo. After logging into your server as root, type the following commands. Documentation is here.

cd /root
wget http://bestof.nerdvittles.com/applications/newsclips/newsclips.pbx
chmod +x newsclips.pbx
./newsclips.pbx

MailCall for Asterisk®. After logging into your server as root, type the following commands. Documentation is here.

cd /root
wget http://bestof.nerdvittles.com/applications/mailcall/mailcall.pbx
chmod +x mailcall.pbx
./mailcall.pbx

Choosing Flite or Cepstral. As installed, the five applications all rely upon Flite as the default text-to-speech (TTS) engine. If you'd like to change it, here's how. There are two places in which text-to-speech is used for these applications. The first is a little code that is inserted in your dialplan in the /etc/asterisk/extensions_custom.conf file. The second is in the PHP code that does the heavy lifting for each application. You can choose Cepstral as the TTS engine in either or both places for each application. We'll walk you through modifying the Weather by Airport Code application to support Cepstral, but the process is identical for the other applications. The two things you'll need to know to make the changes, are the number to dial for the application, e.g. 611 for Weather by Airport Code, and the name of the PHP file, e.g. nv-weather.php. Here's the info for all five apps just so you don't have to do any hunting:

  • Weather by Airport Code... 611, nv-weather.php
  • Weather by Zip Code... 947, nv-weather-zip.php
  • Worldwide Weather... 612, nv-weather-world.php
  • NewsClips from Yahoo... 511*, nv-news.php (No editing of dialplan 511 code is required)
  • MailCall for Asterisk... 555, nv-mailcall.php

Changing DialPlan Code to Cepstral. Log into your server as root and edit the extensions_custom.conf file in /etc/asterisk: nano -w extensions_custom.conf. Now search for the number to dial from the table above. For example, for Weather by Airport Code, you'd press Ctrl-W, then type 611, then press Enter. You'll be positioned on code that looks like the following:1

exten => 611,1,Answer
exten => 611,2,Wait(1)
exten => 611,3,Set(TIMEOUT(digit)=7)
exten => 611,4,Set(TIMEOUT(response)=10)
exten => 611,5,Flite("At the beep enter the three character ā†©
airport code for the weather report you wish to retrieve.")
;exten => 611,5,Swift("At the beep enter the three character ā†©
airport code for the weather report you wish to retrieve.")
exten => 611,6,Read(APCODE,beep,3)
exten => 611,7,Flite("Please hold a moment while ā†©
we contact the National Weather Service for your report.")
;exten => 611,7,Swift("Please hold a moment while ā†©
we contact the National Weather Service for your report.")
exten => 611,8,AGI(nv-weather.php|${APCODE})
exten => 611,9,NoOp(Wave file: ${TMPWAVE})
exten => 611,10,Playback(${TMPWAVE})
exten => 611,11,Hangup

Notice the semicolons at the beginning of the two lines of code. Those indicate comments in the PHP world, and those lines are not executed. You'll note that both of the commented lines include the word Swift which, as you learned from the installation tutorial, activates the Cepstral TTS engine. Immediately under each of those lines is an identical line to activate Flite. So, to swap TTS engines, simply comment out the two Flite lines and uncomment the two Swift lines. When you're finished, your code should look like this:

exten => 611,1,Answer
exten => 611,2,Wait(1)
exten => 611,3,Set(TIMEOUT(digit)=7)
exten => 611,4,Set(TIMEOUT(response)=10)
;exten => 611,5,Flite("At the beep enter the three character ā†©
airport code for the weather report you wish to retrieve.")
exten => 611,5,Swift("At the beep enter the three character ā†©
airport code for the weather report you wish to retrieve.")
exten => 611,6,Read(APCODE,beep,3)
;exten => 611,7,Flite("Please hold a moment while we ā†©
contact the National Weather Service for your report.")
exten => 611,7,Swift("Please hold a moment while we ā†©
contact the National Weather Service for your report.")
exten => 611,8,AGI(nv-weather.php|${APCODE})
exten => 611,9,NoOp(Wave file: ${TMPWAVE})
exten => 611,10,Playback(${TMPWAVE})
exten => 611,11,Hangup

Don't change anything else. When your code looks like ours, save your changes by pressing Ctrl-X, then Y, then the Enter key. Reload your Asterisk dialplan to make the changes take effect:

asterisk -rx "dialplan reload"

Changing PHP Application Code to Cepstral. Log into your server as root and issue the following commands using the name of the PHP file for the application you want to change:

cd /var/lib/asterisk/agi-bin
nano -w nv-weather.php

At the top of the file, you'll notice several lines with variables that can be changed.

//-------- DON'T CHANGE ANYTHING ABOVE THIS LINE ----------------

$debug = 1;
$newlogeachdebug = 1;
$emaildebuglog = 0;
$email = "yourname@yourdomain" ;
$ttspick = 0 ;

//-------- DON'T CHANGE ANYTHING BELOW THIS LINE ----------------

To activate the Cepstral TTS engine, just change the value for $ttspick from 0 to 1. Then save your changes: Ctrl-X, Y, then Enter. Now try out your fancy new weather application using Cepstral by dialing 611 from any phone on your PBX in a Flash system.

Upgrading from Previous Installs. If you have already installed one or more of these five Nerd Vittles applications, here's a quick tutorial on how to update your code to the latest and greatest with full Cepstral support. We've already preconfigured the code below to use Cepstral. If you want to use Flite for some of the apps, make the changes following the instructions above. Log into your server as root and issue the following commands:

cd /root
mkdir cepstral
cd cepstral
wget http://nerdvittles.com/wp-content/cepstral.zip
unzip cepstral.zip

For each application that you've already installed, copy the PHP file from /root/cepstral to /var/lib/asterisk/agi-bin and then set the proper ownership of the new files:

cd /root/cepstral
cp nv-mailcall.php /var/lib/asterisk/agi-bin/nv-mailcall.php
cp nv-news.php /var/lib/asterisk/agi-bin/nv-news.php
cp nv-weather.php /var/lib/asterisk/agi-bin/nv-weather.php
cp nv-weather-zip.php /var/lib/asterisk/agi-bin/nv-weather-zip.php
cp nv-weather-world.php /var/lib/asterisk/agi-bin/nv-weather-world.php
cd /var/lib/asterisk/agi-bin
chown asterisk:asterisk nv*.php
chmod 775 nv*.php

Now we need to edit /etc/asterisk/extensions_custom.conf and clean out the old dialplan code for these applications and then replace it with the new dialplan code. First, make a duplicate of the file in case something goes wrong:

cp /etc/asterisk/extensions_custom.conf /etc/asterisk/extensions_custom.conf.bak

Then edit the file: nano -w /etc/asterisk extensions_custom.conf and search (Ctrl-W) for the beginning of each chunk of dialplan code using the phone numbers for the various applications that are shown above in the Choosing Flite or Cepstral section, e.g. 611, 947, 612, 511, and 555. Using Ctrl-K, delete each subsequent line of dialplan code that contains the phone number for that application until you've removed the entire section of code for each application. Then search for the next phone number and repeat the process. Once you've deleted all of the existing code for these five applications, cut-and-paste the following code just below [from-internal-custom] at the top of the file. NOTE: Do NOT paste in a section of the code below if you haven't previously installed that particular application!

; -- Begin New Nerd Vittles Code to Support Cepstral TTS

; Worldwide Weather Forecasts
exten => 612,1,Answer
exten => 612,2,Wait(1)
exten => 612,3,Set(TIMEOUT(digit)=7)
exten => 612,4,Set(TIMEOUT(response)=10)
;exten => 612,5,Flite("At the beep enter the code for the weather report you wish to retrieve.")
exten => 612,5,Swift("At the beep enter the code for the weather report you wish to retrieve.")
exten => 612,6,Read(APCODE,beep,1)
;exten => 612,7,Flite("Please hold a moment while we retrieve your report.")
exten => 612,7,Swift("Please hold a moment while we retrieve your report.")
exten => 612,8,AGI(nv-weather-world.php|${APCODE})
exten => 612,9,NoOp(Wave file: ${TMPWAVE})
exten => 612,10,Playback(${TMPWAVE})
exten => 612,11,Hangup

; Weather by Zip Code
exten => 947,1,Answer
exten => 947,2,Wait(1)
exten => 947,3,Set(TIMEOUT(digit)=7)
exten => 947,4,Set(TIMEOUT(response)=10)
;exten => 947,5,Flite("At the beep enter the five digit code for the weather report you wish to retrieve.")
exten => 947,5,Swift("At the beep enter the five digit code for the weather report you wish to retrieve.")
exten => 947,6,Read(ZIPCODE,beep,5)
;exten => 947,7,Flite("Please hold a moment while we contact the National Weather Service for your report.")
exten => 947,7,Swift("Please hold a moment while we contact the National Weather Service for your report.")
exten => 947,8,AGI(nv-weather-zip.php|${ZIPCODE})
exten => 947,9,NoOp(Wave file: ${TMPWAVE})
exten => 947,10,Playback(${TMPWAVE})
exten => 947,11,Hangup

; Weather by Airport Code
exten => 611,1,Answer
exten => 611,2,Wait(1)
exten => 611,3,Set(TIMEOUT(digit)=7)
exten => 611,4,Set(TIMEOUT(response)=10)
;exten => 611,5,Flite("At the beep enter the three character airport code for the weather report you wish to retrieve.")
exten => 611,5,Swift("At the beep enter the three character airport code for the weather report you wish to retrieve.")
exten => 611,6,Read(APCODE,beep,3)
;exten => 611,7,Flite("Please hold a moment while we contact the National Weather Service for your report.")
exten => 611,7,Swift("Please hold a moment while we contact the National Weather Service for your report.")
exten => 611,8,AGI(nv-weather.php|${APCODE})
exten => 611,9,NoOp(Wave file: ${TMPWAVE})
exten => 611,10,Playback(${TMPWAVE})
exten => 611,11,Hangup

; NewsClips from Yahoo
exten => 511,1,Answer
exten => 511,2,Wait(1)
exten => 511,3,Set(TIMEOUT(digit)=7)
exten => 511,4,Set(TIMEOUT(response)=10)
exten => 511,5,AGI(nv-news.php|topstories)
exten => 511,6,NoOp(Wave file: ${TMPWAVE})
exten => 511,7,Playback(${TMPWAVE})
exten => 511,8,Wait(1)
exten => 511,9,Hangup

; MailCall for Asterisk 1.4
exten => 555,1,Answer
exten => 555,2,Wait(1)
exten => 555,3,Set(TIMEOUT(digit)=7)
exten => 555,4,Set(TIMEOUT(response)=10)
;exten => 555,5,Flite("At the beep enter your e-mail password.")
exten => 555,5,Swift("At the beep enter your e-mail password.")
exten => 555,6,Read(PWCODE,beep,4)
;exten => 555,7,Flite("Please hold a moment.")
exten => 555,7,Swift("Please hold a moment.")
exten => 555,8,AGI(nv-mailcall.php|${PWCODE})
;exten => 555,9,Flite("Thank you for calling. Good bye.")
exten => 555,9,Swift("Thank you for calling. Good bye.")
exten => 555,10,Hangup

; -- End New Nerd Vittles Code to Support Cepstral TTS

Once you get all of the code pasted into extensions_custom.conf, save your changes: Ctrl-X, Y, then Enter. Then reload your dialplan and add a symbolic link to Cepstral:

asterisk -rx "dialplan reload"
ln -s /opt/swift/bin/swift /usr/bin/swift

FreePBX Patch. Something about our applications gives FreePBX fits when you attempt to do a subsequent dialplan reload. So here's the patch to fix that. While still logged in as root, issue the following commands:

cd /root
wget http://pbxinaflash.net/scripts/fixconf.zip
unzip fixconf.zip
chmod +x fixconf.sh
./fixconf.sh
chmod 1777 /tmp

Aretta Communications for Hosted PBX in a Flash Service. We've saved the best for last today. Many of you have been asking for recommendations on hosted PBX service. And today we finally have one for you. Aretta Communications is the premier provider of hosted Asterisk solutions worldwide. Based in telecom-savvy Atlanta and pioneering the business VoIP triple play, Aretta is the first provider to combine hosted Asterisk-based servers with an integrated, high voice quality SIP Trunking offering, and pre-configured VoIP handsets that arrive at your door ready to plug in and start making calls. No longer do you have to try and cobble together components from different places for your PBX in a Flash server. It's finally all available from one company that understands Asterisk and has the flexibility and in-house expertise to work with any kind of custom configuration or application. Every hosted PBX in a Flash server sits in secure telco hotels with UPS power and on-net connectivity to the major Tier 1 providers.

Using software virtualization, Aretta is able to dramatically reduce the cost of a hosted PBX in a Flash server. The hosted offerings scale in a virtual environment to up to 32 simultaneous calls per virtual server. Beyond 32 calls, dedicated dual processor PBX in a Flash servers are available that can handle 48 to 96 simultaneous calls. These can be stacked to provide high density systems. For those large hosted TDM deployments, Aretta can handle on-net termination of T1 or T3 voice circuits into dedicated PBX in a Flash servers with TDM cards. Aretta has a standard weekly backup offering for all of its hosted servers and nightly backups can also be accommodated. Backups can even be sent to geographically disperse datacenters for the ultimate in disaster recovery.

Aretta literally is changing the game in the hosted PBX market by pioneering a brand new pricing model. Forget the old per-extension pricing we've all seen where you get nickeled and dimed for every little feature you want to add to your individual lines. Finally, you pay one low monthly price for an entire system with a complete feature set and the ability to add an unlimited number of extensions. Aretta's pricing is customer-friendly, based on the number of active calls going through the system at any given time. This allows you to start small and grow as needed. PBX in a Flash hosted plans start at 2 channels and expansion is easy and automatic to four, eight, sixteen channels and beyond. Every feature within Asterisk is included in the monthly price. The only a-la-carte option is for help configuring your system. This is available as a one-time initial configuration option when you sign up for your hosted PBX in a Flash system or on a per-incident basis once it is installed.

The NetSIP trunking offering from Aretta provides SIP origination and termination in a variety of configurations. You can choose to pay by the minute or reduce your calling rates with bundled packages of minutes. Unlimited flat-rate inbound-only DIDs are available in 46 countries worldwide. DIDs in over 6300 rate centers in the United States are available in either 'Local Inbound' or 'Enhanced Local Service' configurations. Aretta has also developed a streamlined online number porting system to allow for automatic LOA generation making it easy to port numbers from other providers.

Aretta also offers pre-configured Polycom and Linksys handsets through its online store that arrive at your doorstep ready to plug-in and start calling. Priced competitively with the added bonus of coming configured, IP phone configurations are done automatically while the devices are in transit. Through its extensive customer deployments, Aretta has navigated the QoS and NAT related issues that can occur with typical IP-PBX deployments. Aretta builds and sells pre-configured edge routers based on the open source DD-WRT software to provide a low-cost premise edge device to keep local extension calls on the LAN and provide a great solution for voice QoS.

Last, but not least, in addition to hosted PBX in a Flash systems, Aretta has the flexibility and expertise to build and host custom applications using PBX in a Flash as the core underlying technology. Examples include:

  • Hosted VICIDIAL - outbound and predictive dialing based on Asterisk
  • Hosted A2Billing - the leading open source prepaid and calling card platform for Asterisk
  • High Availability Asterisk - two separate geographically disperse Asterisk servers running in a High Availability configuration with failover
  • Custom IVR development
  • IAX Trunking

If you can dream it and run it with PBX in a Flash, Aretta can build and host it for you. So what are you waiting for, visit Aretta Communications today and take advantage of their special offer for new PBX in a Flash customers.

Nerd Vittles Cepstral Showdown with Allison TTS (courtesy of les.net). You now can take today's Nerd Vittles projects for a test drive... by phone! The current demos include all five new applications preconfigured for Cepstral with the Allison TTS voice: (1) MailCall for Asterisk with password 1234 (retrieve POP3 email by phone), (2) NewsClips for Asterisk (latest news headlines in dozens of categories), (3) Weather Forecasts by U.S. Airport Code, (4) Weather Forecasts by U.S. ZIP Code, and (5) Worldwide Weather Forecasts.

Here's where it gets interesting. We decided to let you compare the voice quality of the calls using our Comcast home cable service versus Aretta Communications' Hosted PBX in a Flash service. The same code is running on both systems and both systems are using les.net for origination. The only difference is that our home system is running on a $199 WalMart Green PC. To make things interesting, we're not going to tell you which phone number goes to which location. Clue #1: Neither system is actually in the Nerd Vittles Valley Girl Headquarters in California. Clue #2: One system may or may not be in the same city as its area code. Give us a little credit. We're smart enough to assign DIDs to any PBX we happen to like... especially if it might confuse our readers. So don't just pick a favorite number because you happen to know that Aretta is in Atlanta and so is the 678 area code. We're tempted to actually swap the DIDs around once or twice just to keep everyone on their toes. And, of course, Comcast may have some additional tricks up their sleeve to make this more interesting.

So... let the voting begin. Dial away on the two numbers shown above and report your results in a comment. If you get a message that Allison isn't available or if you just get silence, simply try your call a little later. We weren't smart enough to limit inbound calls to one channel, and FreePBX doesn't seem to be able to do it either. We can't wait to read what our judges have to say. Enjoy!


 

Special Thanks to Our Generous Sponsors


FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. Weā€™ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
 

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
 


Some Recent Nerd Vittles Articles of Interest...

  1. Join the following line with the original line whenever you encounter the ā†© character. []

Introducing the Stealth AutoAttendant for Asterisk 1.4 and FreePBX

Last week we introduced the powerful, new Allison text-to-speech voice for Asterisk® using Cepstral. Now that Allison is an integral part of your free PBX in a Flash server, let's put her to good use. Today we're going to roll up our sleeves and show you how to build a typical Interactive Voice Response (IVR) system for your server. Once again we've chosen our Stealth AutoAttendant because it demonstrates the real power of the latest release of FreePBX.

Here's the way our Stealth Auto Attendant works. A call comes into your PBX, and we first decide whether it should be processed using business hour rules or nighttime settings. This works identically for home use except the times may be a little different. Once the call flow is chosen based upon the time of day, then we're going to play a generic greeting that goes something like this. For home use, it might say: "Hi. You've reached the Mundy's residence. Please hold a moment while we connect your call." For small office use, it might say: "Hi. You've reached Wonder Widgets International. Please hold a moment while we locate a sales agent to assist you." The point of these greetings is to welcome the caller without providing a clue that an IVR system is being used for the initial call processing, hence the name Stealth.

With the Stealth AutoAttendant, if the caller doesn't press any buttons on the phone, their call will be transferred to a default ring group after the greeting message completes. If the caller actually knows about the IVR, the caller can press a button while the greeting message is playing to transfer to a particular extension, listen to voicemail, get a weather or news update, check their email, or get dialtone to make a call to Europe using your company's favorite El Cheapo provider.

If no button is pressed during the greeting message, then the incoming call is passed to a ring group while music on hold plays to the caller. If no one is available to take the call, then the call is next routed to a second IVR that gives the caller the option of transferring to one or more cellphones or leaving a message on your voicemail system. Other hidden options can be embedded in this IVR as well.

In the old days, i.e. before last week, today's design was inhibited by the need to acquire customized voice messages for the various IVRs. For the design we've outlined above, you would actually have needed messages for three IVRs: the initial greeting for the Stealth AutoAttendant, the NoAnswer IVR, and the Applications IVR for access to weather, news, and email apps. If you sprung for the $24 Cepstral investment last week, then that's all a thing of the past. Now you can record your own messages and still use Allison as your voice talent. We would hasten to add that we sent Allison a note last week congratulating her on the new Cepstral voice. The note we got back went something like this: "I'm excited about the Cepstral technology. I just hope it doesn't run me out of business." Well, as fantastic as the Cepstral technology is, it's never going to quite measure up to using the real deal. But, as they say, it's close enough for government work and will certainly suffice for home or small office use, two markets that probably would not have hired professional voice talent to begin with. So let's get started.

Being Smart About Cepstral Utilization. There are a couple of things you need to know up front about using Cepstral. First, while the licenses are relatively inexpensive, they still are provided on a per connection basis. For example, if you're using Cepstral to read back a weather report, that ties up one license. If another caller is using Cepstral to play back email messages, that's another license. So, while $30 is cheap, on a 100-user PBX, the cost is a good bit more than $30. Unlike in the Flite days, where Egor could be handling multiple tasks at no cost, you need to be smarter about the way you deploy Cepstral on your server unless your PBX is basically a one-user system. For example, it doesn't make sense to use Cepstral interactively for playing back a 7-day weather forecast. That process would consume more than a full minute of a Cepstral license while Cepstral could just as easily have written the weather forecast out to a .wav file in less than one second. The same goes for IVR prompts. Don't even think about using Cepstral interactively for IVR applications. Instead, write out the IVR prompts to .wav files, and play those to callers which consumes no Cepstral licenses! Repeat after me: "Wave files free. Interactive Cepstral = $30 per simultaneous use." Design accordingly.

Building IVR Voice Prompts with Cepstral. Let's begin by building the voice prompts for our three IVRs. You obviously can customize these as we go along so that, when we're finished, you have a flawless system to deploy in your own home or office. If you didn't install Cepstral with the Allison voice last week, do that first. Here's the link. Our plan goes like this. We're going to record the voice prompts on your PBX in a Flash server, then copy them to your Windows or Mac desktop, and then we'll use FreePBX to assimilate them into your system for use with your IVRs. That's just the FreePBX way of doing things, but it's not really all that painful.

Before we begin, you need to figure out what you want your three prompts to say. For the Stealth AutoAttendant, we gave you some examples above, but you can tailor these to meet your own needs. Once you have the prompt the way you want it, step 1 is to test it. Log into your server as root, plug in some speakers, and issue the following Cepstral command:

swift "Hi. You've reached the Mundy's residence. Please hold a moment while I connect your call."

You may not be entirely happy with the way your prompt sounds. This is where your artistic creativity comes into play. First, you can adjust the spelling of certain words to try and smooth out the rough edges. You also can alter the playback using SSML commands to adjust pauses, playback speed, and many other settings. And finally you can phonetically spell problem-words to address specific issues. For example, to sound out Cepstral, here is the sample code:

Welcome to <phoneme ph="k eh1 p s t r ah0 l">Cepstral</phoneme>.

If this looks like Greek to you, not to worry. There is excellent documentation, but it still takes a bit of experimentation. Suffice it to say that every vowel has various sounds, and the 0 or 1 on the end of the vowel sound tell Cepstral whether to apply emhasis to the particular sound. Here's the list of sounds you have at your disposal. And here are the W3C SSML commands for Cepstral, all of which work under Linux.

Once you get your prompt the way you want it, our recommendation is to first save the text including the surrounding quotation marks to a text file. Then, if you want to change it later, you'll have your original text to work with. To save it to a text file, do this:

echo "Hi. You've reached the Mundy's residence. Please hold a moment while I connect your call." > welcome.txt

Then edit the file (nano -w welcome.txt) and put quotation marks at the beginning and end of the text. Also replace any embedded quotes and apostrophes with normal (i.e. not typographic) quotes and apostrophes.

To generate the .wav file from your .txt file using Cepstral, issue the following command:

swift -f welcome.txt -o welcome.wav

Now repeat the steps above to create the following prompts:

noanswer.txt: "I'm sorry. Noone is available to take your call at the moment. If you'd like to try their cellphones, press 1 for Joe or 2 for Betty. If you'd prefer to leave a message, press 3."

apps.txt: "For Mail Call, press 1. For News Clips, press 2. For weather forecasts by airport code, press 3. For weather forecasts by zip code, press 4. To schedule a telephone reminder, press 5."

FreePBX Preparations. Now that we have our voice prompts ready, copy them to your desktop. Then open FreePBX by pointing your web browser to the IP address of your PBX in a Flash system. We're going to be doing a good bit of editing even though it'll only take a few minutes. Firefox works much better with FreePBX than Internet Explorer so don't say we didn't warn you.

As with most applications, there's a certain order in doing things that makes life much simpler. So it is with FreePBX. First, be sure you have built all the pieces of the puzzle that you plan to use in your IVRs before you build your IVRs. This includes extensions, ring groups, system recordings aka voice prompts, DISA, miscellaneous destinations, etc. Second, we need to address a little Asterisk quirk. For whatever reason, Asterisk has a difficult time transferring calls to a cellphone when you get into nested IVRs. If you recall from our initial design, the plan is to provide a second IVR to catch unanswered calls after the first IVR transfers the inbound calls to a ring group. If you plan to have a cellphone transfer as one of the options in your second IVR, then here's a word to the wise. Don't use Misc Destinations to set up the numbers for your cellphones, or the calls will never be completed! What will work is to create additional extensions on your system specifically for your cellphones.

For today's exercise, we're going to assume that Joe and Betty's extensions are 201 and 202 on your PBX. So we'll also want to create extensions 301 and 302 for their cellphones. Just create SIP extensions in the usual way with no voicemail. If you want to force cellphone voicemail to kick in when a cellphone call goes unanswered, be sure to adjust the Ring Time for your cellphone extensions to 40-60 seconds when you set up these extensions. Now drop down to the Linux command prompt on your server and issue the following commands to set permanent forwarding of these extensions to Joe and Betty's cellphone numbers. Use the desired cellphone numbers in the appropriate format to match your dialplan. Be sure to test this by dialing each extension from a phone on your system to be sure the calls actually get transferred!

asterisk -rx "DATABASE PUT CF 301 6781234567"
asterisk -rx "DATABASE PUT CF 302 6787654321"

There's an alternate way to set the call forwarding which Philippe Lindheimer of FreePBX fame recommends... and he oughta know. When you create these "cellphone extensions," adjust the dial entry from SIP/301 and SIP/302 to look like the following example. Then you won't need the database manipulation step above.

dial... Local/6781234567@from-internal

Ring Groups. The other trick you need to appreciate is that FreePBX provides much enhanced call routing flexibility with ring groups. With an extension, your only option is to send unanswered calls to voicemail. With a ring group, calls can be routed to more than a dozen different destinations including IVRs, other ring groups, voicemail in 3 flavors, miscellaneous destinations, DISA, conferences, or even custom applications. So we typically recommend setting up ring groups for each individual extension on your system, e.g. 401 and 402 for Joe and Betty in our example. And, then set up an additional ring group (499) which includes every extension on your system. If you have work groups or departments, you can use the rest of the 490's for those ring group collections. For now, build these ring groups with a No Answer Destination of the VoiceMail extension matching each extension number. For home use, we recommend setting all of the extensions to the same voicemail box although this isn't required.

Importing Voice Prompts. Once you have all of your extensions, cellphone extensions, and ring groups set up, let's spend a minute importing your three new voice prompts that will be used in the IVRs: welcome.wav, noanswer.wav, and apps.wav. Because of the FreePBX design, all three of these .wav files need to be on the same desktop that you're using to access FreePBX. Then choose System Recordings from the FreePBX Setup tab. Click on the Browse button to select each .wav file. Then click the Upload button to import it into FreePBX. Name each recording and click the Save button. Let's use welcome, noanswer, and apps for the names. Reload FreePBX once you have imported all three .wav files.

Adding DISA. DISA is an extremely powerful function in Asterisk and even more so in FreePBX. Create a DISA option using the link on the Setup tab. Let's name it Standard, enter a PIN of sufficient length that you don't have to worry about compromising your PBX, set response timeout to 7 and digit timeout to 5, and leave Require Confirmation unchecked. If you're going to be placing calls from your cellphone to your PBX in order to take advantage of better outbound call rates using DISA, then you may also want to enter your cellphone number in the CallerID field. This will assure that calls placed through your PBX still have your cellphone's CallerID when they arrive at their destination.

Creating Misc Destinations. If you haven't already installed the Nerd Vittles goodies, now's the time to do it. We recommend you install at least two of the weather applications, the NewsClips application, the MailCall application, and the Telephone Reminders app. You can find all of the installation scripts here. Each install takes less than 15 seconds.

Once you've installed the five applications, create a Misc Destination with the Phone Number of each application plus a Misc Destination to retrieve your voicemail. We recommend:

MailCall... 555
Weather-Airport... 611
Weather-ZipCode...947
NewsClips... 511
Reminders... 123
VoiceMail... *98

Building the Apps IVR. We need to build the IVRs in reverse order so that the Apps IVR will be available for use in the NoAnswer and Welcome IVRs, and the NoAnswer IVR will be available for use in the Welcome IVR. So let's build the Apps IVR first. Click on the IVR link in FreePBX and then click Add IVR. Make the following entries on the form. When you run out of IVR options, click the Increase Options button to add another one. Click the Save button when you're finished and then reload FreePBX.

Name... AppsIVR
Timeout...10
Enable Directory...unchecked
Enable DirectDial...unchecked
Announcement...apps
1...Misc Destination: MailCall
2...Misc Destination: NewsClips
3...Misc Destination: Weather-Airport
4...Misc Destination: Weather-ZipCode
5...Misc Destination: Reminders

Building the NoAnswer IVR. Next we build the NoAnswer IVR. It will not only be used during the day when noone can answer a call, but it will also function as your night service. Design accordingly! Click on the IVR link in FreePBX and then click Add IVR. Make the following entries on the form. When you run out of IVR options, click the Increase Options button to add another one. Click the Save button when you're finished and then reload FreePBX. NOTE: We don't like people waking us up in the middle of the night, but if you do, you can add the 0 option shown in the Welcome IVR below.

Name... NoAnswerIVR
Timeout...10
Enable Directory...unchecked
Enable DirectDial...unchecked
Announcement...noanswer
1...Extensions: Joe Cell <301>
2...Extensions: Betty Cell <302>
3...Voicemail: <201> Joe (no message)
4...Voicemail: <202> Betty (no message)
5...Extensions: Joe <201>
6...Extensions: Betty <202>
7...Misc Destination: Voicemail
8...DISA: Standard
9...IVR: AppsIVR

Building the Stealth AutoAttendant. Finally we build the Welcome IVR. Click on the IVR link in FreePBX and then click Add IVR. Make the following entries on the form. When you run out of IVR options, click the Increase Options button to add another one. Click the Save button when you're finished and then reload FreePBX.

Name... WelcomeIVR
Timeout...10
Enable Directory...unchecked
Enable DirectDial...unchecked
Announcement...welcome
1...Extensions: Joe Cell <301>
2...Extensions: Betty Cell <302>
3...Voicemail: <201> Joe (no message)
4...Voicemail: <202> Betty (no message)
5...Extensions: Joe <201>
6...Extensions: Betty <202>
7...Misc Destination: Voicemail
8...DISA: Standard
9...IVR: AppsIVR
0...Ring Group: 499
t...Ring Group: 499
i...Ring Group: 499

Passing Through CallerID on Cellphone Transfers. If you really want to get fancy and your trunk provider supports adjusting of CallerID on outbound calls (normally accomplished by setting sendrpid=yes in your outbound trunk setup), here's an easy way to customize FreePBX to assure that calls delivered to your cellphone from your Asterisk system still retain the original caller's number rather than the CallerID number of your Asterisk system. Keep in mind that virtually no cellphone provider will let you forward the CallerID name of the original caller, but you can send their number. Log into your Asterisk server as root and edit extensions_custom.conf: nano -w /etc/asterisk/extensions_custom.conf. Then insert code at the bottom of the file that looks something like the following. Note that vitel-outbound is the name of the outbound trunk you wish to use to place the call from your Asterisk system to your cellphone. It is followed by the actual number of your cellphone in a format that matches what your carrier expects to receive. Save your changes: Ctrl-X, Y, then Enter. Now edit your IVR setup and, instead of using 301 as the Option 1 destination for Joe's cellphone, choose Custom App: custom-cellphone,301,1. Then do the same thing for Option 2, extension 302: Custom App: custom-cellphone,302,1. Then save your changes and reload the Asterisk dialplan when prompted.

[custom-cellphone]
exten => 301,1,Background(pls-hold-while-try)
exten => 301,2,Set(CALLERID(num)=${CALLERIDNUM})
exten => 301,3,Dial(SIP/vitel-outbound/6781234567,60,m)
exten => 301,4,VoiceMail(204@default)
exten => 301,5,Hangup
exten => 302,1,Background(pls-hold-while-try)
exten => 302,2,Set(CALLERID(num)=${CALLERIDNUM})
exten => 302,3,Dial(SIP/vitel-outbound/6787654321,60,m)
exten => 302,4,VoiceMail(204@default)
exten => 302,5,Hangup

Revising the IVRs to Cross-Link Back To Welcome IVR. Finally, edit the NoAnswer and Apps IVRs and add a zero option that links back to the Welcome IVR:

0...IVR: WelcomeIVR

Revising the Ring Groups to Support the IVR. Now edit the 499 Ring Group (at least) and modify the Destination on No Answer to point to the NoAnswerIVR. Save your changes and reload FreePBX. The reason we couldn't do this previously should be obvious. But, in case your head is spinning, the reason is because the IVRs didn't yet exist when we initially created the Ring Groups so we couldn't select an IVR as a destination.

Setting Up Time Conditions. While this is the entry point for incoming calls, it's also the last piece that you configure when setting up an AutoAttendant because we want to route calls to different IVRs depending upon the time of day. As with all things FreePBX, you need to have the IVRs built before you can use them to route calls with Time Conditions. Basically, what we want to do is route incoming calls to the Welcome IVR during the day and to the NoAnswer IVR at night. Click on the Time Conditions link and choose Add New Time Condition. Fill in the form as suggested below:

Time Condition Name...Daily
Time to Start...07:00
Time to Finish...21:00
Weekday Start...Monday
Weekday Finish...Sunday
Month Day Start...1
Month Day Finish...31
Destination Match...IVR: WelcomeIVR
Destination Not Match...IVR: NoAnswerIVR

Routing Incoming Calls to Time Conditions. The final step is to route your incoming calls. Simply adjust your Inbound Routes to point to Time Condition: Daily. Save your changes and reload FreePBX.

For an exhaustive look at Building IVRs with Asterisk and FreePBX, read our more recent article here.


FreePBX Training - Only 2 Seats Left! We're excited about the upcoming FreePBX Training Seminar, and today we want to remind the foot-draggers that you've almost missed the boat. This Friday is the registration deadline, and there are only two remaining seats available. And, yes, in addition to some fantastic training and the fine cuisine of Charleston, you're going to be treated to some once-in-a-lifetime hardware deals on the very finest Asterisk compatible hardware cards and servers for your business. So sign up today and join the fun. This will be the hands-down very best Asterisk and FreePBX training course that money can buy.

This is a DON'T MISS opportunity to learn everything you ever wanted to know about FreePBX, Asterisk, and Linux. The course will cover IVRs, ACDs, IRQs, E911, and the rest of the alphabet as well as routing, trunking, dialplan integration, remote office configuration, echo cancellation, TDM hardware, gateways, IP phones. It's a very full, three-day course with a half day devoted to branding and selling Asterisk systems. The seminar is being held at one of Charleston's premier hotels, the Embassy Suites Historic Charleston, with gorgeous suites, swimming pool and exercise room, free WiFi, free breakfasts, and free cocktails every evening. There also will be evening sessions to sit down one-on-one with the FreePBX and PBX in a Flash developers. So come join us while space is still available!


 

Special Thanks to Our Generous Sponsors


FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. Weā€™ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
 

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
 


Some Recent Nerd Vittles Articles of Interest...

Asterisk PBX Management Done Right

Since the PBX in a Flash project began less than three months ago, we’ve been promising to provide Managed PBX Service and Hosted PBX Service for those that wanted these options. So today we introduce PBX-Management for PBX in a Flash, and next week we’ll bring you hosted service as well. Today’s offering really is for resellers that want to provide cradle-to-grave support for their customers although it works equally well for end-users that just want a little peace of mind.

PBX in a Flash actually grew out of the Concordiax PBX offering that has been well received in the United Kingdom. It’s founder, Joe Roper, has been using Asterisk® since the Asterisk@Home 0.3 days and was a big fan of Nerd Vittles. When he heard we wanted to develop our own Asterisk distribution with no strings attached, no surprises, and no bugs, he picked up the phone. The first release of PBX in a Flash was essentially Joe’s Concordiax PBX product minus PBX-Management. It was rock-solid reliable, stable, and easily extensible. In short, it provided all the things we were looking to bring to the open source community in an Asterisk aggregation.

So what does PBX-Management do? For openers, PBX-Management affords resellers the ability to exert some control and reduce administrative overhead on remote PBX system deployments while providing support and backups that can be managed remotely and painlessly. Each PBX checks in every 30 minutes with a heartbeat reporting on the health, condition, and IP address of the host PBX. A reseller can see the status and overall health of all installed PBX in a Flash systems in a glance.

Records are kept about every PBX in a Flash system including the number of extensions, zap hardware, uptime, IP address, database passwords, name, address, location as well as billing and IT support contact details and, most importantly, time-stamped support notes of actions that have been taken with respect to each installation. All of this information is available from a single web page.

Additionally, there are a number of actions that can be performed on any PBX in a Flash system that is subscribed to "managed care." For those of you that have remotely managed PBX systems, you know the hassles that are involved in the care and feeding of these systems. Many such systems have dynamically assigned IP addresses and clueless end-users that don’t know the difference in an IP address and a zip code.

Some PBX-Management functions still are undergoing construction and testing, but here is a brief description of all of the components:

  • Lock Server ā€“ Sets the database to read only, so that your customer cannot make any changes. This was introduced for .htaccess based authentication, (maint/password) so that the customer could look at CDR, and other reports without fiddling with other settings which may break the box. With the FreePBX database authentication and ACL access on the PiaF system, this function is not as useful as it used to be.
  • Suspend Server ā€“ Disables access to the database. This is as a revenue protection measure, so that if one of your customers defaults on his payment, either for support or for the initial purchase, the system will continue to work as normal, but the customer cannot access his PBX for adds and changes, but the system continues to work in the same state that it did when the PBX was suspended. We have not built in the functionality to switch off a customer PBX, as the reseller may be open to litigation if the customer loses their ability to make and receive calls, even if this is accidental. Suspend will also switch off Backups and Mail relay where used. The server can be un-suspended at any time. Once suspended, the server can then be deleted from PBX management. This is still undergoing testing.
  • Move Server ā€“ Moves the PBX to another reseller account.
  • Backup Server ā€“ Still under construction, but you can guess what it’s going to do.
  • Clone Server ā€“ When a PBX is first installed and registered, a clone button will be available. This will allow you to clone a PBX from an existing broken system onto the replacement box, in the time that it takes for the PBX to download the backup from PBX-Management. You can only clone to a box which has zero extensions. Hence, a production system can never be overwritten with another userā€™s settings. As this is a function of the backup, it is not yet fully functional.

And what does PBX-Management cost? Well, for now, nothing. It’s a perfect opportunity for anyone to try it and see if it meets your needs. And until all of the functionality described above is working flawlessly, you won’t pay a dime. Once the system becomes production quality, the cost will be 25¢ per month per extension, a portion of which is returned to the PBX in a Flash development team to support future development. And, yes, you can quit at any time with no penalties of any kind… other than losing your managed care service.

How It Works. To install PBX-Management on your existing PBX in a Flash system, you first must sign up for the service at this link. Then you download a script and execute it. This is the same process used to add other components to your PBX in a Flash system. To install PBX-Management, your MySQL database and Asterisk manager passwords must not have been changed from the defaults. When you run the script, you will prompted for the PBX-Management username that you obtained when you registered for PBX-Management service. The following functions then are performed:

  • Registers your system with PBX-Management.
  • Downloads your logo to the main PBX in a Flash web page and to the top right hand corner of FreePBX.
  • Changes the MySQL root and freePBX passwords to a random password generated by PBX-Management. The passwords are recorded in the interface.
  • Changes the Asterisk Manager password and records it in PBX-Management. Customers don’t like the FreePBX reminders that default passwords still are being used.
  • Sets up a cron job to run a heartbeat in /etc/pbx which reports the health, status, and IP address of the system to your PBX-Management account every 30 minutes.

Installing PBX-Management. Once you have your account established, here are the commands to execute on your PBX in a Flash system. Until testing and development is completed, Joe strongly recommends that you evaluate this on non-production systems only! We would also encourage you to make a full backup of your system before you begin. PBX in a Flash includes one of the best backup solutions in the industry so there’s no excuse for not having a good backup. Once you’re finished making your backup, log into your server as root and issue the following commands:

cd /etc/pbx
wget http://www.pbxmanagement.com/PBXScripts/ConcordiaRegister.pl
wget http://www.pbxmanagement.com/PBXScripts/ConcordiaHeartbeat.pl
chmod 711 Concordia*
./ConcordiaRegister.pl

You will be prompted for your PBX-Management username. The script is successful if it ends with the following:

Error: 000000000000000000000000000000

You then can log into PBX-Management to view your PBX on line using the credentials you used when you registered. No changes will be made to your system unless you plug in your correct login. And, as previously noted, while the system is being refined and improved with new functionality, there will be no charge to register through this link. Charges will only commence once the backup functionality is completed, and Joe will notify all customers well in advance of the cutover date providing you an opportunity to leave the program if you so desire.

How to Disable PBX-Management. If you should decide to cancel out of the PBX-Management program and wish to disable the heartbeat, first write down your MySQL root password by accessing your PBX-Management account online. Then simply remove the cron job for ConcordiaHeartbeat.pl and delete ConcordiaxRegister.pl, ConcordiaHeartbeat.pl and ConcordiaID.txt from the /etc/pbx directory on your server. Enjoy!


 

Special Thanks to Our Generous Sponsors


FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. Weā€™ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
 

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
 


Some Recent Nerd Vittles Articles of Interest…

Allison’s Text-to-Speech Trifecta: Cepstral, Asterisk 1.4 or 1.6, and FreePBX 2.4

If you've longed for a text-to-speech Asterisk® toolkit that sounds just like the default Allison prompts that ship with Asterisk 1.4, then today is your lucky day. We're going to walk you through installing Cepstral with Asterisk 1.4 or 1.6 and FreePBX 2.4. The icing on the cake is a new Cepstral voice that sounds just like the twin sister of Asterisk's Allison. And guess what? Just like the two Darryl's on the Bob Newhart Show, the twin sister's name is Allison, too. What a coincidence! Well, not really. Allison is actually the first TTS voice created using Cepstral's new VoiceForgeā„¢ technology. For the complete history of the development of Allison's voice for Cepstral, you can read all about it here.

Update: For the latest news on Cepstral and app_swift, visit the PBX in a Flash Forums.

Next week, in Part 2, we'll build the Nerd Vittles' Stealth AutoAttendant in FreePBX to answer your incoming calls with a separate IVR to process calls when you're not around. For those new to Nerd Vittles, the Stealth AutoAttendant answers incoming calls with a message like this: "Hi. You've reached Total Telephony Solutions. Please hold a moment while we connect your call to the next available representative." Or, for home users, the message might go something like this: "Hi. You've reached the Mundy's residence. Someone will be right with you." While the greeting message is playing, you can press keys on your phone to transfer to an extension, activate DISA, or retrieve your voicemail messages. Because the options aren't advertised in the greeting, other callers won't know they're available. We'll protect the IVR options with passwords, of course. The NoAnswer or Unavailable IVR will also include options to leave a message, transfer to your cell phone, or drop into an applications AutoAttendant. The difference in the 2008 version of these AutoAttendants is that, this time around, you can customize all of the IVR announcements and options to meet your specific needs in less than a minute. And we'll design, develop, and deploy the entire solution using FreePBX's web interface and no custom code. All of this becomes possible thanks to FreePBX and Cepstral's Allison, who will be on your payroll once we get finished up with this project.

Prerequisites. To get this working won't cost you a dime. But, once you've played with it and like it (and we know you will), you'll need to spring for the $30 to license the Cepstral Allison voice for your Asterisk system. Our advice is simple. Try it first. Then you can buy it. You'll also need a robust Asterisk 1.4 platform with Linux, Apache, SendMail, PHP, and MySQL preconfigured to support text-to-speech applications. Not that we're biased or anything, but may we recommend you give PBX in a Flash a try. You'll find complete installation instructions and the free download here.

And, during the FreePBX Training Seminar in Charleston, we'll walk you through revising the Nerd Vittles weather, news, and email text-to-speech applications to take advantage of the tremendous power that Cepstral and Cepstral's Allision now bring to your Asterisk platform. See what you're missing by not attending the FreePBX Training Seminar. Don't worry!! We'll share all of the code with you anyway, but the seminar participants will get to play with it first.

Installing Cepstral. For today, we're going to walk you through installing Cepstral with the Cepstral Allison voice. But there are numerous other voices. You can check all of them out on the Cepstral demo site. Just be sure to select only the 8kHz voices which are specifically designed to support telephony applications. Once you find the voice you like, you can decipher the download link here. Be sure you choose the correct i386-Linux version for your system. You can't use the 32-bit version on a 64-bit CentOS system, e.g. the new 64-bit ISO of PBX in a Flash 1.2. But the same license key works for both the 32-bit and 64-bit versions of the same voice. Upgrades to the 5.0 Cepstral voices are available here.

CentOS 5.x 32-bit Install. For the 32-bit version of PBX in a Flash 1.1 or 1.2, log into your system as root and enter the following commands:1

cd /root
wget http://downloads.cepstral.com/cepstral/i386-linux/ā†©
Cepstral_Allison-8kHz_i386-linux_5.1.0.tar.gz
tar -zxvf Cepstral*
cd Cepstral_Allison-8kHz_i386-linux_5.1.0
./install.sh

CentOS 5.1 64-bit Install. For the 64-bit version of PBX in a Flash 1.2, log into your system as root and enter the following commands:

cd /root
wget http://downloads.cepstral.com/cepstral/x86-64-linux/ā†©
Cepstral_Allison-8kHz_x86-64-linux_5.1.0.tar.gz
tar -zxvf Cepstral*
cd Cepstral_Allison-8kHz_x86-64-linux_5.1.0
./install.sh

After you've read the license, type yes to install the voice on your system, not -yes- as the instructions imply. Don't ask how I know. Accept the default locations for the installation. When the installation completes, issue the following command:

echo /opt/swift/lib > /etc/ld.so.conf.d/cepstral.conf
ldconfig

Now plug some speakers into your PBX in a Flash system, and type: swift "Hello World." If you want to get fancy, try this one:

swift "Hello <break time='200ms' /> World"

You can read up on Cepstral's Speech Synthesis Markup Language (SSML) here. Before we continue, you need to write down the name of the installed voice. You'll need this to register the voice later and to get Asterisk set up properly to use Cepstral. Here's the command to retrieve the voice name(s) that you've installed:

ls /opt/swift/voices

Installing app-swift. There's another important piece in getting Cepstral to play nicely with Asterisk 1.4 or 1.6, apt-swift. In the words of the author, it does four things and does them well:

* Doesn't keep the caller waiting in silence while the app generates the entire TTS output to a temp file
* Doesn't unceremoniously kill off the swift engine when done, upsetting the Cepstral license server and eating a concurrency license
* Has configurable in-memory buffering of the swift output to balance memory usage vs Swift process concurrency
* Responds to user DTMF during the speech by setting a channel variable and optionally doing a goto of the extension entered

Asterisk 1.4 Install. To install apt-swift on your PBX in a Flash/Asterisk 1.4 system:

cd /usr/src
wget http://pbxinaflash.net/source/app_swift/app_swift-1.4.2.tar.gz
tar -zxvf app_swift*
rm *.gz
cd app_swift-1.4.2
make
make install

Asterisk 1.6 Install. If you're using the newer versions of PBX in a Flash with Asterisk 1.6, you will need Darren Session's 1.6-compatible version of app-swift:

cd /usr/src
wget http://pbxinaflash.net/source/app_swift/app_swift-1.6.2.tar.gz
tar -zxvf app_swift-1.6*
rm *.gz
cd app_swift-1.6.2
make
make install
cp swift.conf.sample /etc/asterisk/swift.conf
chown asterisk:asterisk /etc/asterisk/swift.conf

Finally, you need to add a link in your search path for Cepstral and modify /etc/asterisk/swift.conf to tell it which voice you want to use with Asterisk and then restart Asterisk. Assuming you installed Allison-8kHz, here are the commands.

ln -s /opt/swift/bin/swift /usr/bin/swift
sed -i 's|David-8kHz|Allison-8kHz|' /etc/asterisk/swift.conf
amportal restart

Testing Cepstral in Your Dialplan. To be sure that everything is installed and working with Asterisk, issue this command:

asterisk -rx "core show application swift"

You should receive the following response:

-= Info about application 'Swift' =-

[Synopsis]
Speak text through Swift text-to-speech engine.

[Description]
Swift(text) Speaks the given text through the Swift TTS engine.
Returns -1 on hangup or 0 otherwise. User can exit by pressing any key.

If everything is working swimmingly, let's modify your dialplan a bit to give Cepstral a test run. Edit /etc/asterisk/extensions_custom.conf (nano -w filename) and search (Ctrl-W) for 1234. You should then see a string of code that looks something like this:

exten => 1234,1,Playback(demo-congrats)
exten => 1234,2,Hangup()
exten => h,1,Hangup()

Let's modify it so that it looks like this:

;exten => 1234,1,Playback(demo-congrats)
exten => 1234,1,Swift(Congratulations! You have installed Cepstral.)
exten => 1234,2,NoOp(Key pressed: ${SWIFT_DTMF})
exten => 1234,3,Swift(You pressed ${SWIFT_DTMF}. Goodbye.)
exten => 1234,4,Hangup()
exten => h,1,Hangup()

Save your changes (Ctrl-X, then Y, then Enter). And restart Asterisk: amportal restart. Now dial 1-2-3-4 from an extension on your PBX in a Flash system. Presto! Welcome to the World of Cepstral on your Asterisk 1.4 PBX. Should you have problems with the install, kindly post a message on the PBX in a Flash Forum. Enjoy!

Licensing Cepstral Voices. If you've made it this far with no hiccups, it's probably time to cough up your 30 bucks and make the nag messages disappear. (HINT: Read all of the comments, and you might save some money.) Keep in mind that it's $30 per simultaneous connection using Cepstral! If you're an application designer, you probably need to keep this in mind. It doesn't tie up your Cepstral voice very long to read a sentence. But reading a 7-day weather forecast is another matter. For the latter type application, it makes more sense to conserve your voice licenses by quickly generating a .wav file with Cepstral and then releasing the Cepstral engine. The same applies with IVR applications. Using Cepstral is the same PHP syntax as flite except you substitute the swift command, e.g. system("swift -f $inputfile -o $outputfile"). You then can play back the .wav file using other tools within Asterisk. Now go to this link to pay the piper. Be sure you select U.S. English language, Allison-8kHz voice, and Linux platform before you check out, or it's money down the drain. Write down the name, company (optional), and key that is issued once you fill in the blanks. Then it's back to your PBX in a Flash system as root and enter the following command. Note: it's two hyphens before the word reg-voice.

swift --reg-voice

Fill in the blanks with the information you wrote down, and you're all set. Dial 1-2-3-4 from a phone on your system again, and the nag message should be gone.

Your Name: John Q. Public
Company (if applicable): Acme Widgets
Voice: Allison-8kHz
License Key: xx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx


Some Recent Nerd Vittles Articles of Interest...

  1. Join the following line and the original line with no intervening space when you encounter the ā†© character. []

Build a $199 Turnkey (Green!) Asterisk 1.4 System in Less Than An Hour

It takes a lot to get our attention on the Asterisk® hardware front these days, but this one’s a genuine eyepopper in our book. For $199 (actually $223.89 including shipping and tax), WalMart delivers a brand new Everex Green gPC to your door with a 1.5GHz VIA C7-D Energy Efficient Processor, 512MB of DDR2 533MHz SDRAM, an 80GB, 7200 RPM PATA drive, DVD/CD-RW drive, 10/100 Ethernet adapter, 6 USB ports, keyboard, mouse, speakers, and one year warranty. While the machine ships with Linux preinstalled, we chose to spend 33 minutes installing the latest version of PBX in a Flash which provides CentOS 5, Asterisk 1.4, FreePBX 2.3, and the usual assortment of Linux tools: Apache, SendMail, PHP 5, phpMyAdmin, MySQL 5… and No Bugs! You can order the PC on line at this link, or you may get lucky and find one sitting in your neighborhood WalMart store. Just click on the Find in Store link on the link above. Tiger Direct and zareason.com also have the same unit, and currently it’s at the same price. For other locations, check this thread on the PBX in a Flash Forum. To say Everex can’t make these machines fast enough is really an understatement. All we can suggest is check the web sites daily. They get new shipments regularly, and they sell out just as fast. If you’re unfamiliar with the Everex brand, don’t worry. They’ve been in the PC business for decades, and their machines are built with industry-standard components. And, finally, for those of you that depend upon Asterisk systems for a living, why not build up a few of these babies as spares to have on hand. It’s the cheapest insurance you can buy!

Now that PBX in a Flash has been around for 9 whole weeks, we thought it might be helpful to walk you through the typical installation scenario that we use to bring up new systems. This gets you the latest code, all the patches, and a rock-solid system to begin your Asterisk adventure. What’s the difference in PBX in a Flash and other Asterisk 1.4 aggregations? Well, we’ll let you be the judge. Compare the Help message threads here and then here, and you’ll get the idea. So let’s get started.

Getting Started with PBX in a Flash. Just like all the other offerings, you need to begin by downloading the ISO image for PBX in a Flash (646.96 MB). As new locations for ISO downloads come on line, we will add them to the download list. Just click on the location nearest to you. Once you’ve got the image in hand, use your favorite tool to burn it to a bootable CD. Remember, your hard disk will first be erased by this install.

On the new Everex machine, insert the CD containing the pbxinaflash.iso and then reboot. After reading the initial prompts and warnings, press the Enter key to begin the installation. Or, if you want to first check the media for corruption, type linux mediacheck and then press the <Enter> key. When prompted, be sure to choose the option that erases all existing partitions and uses the default partition layout. Then choose your time zone and leave the UTC system clock option unchecked. Next choose a root password for your new system. Make it secure, and write it down. We plan to use this password for virtually everything on your new system. The install process begins. This includes MySQL, Apache, PHP, CUPS, Samba, WebMin, Subversion, SendMail, Yum, Bluetooth support, SSL, Perl, Python, the kernel development package, and much more. In about 15 minutes depending upon the speed of your PC, the install will pause to allow you to eject the CD. Click the Proceed button to continue after removing the CD. You must have an Internet connection now to complete the install so plug in a 10/100 cable if you haven’t done so already. After reboot, the system will start up with CentOS 5, then download and install Asterisk and FreePBX, and search for the necessary installation script and payload file on pbxinaflash.net. Just to repeat, If you don’t have Internet connectivity, then the installation cannot complete. When the installation finishes, reboot your system and log in as root. The IP address of your PBX in a Flash system will be displayed once you log in. If it’s blank, type service network restart after assuring that you have Internet connectivity and access to a DHCP server that hands out IP addresses. Typing ifconfig should display your IP address on the eth0 port. Write it down. We’ll need it in a minute.

Now that you’ve logged in as root, you should see the IP address displayed with the following command prompt: root@pbx:~/. If instead you see bash displayed as the command prompt and it’s not green, then the installation has not completed successfully. This is probably due to network problems but also could be caused by the time being set incorrectly on your server. You can’t compile Asterisk if the time on your computer is a date in the past! For this glitch you have to start over. If it’s a network issue, fix it and then reboot and watch for the eth0 connection to complete. Assuming it doesn’t fail the second time around, the installation will continue. Likewise, if you do not have DHCP on your network, the installation will fail because the PBX will not be given an IP address. Simply type netconfig, fill in the blanks and reboot. The install will recommence.

Required Steps to Complete the Install. There are three important things to do to complete the installation. First, from the command prompt, run genzaptelconf. This sets up your ZAP hardware as well as a timing source for conferencing. If you’re using additional hardware for your Asterisk system, we recomend removing the 56K modem when you install the cards. This will help avoid interrupt conflicts. Second, decide how to handle the IP address for your PBX in a Flash server. The default is DHCP, but you don’t want the IP address of your PBX changing. Phones and phone calls need to know how to find your PBX, and if your internal IP address changes because of DHCP, that’s a problem. You have two choices. Either set your router to always hand out the same DHCP address to your PBX in a Flash server by specifying its MAC address in the reserved IP address table of your router, or run netconfig at the command prompt and assign a permanent IP address to your server. If you experience problems with the process, see this message thread on the forum. The third configuration requirement probably accounts for more beginner problems with Asterisk systems than everything else combined. Read the next section carefully and do it now!

Getting Rid of One-Way Audio. There are some settings you’ll need to add to /etc/asterisk/sip_custom.conf if you want to have reliable, two-way communications with Asterisk: nano -w /etc/asterisk/sip_custom.conf. The entries depend upon whether your Internet connection has a fixed IP address or a DHCP address issued by your provider. In the latter case, you also need to configure your router to support Dynamic DNS (DDNS) using a service such as dyndns.org. If you have a fixed IP address, then enter settings like the following using your actual public IP address and your private IP subnet:

externip=180.12.12.12
localnet=192.168.1.0/255.255.255.0      (NOTE: The first 3 octets need to match your private IP addresses!)

If you have a public address that changes and you’re using DDNS, then the settings would look something like the following:

externhost=myserver.dyndns.org
localnet=192.168.0.0/255.255.255.0      (NOTE: The first 3 octets need to match your private IP addresses!)

Once you’ve made your entries, save the file: Ctrl-X, Y, then Enter. Reload Asterisk: amportal restart. If you assigned a permanent IP address, reboot your server: shutdown -r now.

Getting Your Machine Up to Date. Tom King, one of our lead developers, has gone to great pains to make it easy for you to always have a current system. All you have to do is type a few commands, but you do have to type them. So do it now! After logging in as root, type update-scripts to get the latest PBX in a Flash scripts installed on your system. This doesn’t run them, it merely makes them available for you to run them. Once you complete this step, you can always review the latest scripting options by typing help-pbx. Now run update-fixes to apply the latest patches to your PBX in a Flash system. When it completes, you’re up to date. If you want the latest version of Asterisk, it’s easy! Just run update-source.

Activating Email Delivery of Voicemail Messages. We’ve previously shown how to configure systems to reliably deliver email messages whenever a voicemail arrives unless your ISP happens to block downstream SMTP mail servers. Here’s the link in case you need it. As it happens, you really don’t have to use a real fully-qualified domain name to get this working. So long as the entry (such as pbx.dyndns.org) is inserted in both the /etc/hosts file and /etc/asterisk/vm_general.inc with a matching servermail entry of vm@pbx.dyndns.org (as explained in the link above), your system will reliably send emails to you whenever you get a voicemail if you configure your extensions in freePBX to support this capability. You can, of course, put in real host entries if you prefer. For 90% of the systems around the world, if you just want your server to reliably e-mail you your voicemail messages, make line 3 of /etc/hosts look like this with a tab after 127.0.0.1 and spaces between the domain names:

127.0.0.1     pbx.dyndns.org pbx.local pbx localhost.localdomain localhost

And then make line 6 of /etc/asterisk/vm_general.inc look like the following:

serveremail=voicemail@pbx.dyndns.org

Now issue the following two commands to make the changes take effect:

service network restart
amportal restart

The command "setup-mail" can be used from the Linux prompt to set the fully-qualified domain name (FQDN) of the mail that is sent out from your server. This may help mail to be delivered from the PBX. One of things mail servers do to reduce spam is to do a reverse lookup on where the mail has come from, checking that there is actually a mailserver at the other end. You can only do this if you have set up dynamic DNS or if you have pointed a hostname at your fixed IP address. Once you have done this, and assuming your ISP is cooperative, then you will receive your voicemails via email if you wish (this is set within FreePBX),and your PBX will email you when FreePBX needs an update. You set this feature in FreePBX General Settings.

If your hosting provider blocks downstream SMTP servers to reduce spam, here’s a link on the PBX in a Flash forum to get you squared away.

Setting Passwords and Other Stuff. While logged into your server as root, you can configure many of the ‘lesser’ passwords on your system (i.e. those passwords with less than root privileges) as well as phones, ZAP hardware, and other goodies. The only command you have to remember is help-pbx. Be aware that there are four different usernames and passwords that are enforced in the web interface to your PBX:

maint... to go everywhere
wwwadmin... for users needing FOP and MeetMe access
meetme... for users needing only MeetMe access
FreePBX... default username:password for admin access is admin:admin

There also is an Administration password you can set in the KennonSoft UI that displays when you point a browser to the IP address of your server. Do NOT use the same password here as it is not overly secure.

Configuring WebMin. WebMin is the Swiss Army Knife of Linux. It provides TOTAL access to your system through a web interface. Search Nerd Vittles for webmin if you want more information. Be very careful if you decide to enable it on the public Internet. You do this by opening port 9001 on your router and pointing it to the private IP address of your PBX in a Flash server. Before using WebMin, you need to set up a username and password for access. From the Linux prompt while logged in as root, type the following command where admin is the username you wish to set up and foo is the password you’ve chosen for the admininstrator account. HINT: Don’t use admin and foo as your username and password for WebMin unless you want your server trashed!

/usr/libexec/webmin/changepass.pl /etc/webmin root password

To access WebMin on your private network, go to http://192.168.0.123:9001 where 192.168.0.123 is the private IP address of your PBX in a Flash server. Then type the username and password you assigned above to gain entry. To stop WebMin: /etc/webmin/stop. To start WebMin: /etc/webmin/start. For complete documentation, go here.

Updating and Configuring FreePBX. FreePBX is installed as part of the PBX in a Flash implementation. This incredible, web-based tool provides a complete menu-driven user interface to Asterisk. The entire FreePBX project is a model of how open source development projects ought to work. And having Philippe Lindheimer’s as the Captain of the Ship is just icing on the cake. All it takes to get started with FreePBX is a few minutes of configuration, and you’ll have a functioning Asterisk PBX complete with voicemail, music on hold, call forwarding, and a powerful interactive voice response (IVR) system. There is excellent documentation for FreePBX which you should read at your earliest convenience. It will answer 99% of your questions about how to use and configure FreePBX. For the one percent that is not covered in the Guide, visit the FreePBX Forums which are frequented regularly by the FreePBX developers. Kindly post FreePBX questions on their forum rather than the PBX-in-a-Flash Forum. This helps everybody. Now let’s get started.

NOTE: PBX in a Flash comes with the IPtables firewall enabled on your system. If this causes problems with access to the FreePBX repository (for loading the FreePBX updates below), you can easily (and temporarily) turn off the firewall. Type help-pbx for assistance. Don’t forget to restart the firewall especially if your system has any Internet exposure!

Now move to a PC or Mac and, using your favorite web browser, go to the IP address you deciphered above for your new server. Be aware that FreePBX has a difficult time displaying properly with IE6 and IE7 and regularly blows up with older versions of Safari. Be safe. Use Firefox. From the PBX in a Flash Main Menu in your web browser, click on the Administration link and then click the FreePBX button. The username and password both default to admin. Click Apply Configuration Changes, Continue with Reload, and then Refresh your browser screen. Now click the Module Administration option in the left frame once FreePBX loads. Now click Check for Updates online in the upper right panel. Next, click Download All which will select every module for download and install. The important step here is to move down the list and Deselect Speed Dials and PHPAGI from the download and install options. You may also want to deselect Zork. Once these apps have been deselected, scroll to the bottom of the page and click Process, then Confirm, then Return once the apps are downloaded and installed, then Apply, then Continue with Reload. Now repeat the process once more and do not deselect the two applications, then Process, Confirm, Return, Apply Config Changes, and Continue with Reload. Finally, scroll down the Modules listing until you get to the Maintenance section. Click on each of the following and choose Install: ConfigEdit, Sys Info, and phpMyAdmin. Then click Process, then Confirm, then Return once the apps are downloaded and installed, then Apply, then Continue with Reload. All three of these tools now are installed in the Maintenance section of the Tools tab of FreePBX. One final step, and you’re good to go. An update of FreePBX has been released. Click Check for Updates online. Then choose Download and Upgrade for the Core, FreePBX Framework, and System Dashboard modules. Then click Process, then Confirm, then Return once the apps are downloaded and installed, then Apply, then Continue with Reload. You now have an up-to-date version of FreePBX. You’ll need to repeat the drill every few weeks as new updates are released. This will assure that you have all of the latest and greatest software. To change your Admin password, click on the Setup tab in the left frame, then click Administrators, then Admin in the far right column, enter a new password, and click Submit Changes, Apply Configuration Changes, and Continue with reload. We’re going to be repeating this process a number of times in the next section so… when instructed to Save Your Changes, that means "click Submit Changes, Apply Configuration Changes, and Continue with reload."

Choosing Internet Telephony Hosting Providers for Your System. Before you can place calls to users outside your system or to receive incoming calls, you’ll need at least one provider (each) for your incoming phone number (DID) and incoming calls as well as a provider for your outbound calls (terminations). We have a list of some of our favorites here, and there are many, many others. Within a few weeks, we also will have some providers that will offer you some free minutes for trying their service with PBX in a Flash. You basically have two choices with most providers. You can either pay as you go or sign up for an all-you-can-eat plan. Most of the latter plans also have caps on minutes, and there are none of the latter plans for business service. In the U.S. market, the going rate for pay as you go service is about 1.5¢ per minute rounded to the tenth of a minute. The best deal on DIDs is from les.net. They charge $3.99 a month for a DID with unlimited, free incoming calls. We will have a free offer from les.net for PBX in a Flash users shortly. Another new provider with excellent service and per minute rates is Aretta Communications out of Atlanta. They also have agreed to co-host our ISO downloads for the U.S. East Coast. Thanks, Aretta! WARNING: Before you sign up for any all-you-can-eat plan, do some reading about the service providers. Some of them are real scam artists with backbilling and all sorts of unconscionable restrictions. You need to be careful. Our cardinal rule in the VoIP Wild West is never, ever entrust your entire PBX to a single hosting provider. As Forrest Gump would say, "Stuff happens!" And life’s too short to have dead telephones, even if it’s a rarity.

Setting Up FreePBX to Make Your First Call. There are four components in FreePBX that need to be configured before you can place a call or receive one from outside your PBX in a Flash system. So here’s FreePBX for Dummies in less than 50 words. You need to configure Trunks, Extensions, Outbound Routes, and Inbound Routes. Trunks are hosting provider specifications that get calls delivered to and transported from your PBX to the rest of the world. Extensions are internal numbers on your PBX that connect your PBX to telephone hardware or softphones. Inbound Routes specify what should be done with calls coming in on a Trunk. Outbound Routes specify what should be done with calls going out to a Trunk. Everything else is basically fluff.

Trunks. When you sign up with most of the better ITHP’s that support Asterisk, they will provide documentation on how to connect their service with your Asterisk system. If they have a trixbox tutorial, use that since it also used FreePBX as the web front end to Asterisk. Here’s an example from les.net. And here’s the Vitelity support page although you will need to set up an account before you can access it. We also have covered the setups for a number of providers in previous articles. Just search the Nerd Vittles site for the name of the provider you wish to use. You’ll also find many Trunk setups in the trixbox Trunk Forum. Once you find the setup for your provider, add it in FreePBX by going to Setup, Trunks, Add SIP Trunk. Our AxVoice setup (which is all entered in the Outgoing section with a label of axvoice) looks like this with a Registration String of yourusername:yourpassword@sip.axvoice.com:

allow=ulaw
authname=yourusername
canreinvite=no
context=all-incoming
defaultip=sip.axvoice.com
disallow=all
dtmfmode=inband
fromdomain=sip.axvoice.com
fromuser=yourusername
host=sip.axvoice.com
insecure=very
nat=yes
secret=yourpassword
type=friend
user=phone
username=yourusername

And our Vitelity Outbound Trunk looks like the following (labeled vitel-outbound) with no registration string:

allow=ulaw&gsm
canreinvite=no
context=from-pstn
disallow=all
fromuser=yourusername
host=outbound1.vitelity.net
secret=yourpassword
sendrpid=yes
trustrpid=yes
type=friend
username=yourusername

Extensions. Now let’s set up a couple of Extensions to get you started. A good rule of thumb for systems with less than 50 extensions is to reserve the IP addresses from 192.x.x.201 to 192.x.x.250 for your phones. Then you can create extension numbers in FreePBX to match those IP addresses. This makes it easy to identify which phone on your system goes with which IP address and makes it easy for end-users to access the phone’s GUI to add bells and whistles. To create extension 201 (don’t start with 200), click Setup, Extensions, Generic SIP Device, Submit. Then fill in the following blanks leaving the defaults in the other fields for the time being.

User Extension ... 201
Display Name ... Home
Outbound CID ... [your 10-digit phone number if you have one; otherwise, leave blank]
Emergency CID ... [your 10-digit phone number for 911 ID if you have one; otherwise, leave blank]
Device Options
secret ... 123884
dtmfmode ... rfc2833
Voicemail & Directory ... Enabled
voicemail password ... 123884
email address ... yourname@yourdomain.com [if you want voicemail messages emailed to you]
pager email address ... yourname@yourdomain.com [if you want to be paged when voicemail messages arrive]
email attachment ... yes [if you want the voicemail message included in the email message]
play CID ... yes [if you want the CallerID played when you retrieve a message]
play envelope ... yes [if you want the date/time of the message played before the message is read to you]
delete Vmail ... yes [if you want the voicemail message deleted after it's emailed to you]
vm options ... callback=from-internal [to enable automatic callbacks by pressing 3,2 after playing a voicemail message]
vm context ... default

Now create several more extensions using the template above: 202, 203, 204, and 205 would be a good start. Keep the passwords simple, but secure! You’ll need them whenever you configure your phone instruments.

Outbound Routes. The idea behind multiple outbound routes is to save money. Some providers are cheaper to some places than others. We’re going to skip that tutorial today. You can search the site for lots of information on choosing providers. Assuming you have only one or two for starters, let’s just set up a default outbound route for all your calls. Using your web browser, access FreePBX on your server and click Setup, Outbound Routes. Enter a route name of Everything. Enter the dial patterns for your outbound calls. In the U.S., you’d enter something like the following:

1NXXNXXXXXX
NXXNXXXXXX

Click on the Trunk Sequence pull-down and choose your providers in the order you’d like them to be used for outbound calls.Click Submit Changes and then save your changes. Note that a second choice in trunk sequence only gets used if the calls fails to go through using your first choice. You’ll notice there’s already a 9_outside route which we don’t need. Click on it and then choose Delete Route 9_outside. Save your changes.

Inbound Routes. We’re also going to abbreviate the inbound routes tutorial just to get you going quickly today. The idea here is that you can have multiple DIDs (phone numbers) that get routed to different extensions or ring groups or departments. For today, we recommend you first build a Ring Group with all of the extension numbers you have created. Once you’ve done that, choose Inbound Routes, leave all of the settings at their default values and move to the Set Destination section and choose your Ring Group as the destination. Now click Submit and save your changes. That will set up a default incoming route for your calls. As you add bells and whistles to your system, you can move the Default Route down the list of priorities so that it only catches calls that aren’t processed with other inbound routing rules.

General Settings. Last, but not least, we need to enter an email address for you so that you are notified when new FreePBX updates are released. Scroll to the bottom of the General Settings screen after selecting it from the left panel. Plug in your email address, click Submit, and save your changes. Done!

Tom King now has put together a detailed tutorial complete with screenshots to get you started with PBX in a Flash. If you are installation-challenged, have a look at the pretty pictures.

Adding Plain Old Phones. Before your new PBX will be of much use, you’re going to need something to make and receive calls, i.e. a telephone. For today, you’ve got several choices: a POTS phone, a softphone, or a SIP phone. Option #1 and the best home solution is to use a Plain Old Telephone or your favorite cordless phone set (with 8-10 extensions) if you purchase a little device (the size of a pack if cigs) known as a Sipura SPA-1001. It’s under $60. Be sure you specify that you want an unlocked device, meaning it doesn’t force you to use a particular service provider. Once you get it, plug the SPA-1001 into your LAN, and then plug your phone instrument into the SPA-1001. Your router will hand out a private IP address for the SPA-1001 to talk on your network. You’ll need the IP address of the SPA-1001 in order to configure it to work with Asterisk. After you connect the device to your network and a phone to the device, pick up the phone and dial ****. At the voice prompt, dial 110#. The Sipura will tell you its DHCP-assigned IP address. Write it down and then access the configuration utility by pointing your web browser to that IP address.

Once the configuration utility displays in your web browser, click Admin Login and then Advanced in the upper right corner of the web page. When the page reloads, click the Line1 tab. Scroll down the screen to the Proxy field in the Proxy and Registration section of the form. Type in the private IP address of your Asterisk system which you wrote down previously. Be sure the Register field is set to Yes and then move to the Subscriber Information section of the form. Assuming your extensions were set up starting with 201, do the following. Enter House Phone as the Display Name. Enter 201 as the User ID. Enter 1234 as the Password, and set Use Auth ID to No. Click the Submit All Changes button and wait for your Sipura to reset. In the Line 1 Status section of the Info tab, your device should show that it’s Registered. You’re done. Pick up the phone and dial 1234# to test it out.

Downloading a Free Softphone. Unless you already have an IP phone, the easiest way to get started and make sure everything is working is to install an IP softphone. You can download a softphone for Windows, Mac, or Linux from CounterPath. Or download the pulver.Communicator or the snom 360 Softphone which is a replica of perhaps the best IP phone on the planet. Here’s another great SIP/IAX softphone for all platforms that’s great, too, and it requires no installation: Zoiper 2.0 (formerly IDEfisk). All are free! Just install and then configure with the IP address of your PBX in a Flash server. For username and password, use one of the extension numbers and passwords which you set up with freePBX. Once you make a few test calls, don’t waste any more time. Buy a decent SIP telephone. We think the best value in the marketplace with excellent build quality and feature set (but probably not the best sound quality) is the $79 GrandStream GXP-2000. It has support for four lines, speaks CallerID numbers, has a lighted display, and can be configured for autoanswer with a great speakerphone. Some other great choices are the Aastra 9133i and the Siemans Cordless Dect phone. Do some reading before you buy. The Voxilla forums are a good place to start.

A Word About Ports. For the techies out there that want "the rest of the story" to properly configure firewalls, here’s a list of the ports available and used by PBX in a Flash:

TCP 80 - HTTP
TCP 9080 - Duplicate HTTP
TCP 22 - SSH
TCP 9022 - Duplicate SSH
TCP 9001 - WebMin
UDP 10000-20000 - RTP
UDP 5004-5082 - SIP
UDP 4569 - IAX2
UDP 2727 - Media Gateway

A2Billing Installation. Our first example of how we plan to build up PBX in a Flash systems is the installation script for A2Billing. If you want A2Billing installed on your system, then log in as root and type install-a2billing. If you don’t want A2Billing, then you don’t download or run the script. When you return to the main web page for your server after installing A2Billing, you will have two new links for A2Billing customers and A2Billing admin. You will have to install the callback funtionality manually from the docs supplied in the install. A2Billing was created by Areski, who some of you may know was responsible for Web MeetMe, ConfigEdit, and the CDR reports included with FreePBX. A2Billing is sufficiently comprehensive that it warrants an article on its own, so we will save that for another day. Some of the projects we will be looking into are how to pass calls from FreePBX to A2Billing for least-cost routing, departmental billing services, building a calling card server, and a VoIP termination platform. Then you can change your name to Ma Bell and start selling minutes to all the people for whom you have installed PBX-in-a-Flash. If you can’t wait, visit asterisk2billing.org.

Where To Go From Here. Our new script repository is now up and running at pbxinaflash.org. Tom King, the ultimate scripting guru is managing that site. So check it often. And now that PBX in a Flash 1.1 is out the door, we’ve been chomping at the bit to get all of our Nerd Vittles Goodies ported over. If you want to try them for yourself, seven are ready today at this link, and each installs in under 15 seconds: AsteriDex, Yahoo News Headlines, Weather by Airport Code, Weather by Zip Code, Worldwide Weather Forecasts, Telephone Reminders, and MailCall for Asterisk. Complete documentation for each application also is provided at the link above. And, if you still have a DBT-120 Bluetooth adapter, you’ll be happy to learn that it works out-of-the-box with PBX in a Flash on your new Everex Green PC. Dust off our recent article on Proximity Detection, and you should be in business in under 10 minutes.

For Those on the Bleeding Edge. Well, you heard it here first. As you may know, the new Asterisk 1.6 beta was released late last week on the heels of the FreePBX 2.4 beta which has been reworked to support it. Do you need to pull your hair out for days or wait months for a turnkey build? Well, no. You can download the new PBX in a Flash 1.6 Install Script today. Just don’t expect any tech support or assistance from the PBX in a Flash development team. Your dialogue on this project needs to be directly with the Asterisk 1.6 development team. What we are providing is a turnkey solution for those that are eager to experiment. Enjoy!


FreePBX Training Almost Sold Out! We’re excited about the upcoming FreePBX Training Seminar, and today we want to remind the foot-draggers that you’ve almost missed the boat. And, yes, in addition to some fantastic training and the fine cuisine of Charleston, you’re going to be treated to some once-in-a-lifetime hardware deals on the very finest Asterisk-compatible hardware cards and servers for your business. So sign up today and join the fun. This will be the hands-down very best Asterisk and FreePBX training course that money can buy.

This is a DON’T MISS opportunity to learn everything you ever wanted to know about FreePBX, Asterisk, and Linux. The course will cover IVRs, ACDs, IRQs, E911, and the rest of the alphabet as well as routing, trunking, dialplan integration, remote office configuration, echo cancellation, TDM hardware, gateways, IP phones. It’s a very full, three-day course with a half day devoted to branding and selling Asterisk systems. The seminar is being held at one of Charleston’s premier hotels, the Embassy Suites Historic Charleston, with gorgeous suites, swimming pool and exercise room, free WiFi, free breakfasts, and free cocktails every evening. There also will be evening sessions to sit down one-on-one with the FreePBX and PBX in a Flash developers with ample assistance from the quintessential Asterisk development tools: beer and whiskey!


Some Recent Nerd Vittles Articles of Interest…

100 Great Halftime Projects For You & Your Asterisk IP PBX

Our Hero Over the past twelve months, we’ve covered lots of territory in building an Asterisk® PBX for home or small office use. While most of our projects have relied upon Asterisk@Home or TrixBox, many are easily accomplished using any Asterisk system running the Asterisk Management Portal (AMP) or freePBX. Today we offer our latest catalog of what’s available on the Nerd Vittles site and some great links to other Asterisk resources on the web. We’ll keep the list updated as we add new articles down the road so bookmark this new spot and check back from time to time. You can also follow our progress with a news reader. Both RSS2 and Atom feeds are available for Nerd Vittles. You’ll also find our feeds on Planet Asterisk and Planet Gadget. We try to bite off projects which can be accomplished in about 30 minutes. Your mileage may vary depending upon how many bells and whistles you choose to add to the basic project. If you have a pet project we haven’t covered, drop us a line or post a comment. Yes, we actually read ’em. Some articles include more than one project. Installing a basic TrixBox system can be completed in less than an hour. Taking into consideration that such an installation includes the full Linux operating system and complete Asterisk application plus the Apache web server, the SendMail and Asterisk mail servers, the PHP and phpMyAdmin applications, the MySQL data base management system, the SugarCRM contact management system, and the Asterisk Management Portal or freePBX, the feat is nothing short of amazing! And, if Linux isn’t your strong suit, not to worry! Check out the VMware edition of Asterisk@Home which self-installs as a Windows application on your Windows XP desktop in about 30 minutes.

With the exception of choosing a VoIP provider and telephones, all of these projects have at least one thing in common. None of them will cost you a dime. We do encourage you to support the development efforts of those that have made all of this possible by contributing even a dollar or two to the cause to help defray the costs of hardware to test all of this stuff, but that of course is left completely up to you.

Nerd Vittles User Map. Take a minute while you’re here and add yourself to our Frappr World Map compliments of Google. In making your entry, you can choose an icon: guy, gal, nerd, or geek. For those that don’t know the difference in the first two, you’re on your own. As for the last two, here’s the best definition we’ve found: "a nerd is very similar to a geek, but with more RAM and a faster modem." Our map will be a month old tomorrow and now is fairly representative of where our visitors are coming from… all 5,000 to 10,000 of you every day! If you have a favorite BBQ joint on the planet, add it to the map, too. We try to personally evaluate all BBQ recommendations! Thanks for visiting. — Ward Mundy



  • Installing a Free PBX in a Flash Server
  • Introducing PBX in a Flash: The Lean, Mean Asterisk Machine (Available Now!)

    Some Asterisk Stocking Stuffers from Santa

    Introducing Phone Genie 2.0 for Asterisk

    Introducing U-Rang II: Windows Desktop Screenpop Utility for Asterisk

    Click2Dial for Every (Asterisk)Man and Woman

    Great PBX in a Flash Setup Guide With Big Pictures

  • Installing the Free Asterisk@Home PBX
  • Introducing Asterisk@Home 2.8 and freePBX

    Asterisk@Home 2.7 Soup to Nuts Installation and Update Guide

    Installing the VMware-edition of Asterisk@Home 2.5 on a Windows PC

    The Big Picture: Chapter I, II, III, IV, and V

    Basic IP Configuration for Asterisk

    Using AMP to Configure Asterisk@Home

    Configuring Outbound Trunks for Asterisk@Home (or choose your VoIP provider below)

    Creating Asterisk@Home Extensions

    Configuring Asterisk@Home for Outgoing Calls

    Mastering Outbound Call Routing and Dial Plans with Asterisk@Home

    Configuring Asterisk@Home for Incoming Calls

    Configuring Ring Groups to Simultaneously Ring Multiple Phones

    Using Asterisk Call Queues to Manage Incoming Calls

    Email Forwarding of Voice Mail

    Setting Default Call Time

    Troubleshooting Asterisk@Home Systems

    Making System Backups with Asterisk@Home

    Backups and Redundancy with Asterisk

    Deploying Voice Over Wi-Fi with Asterisk

    Adding HTTPS Support (Secure HTTP) to Asterisk@Home

  • Customizing Asterisk@Home
  • Adding Music on Hold

    Using Streaming Audio for Music on Hold

    Adding a Custom Calling Directory

    Adding Extensions to Call Friends by Name

    Creating Voice Mail Addresses for the Internet

    Managing Incoming Calls with a Custom Dial Plan

    Advanced Dial Plan Tips and Tricks

    Adding Automatic Callbacks to the Asterisk Voice Mail System

    Adding Customized Recordings to Your Asterisk@Home System

    Turning On the Feature Codes With Asterisk@Home

    Setting Up An Automatic Call Distribution (ACD) System with Asterisk

    Introduction to AutoAttendants and Interactive Voice Response (IVR) Systems

    Introducing the CallerID Trifecta for TrixBox 1.2.3 and freePBX 2.2.0

    Handling Callers Without CallerID and Other ‘Special’ Callers

    Managing Outbound Caller ID with Asterisk

    Implementing Prefix Dialing in Asterisk@Home Dialplans

    Getting Remote Dialtone with Asterisk@Home — 3 Great Solutions!

    Integrating Mobile Phones and Cellphones Into Your Asterisk Dialplan

    How To Make Unlimited Cellphone Calls for $5 Using Your Asterisk Dialplan

    Upgrading the Asterisk Management Portal to freePBX with Asterisk@Home

  • Asterisk Server Hardware
  • Platform Recommendations and Costs

    The Perfect Asterisk Server: Ice Cube HU 61 (about $500) … But Any Old Clunker Will Do!

    The CompUSA Special (under $400)

    The MicroCenter Special ($249)

    The Outpost.com Special (under $300)

    The Wal-Mart Special ($219.84 or cheaper … see inset above)

  • Additional Asterisk Hardware and Software
  • Configuring the Sipura SPA-3000 for Asterisk

    Telephone Instruments

    Wireless Phone Sets

    Best Remote Phone Solution for Asterisk: The IAXy Version 2

    Configuring the Xlite Softphone for Asterisk@Home

  • VoIP Provider Reviews and Configuration Tips for Asterisk@Home
  • Configuring AxVoice for Asterisk@Home

    Configuring BroadVoice for Asterisk@Home

    Configuring DialPad for Asterisk@Home

    Configuring FreeDigits for Asterisk@Home

    Configuring FWD for Free Outbound Toll-Free Calls with Asterisk@Home

    Configuring GoIAX for Free Outbound Toll-Free Calls with Asterisk@Home

    Configuring IPkall for Free Incoming Calls with Asterisk@Home

    Configuring StanaPhone for Free Incoming Calls with Asterisk@Home

    Configuring TelaSIP for Asterisk@Home

    Configuring VoipDiscount.com for Asterisk@Home

    Configuring Voxee for Asterisk@Home

    Other VoIP Providers for Asterisk@Home

  • Securing Asterisk
  • Basic Asterisk Security

    Securing Your Asterisk@Home System … a Must Read!

  • Additional Asterisk Applications
  • AMP’s Digital Receptionist

    AsteriDex II: Free Web-Based RoboDialer for Asterisk

    AsteriDex III: Free Web-Based RoboDialer for TrixBox

    U-Rang II: Windows Desktop Screenpop Utility for Asterisk

    The Stealth AutoAttendant

    Blacklisting: Keeping Telemarketers At Bay

    Get Your Email By Telephone: Introducing MailCall for Asterisk

    Get Your News By Telephone: Introducing NewsClips for Asterisk

    Introducing the CallerID Trifecta for TrixBox 1.2.3 and freePBX 2.2.0

    3 Perl Ditties to Automatically Restore Names to Inbound Caller ID

    Managing Outbound Caller ID with Asterisk

    One Ringy-Dingy (No Cost Dialup DISA-on-Demand)

    Phone Home (Web-Activated DISA)

    Email Forwarding of Voice Mail

    Faxing with Asterisk

    Flite Voice Synthesis System

    The Idolizer: Speed Dialer for American IdolĀ® Addicts

    Scheduling Wakeup Calls

    Customized Weather Reports

    Weather Forecasts Using Airport Codes, Part I

    Weather Forecasts Using Airport Codes, Part II

    TeleYapper: Asterisk Message Broadcasting System for AAH 1.5 and AAH 2.2

    TeleYapper 3.0: Asterisk Message Broadcasting System for AAH 2.5 and later (we hope)

    Follow-Me Phoning: Bluetooth Proximity Detection with Asterisk, Part I

    Follow-Me Phoning: Bluetooth Proximity Detection with Asterisk, Part II

    Follow-Me Phoning: Bluetooth Proximity Detection with Asterisk, Part III

    Follow-Me Cruising: Bluetooth Proximity Detection with a TomTom GPS

    Follow-Me Phoning: Bluetooth Proximity Detection with an iPhone

    Follow-Me Phoning: Implementing Bluetooth Proximity Detection on a Single Asterisk Server

    Telephone Reminder System for Asterisk

    Telephone Reminder System 3.0 for AAH 2.5 and later

  • Where To Turn When You Need Some HELP!
  • TrixBox Forums

    Whirlpool Forums

    Voxilla Forums

    Asterisk@Home Forums

    Digium®’s Asterisk Forums

    Asterisk@Home Handbook Wiki

    Asterisk Listserv Archives

    Asterisk IRC Logs

    Asterisk Guru Tutorials

    Asterisk VoIP News

    VoIP Now: Voice Over IP News

    VOIPSpeak Forums

    VoIPuser Forums

    DSL/BroadBand Reports

    Jeff Pulver Blog

    GigaOM

    O’Reilly Emerging Telephony

    Binary Revolution (just for phun)


    Free Samples. Everybody loves free samples. Not sure about a VoIP provider? Well, here’s your chance to take TelaSIP for a free test drive. Just call our Charleston number (shown in the inset) and wait for the fast busy to hang up. There’s no charge for the call because you’re never "connected." Within 15 seconds you’ll get a return call allowing you to make a FREE 10-minute phone call to almost anywhere in the U.S. All you have to do is key in the password you’re provided when you answer the return call. Keep in mind a few things. You have to call from a phone with CallerID so that the system knows where to call you back. Both legs of the call (to you and to the person you call) use GSM compression so you’re seeing TelaSIP at its most efficient but not necessarily with the best voice quality. You can set it differently on your own system if you like.


    Nerd Vittles Demo Hot Line. You now can take a number of Nerd Vittles projects for a test drive… by phone! The current demos include NewsClips for Asterisk (latest news headlines in dozens of categories), MailCall for Asterisk with password 1111 (retrieve your email by phone), and Nerd Vittles Weather Forecasts by U.S. Airport Code. Just call our Stanaphone number (shown in the left margin) and take any or all of them for a spin. The sound quality may not be perfect due to performance limitations of our ancient Intel 386 demo machine. But the price is right.

    Hosting Provider Special. Just an FYI that the Nerd Vittles hosting provider, BlueHost, has raised the bar again on hosting services. For $6.95 a month, you can host up to 6 domains with 30GB of disk storage and 750GB of monthly bandwidth. Free domain registration is included for as long as you have an account. That almost doubles last month’s deal, and it really doesn’t get any better than that. Their hosting services are flawless! We oughta know. We’ve tried the best of them. If you haven’t tried a web hosting provider, there’s never been a better time. Just use our link. You get a terrific hosting service, and we get a little lunch money.

    Headline News for the Busy Executive (you) and the Lazy Loafers (us). Get your Headline News the easy way: Planet Asterisk, Planet Gadget, Planet Mac, and Planet Daily. Quick read, no fluff.

    Got a PDA or Web-Enabled Smartphone? Check out our new PDAweather.org site and get the latest weather updates and forecasts from the National Weather Service perfectly formatted for quick download and display on your favorite web-enabled PDA, cellphone, or Internet Tablet. And, of course, it’s all FREE!

    Who Is This Guy? Ward Mundy, the author of this Asterisk article series, is a retired attorney who spent more than 30 years providing legal and technology assistance to the federal courts in the United States.


    Some Recent Nerd Vittles Articles of Interest…

    Some Asterisk Resolutions for the New Year

    We made some New Year’s Resolutions for 2008… just as we do every year. There are the usual ones: lose weight, exercise, more quality time with the family. But you make all of those, too. This year, there are some changes in the Asterisk® landscape we’d like to see: more community participation, better training opportunities, an end to deprecating commands, and a push into major corporate and government organizations.

    The Asterisk Business Model. As we count down the days to the Nerd Vittles third year birthday bash, we’ve got to say that we’ve learned a lot these past few years. The amazing part of Asterisk is really that it has survived at all. Until recently, Digium® derived almost all of its revenue off hardware sales. Fonality makes its money off hosted Asterisk solutions. Hardware vendors seem to be doing just fine as are small systems integrators. But the folks that provide the software products that make Asterisk fly are basically starving to death. The open source model has been used as a convenient way for a handful of companies to essentially profit off someone else’s work, and I’m not talking about Digium that has done much more than its fair share to contribute open source software in exchange for hardware dollars that it has earned. And this isn’t a plea for money. I retired from a cushy government job with a cushy retirement plan so starvation isn’t all that likely in my case. But, to give you an example, our recent fund-raising campaign to raise money for a dedicated server to host our forums raised a whopping $80. To those that contributed, thank you! But we have a weekly readership of roughly 50,000 people, most of whom presumably depend upon Asterisk systems every day. We’re as cheap as the next guy, but come on folks. Would $10 really change your life style that much? And we’ve heard much the same story from the FreePBX developers. So… Resolution #1 for each of you should go something like this. Find a way that you can give something back to the Asterisk community in 2008. It doesn’t have to be money! Develop an application, develop some documentation, come up with some new ideas and share them with the rest of us. But do something for somebody else without expecting something (else) for free.

    The Open Source Alternative. Absent some radical shift in contributions and participation which most of us don’t expect to see, our prediction for 2008 is that the days of the open source gravy train are numbered, at least for turnkey telephony systems. Keep in mind that these are systems that most organizations used to pay hundreds of thousands of dollars to purchase and maintain. The alternative that appears to be gaining steam is to gobble up all the free software you can find and then embellish it with proprietary bells and whistles that are not made available without a charge for either the embellished product or a support contract of some type. This is a real dilemma for developers like the FreePBX and PBX in a Flash teams. As we provide more and more functionality as open source software, the "takers" gobble up the goodies, make another sale, and return almost nothing. What’s wrong with this picture? Everything!

    Our Resolution #1 is to push for a review of the licensing model. We have no objection to individuals downloading and using all of our code for free forever! However, for those that profit off reselling someone else’s work product, there needs to be some type of contribution into the open source projects that comprise the bundle which is being sold by non-contributors for a handsome profit. And, no, we’re not talking about system integrators who merely charge for their time. For the most part, we’re talking about corporations that sell rebranded, open source solutions for profit. Perhaps a 5-extension license could be offered at no cost with additional extensions being sold for some fee. Another approach might be to license endpoint and/or trunk connections with vendors paying some connection fee to help defray software development costs. Nortel and others used this model for decades. These approaches, of course, also raise questions about how to divide the income between all of the open source contributors. Not sure we know the answers yet, but we’d be interested in getting your feedback and suggestions. It’s in everyone’s best interests to keep the entire Asterisk development community moving forward… and eating.

    Vertical Market Penetration. Still another solution, which we happen to favor, is to license add-in code for turnkey Asterisk systems which meets the needs of specific vertical markets. For example, the hotel/motel industry could benefit immeasurably from a move to VoIP telephony. The Marriott’s, Hyatt’s, and Hilton’s of the world already have learned this. But that leaves tens of thousands of smaller hotels and motels that still are using primitive telephony systems. All it would take to make a system like PBX in a Flash a player in this market would be wakeup calls (which Nerd Vittles will provide with Telephone Reminders for Asterisk 1.4 shortly) and a method of recording from room telephones when rooms are vacant, being cleaned, ready for occupancy, or occupied. Asterisk voicemail options already run circles around the features available in most hotels. All that is missing is a way to clear voicemails when someone checks out of the hotel. And A2Billing provides hotels with an instant profit center for outbound calls worldwide. Our purpose today wasn’t to design and build a vertical market solution, but you get the idea. This wouldn’t be rocket science.

    Another market which is ripe for Asterisk penetration is the medical community. Ever wondered why a full-time employee in every doctor’s and dentist’s office has to call and remind every patient of their next appointment. TeleYapper and a carefully tailored IVR would provide physicians with a far better telephony solution at considerably less cost. Tying the system into an appointments database would be icing on the cake and easy to implement since MySQL already is running on systems such as PBX in a Flash. Then there are retail stores, restaurants, department stores, WalMart’s, marinas, time shares, rental apartments, call centers, and on, and on. None of these organizations have complex telephony needs that couldn’t be met by a system like PBX in a Flash out of the box. And, with modest customization, any data processing needs could probably be met using the same system. Last but not least is the government: federal, state, and local. Do you have any idea how many separate, crappy phone systems already are in place in government offices? Many of them were installed at a cost of several thousand dollars per user. Counted up the number of government employees lately? So here’s an approach. Find a typical government organization and build them a phone system for free, except for hardware. Then get the mayor or the governor to sing its praises at the dozens of meetings these people attend every year. The sad part of this story is that we have the technical talent in the Asterisk community to produce an extremely compelling product. What’s missing is management vision coupled with a well-trained sales force to get the message across to corporations and government organizations.

    Fixing the Asterisk Deal Breaker. Believe it or not, there is a serious shortcoming with Asterisk, and it has nothing to do with the feature set. It lies in the development mentality that there’s something okay about breaking application code by inventing new commands in the Asterisk Extension Language (AEL2) and deprecating (a.k.a. trashing) old ones every year or two. And now Manager 1.1 has been released in the Asterisk SVN trunk. Yikes! We’re scared to look. After the Microsoft fiasco with Visual Basic and VB .NET, one would have hoped we wouldn’t need to have this discussion.

    Suppose for a moment that a handful of key commands in the C programming language were changed. The Asterisk developers would be at the front of the line screaming foul when they had to review and rewrite all of their code. Hello!! It’s the same deal when the shoe is on the other foot. This shortcoming simply has to be addressed or vertical market penetration is never going to happen. Organizations buy phone systems expecting them to work reliably for a decade or more. They also invest heavily in building customized application code to support their particular vertical market. DialPlan Functions in AEL2 dealing with timeouts, CallerID, and Asterisk Database Calls all fail if you use the Asterisk 1.2 syntax. These command language changes between Asterisk 1.2 and Asterisk 1.4 broke virtually every application ever produced for Asterisk. Furthermore, the time between versions 1.2 and 1.4 was barely a year. If you want to waste a day, try finding even a list which cross-references old Asterisk 1.2 dialplan commands to their new Asterisk 1.4 counterparts. About the best you can find is a summary of the new commands under section 6.1 here and the mishmash of old and new commands which are summarized at voip-info.org. Neither of these sites has any affiliation with asterisk.org where one would have hoped to find some information. If we’ve missed something, no doubt some fanboy will set us all straight. But, just to be clear, we’re looking for a specific link rather than an RTFM suggestion.

    To put it in dollars and cents, organizations simply cannot afford to redesign and rewrite all of their application code every couple of years when someone dreams up new verbs or new ways to use parentheses, brackets, and braces. The fact that Asterisk may be free is pretty much irrelevant once the cost of rewriting all your application code is factored in. So… our plea to the core Asterisk developers is STOP DEPRECATING COMMAND SYNTAX, or you’re going to kill vertical market penetration of the product. It takes at most a few lines of code to support the 1.2 syntax of DigitTimeout(7) as well as the 1.4 syntax of Set(TIMEOUT(digit)=7). There are certainly good reasons for adding new commands to a programming language particularly to support new functionality. But why would you break every application that’s ever been written? Surely it’s not to conserve disk space or RAM in this day and age. You’re writing code for the business community, and that needs to be taken into account if Asterisk is ever going to achieve market penetration in the government and in corporate America… not to mention everywhere else! In case you couldn’t tell, if we have one pet peeve in life, it’s having to debug our own code that functioned perfectly because somebody got a bee in his bonnet to "improve" programming language syntax. <end of rant>

    There’s Some Good News, Too! Well, enough of the doom and gloom. We have some terrific news to ring in the New Year as well. As most readers of this column know, FreePBX provides the pretty face for Asterisk as well as all of the smarts to get the most out of your Asterisk PBX without having to learn anything about programming. Well, so you thought! Actually, there’s an incredible number of additional things you can do with Asterisk and FreePBX once you master the FreePBX way of doing things. The problem has been that, up until now, there hasn’t been a way to get individualized training on FreePBX. Well, your prayers have been answered. The FreePBX whiz kids have put together an incredible training session, and Nerd Vittles hometown will be the host site! The FreePBX Open Telephony Training Seminar will be held in Historic Charleston, South Carolina beginning February 27 through February 29, 2008.

    This is a DON’T MISS opportunity to learn everything you ever wanted to know about FreePBX, Asterisk, and Linux. The course will cover IVRs, ACDs, IRQs, E911, and the rest of the alphabet as well as routing, trunking, dialplan integration, remote office configuration, echo cancellation, TDM hardware, gateways, IP phones. It’s a very full, three-day course with a half day devoted to branding and selling Asterisk systems. The seminar is being held at one of Charleston’s premier hotels, the Embassy Suites Historic Charleston, with gorgeous suites, swimming pool and exercise room, free WiFi, free breakfasts, and free cocktails every evening. There also will be evening sessions to sit down one-on-one with the FreePBX and PBX in a Flash developers with ample assistance from the quintessential Asterisk development tools: beer and whiskey!

    For those unfamiliar with Charleston, just think of it as the best of New Orleans and San Diego all rolled into one terrific Southern city known for its hospitality. By all means, bring your spouse or significant other. Charleston recently won the Reader’s Choice award as the Best Southern City. See the January 2008 issue of Southern Living magazine which is on newstands now. And, if you like New Orleans restaurants, you’ll love Charleston dining! Here’s a big hint: register early if you want to attend. Seating is limited, and the hotel will probably be full except for the rooms already blocked for this seminar. Some of your favorite vendors also will be in attendance, but we’ll save some of those surprises for the coming weeks. If you haven’t yet met Philippe Lindheimer, the lead developer of FreePBX, suffice it to say you are in for quite a treat. We also hope to have the entire PBX in a Flash development team in attendance to address your every need. So, make this New Year’s Resolution: Don’t Procrastinate or you may miss this golden opportunity. Rumor has it that, if you sign up at this link very quickly, you’ll save $600 on the registration fee! And, no, we don’t make a nickel if you attend, but if you tell ’em Uncle Ward sent you, then expect to receive a free drink at Happy Hour just like all of the other Embassy Suites’ guests. Seriously, we’re looking forward to meeting all of you. So come join us and… Happy New Year!


    Some Recent Nerd Vittles Articles of Interest…