Home » 2005 » August

Monthly Archives: August 2005

The Most Versatile VoIP Provider: FREE PORTING

Tips & Tricks to Turbocharge Your Asterisk@Home PBX

Phone HomeWelcome back to the third installment in our series on installation and use of the Asterisk@Home PBX. Don't start here. Start with Part I and Part II because we're assuming you've already done all those things. Then move on to Part IV after you finish this article. Today we'll cover a few more setup suggestions for your Asterisk@Home PBX, and then we'll turn our attention to some Asterisk® Tips and Tricks that should mesmerize even your non-techie friends. If you've followed along this far, you know what a complex undertaking it is/was to get Asterisk@Home put together. These guys could really use any small donation to purchase additional hardware for testing and further development of future releases. Just click here for more info.

Configuring Ring Groups. If you did any exploring at all this past week, you probably have already figured out what ring groups are and how to configure them. A ring group acts like any other Asterisk extension number except it rings a collection of Asterisk extensions which you specify. If you dial a ring group number, it will ring all of the Asterisk extensions associated with that ring group. The only gotcha here is one of syntax, and this only becomes important when you start writing your own Auto Attendants or IVR applications. But you need to know it anyway. Using the syntax Dial(SIP/200), you can only ring extensions, not ring groups. If you want to be sure your command works correctly to call either an extension or a ring group, use this syntax: Dial(local/200@from-internal). Don't ask me why. To actually create and configure Ring Groups, go into Setup of AMP and click Ring Groups. The Add Ring Groups screen appears. For the group number, provide the number you want to dial for this ring group. For the extension list, put one Asterisk extension number on each line. The caller-id name prefix is optional. Choose the amount of time you want this ring group to ring, and then pick an option for what should be done with the call if no one answers. Save your settings by clicking the Submit Changes button, and then click the Red Bar to reset Asterisk with your new ring group. One important use of Ring Groups is to ring all or a collection of phones throughout your home or office with incoming calls. You can specify the ring group to use during business hours and afterwards on the AMP->Setup->Incoming Calls screen of Asterisk@Home. Just point your web browser to the IP address of your Asterisk server.

Music on Hold. Nothing adds that professional "phony" touch to your PBX quite like Music on Hold. Lucky for you, Asterisk@Home comes preconfigured with everything needed to make Music on Hold work out of the box, even music. Ever mindful of the copyright laws, of course, you can create your own Music on Hold libraries by uploading MP3 files using the On Hold Music option within AMP. Whenever you place a call on hold by pressing the switchhook on any phone or the Hold key on business phones, your callers will be serenaded by the default Music on Hold collection.

Directory Assistance. It may not be quite as high tech as Ma Bell's system, but Asterisk comes with a directory assistance service that's nothing to sneeze at. Just go to AMP->Setup->General Settings and specify how you want names looked up in the directory (first name, last name, or both). Then all your local users can get directory assistance by simply pressing the # key. Callers outside your system can press the # key during any voice prompt to access the directory. We'll show you how to build these scripts in a future column.

Wakeup Calls. Just like the finest hotels, you now can order up your very own wakeup call from any Asterisk extension. Just dial *62 and key in the time for your wakeup call. Use military time, e.g. 5:00 pm is 1700 and 8:00 am is 0800. At the appointed time, your phone will ring and, when you answer, the soothing sounds of your favorite Music on Hold will play ad nauseum. If you happen to get a fast-busy signal, it's probably because *62 hasn't been enabled in extensions_custom.conf. Follow the directions in the Call Your Friends section below to edit this file, find the 3 lines toward the top of the file that begin with exten => *62 and remove the semicolon at the beginning of each of the three lines. Click the Update button and then restart Asterisk as explained below.


Setting Up Asterisk Extensions to Call Your Friends. One of the really cool things you can do with your very own PBX is make up extensions which automatically call all your friends just by spelling their first names using the touchtone keys on your phone. For example, to call Mary, you create an extension 6279 which forwards calls to this extension number directly to Mary's cell phone. To set these extensions up, you have to get your hands a little dirty and edit the extensions_custom.conf file which is part of Asterisk@Home. Here's how to do it with your web browser. Type in the internal IP address of your Asterisk server to access AMP and then click on the Maintenance tab. Use maint for your username and whatever password you set last week for your Asterisk accounts. When the Maintenance window displays, click on the Config Edit option, and you'll be presented with a list of all the configuration files for Asterisk@Home. Now click on extensions_custom.conf to open the file in a window. You'll notice that the first section of the file is labeled [from-internal-custom]. These are called contexts in Asterisk. Move your cursor down below the include statements in the from-internal-custom context and press the enter key a few times to open up some blank space. Now type in a line that looks like the exten expression shown below. Instead of 6279, use the numbers that correspond with your friend's first name. And then plug in your friend's phone number in place of 6783214567. Add a comment after the semicolon which shows the name of the person associated with this extension. You can add as many of these as you like. Just make sure they don't conflict with actual extensions you've set up on your system. And keep the length of the extensions to six characters or less. Otherwise, Asterisk will try to place the call directly through BroadVoice. Remember the dialing rules we set up last week. Seven digits or more means send the call directly to BroadVoice for processing. Notice the @bv syntax. That tells Asterisk to place the call using a context called "bv" which was the context name we associated with the Outgoing Calls section of the BroadVoice SIP trunk we created last week.

exten => 6279,1,Dial(SIP/6783214567@bv) ; Mary's Cell Phone
exten => 5646,1,Dial(SIP/6783336767@bv) ; John's Office

Let's introduce a few more features while we're at it. There is a default time for attempting calls which you can set under the General Settings section of Asterisk@Home Setup. For most calls you'd want to set it to 20 or 30 seconds. But suppose we want to try the call for 60 seconds because it's a cell phone. And we'd like to listen to some nice music on hold while Asterisk attempts to find the person. Here's what you need to add to make it work:

exten => 6279,1,Dial(SIP/6783214567@bv,60,m) ; Mary's Cell Phone

Google TalkEmail Forwarding of Voice Mail. If you're as big a fan of Google and GMail as we are, then you probably have been following the rumored developments with Google Talk. The good news is that much of what many suspect Google is about to do (click on the inset and find out for yourself), you can do today with Asterisk@Home. And within a very short time, you can expect to connect your Asterisk box directly to Google Talk. For now, just be glad you've already installed Asterisk. When you're out and someone leaves you a voicemail message, Asterisk@Home will let you forward that voicemail message to your email address as a .wav file which can be played within most email client software. Or you can have Asterisk@Home send an instant message to your cell phone or pager telling you who called, what their phone number was, and how long a voicemail message the person left for you. Or you can do both. In addition, you can tell Asterisk@Home whether to delete the voicemail from your Asterisk server after sending it to your email account. In short, you now can manage all of your incoming email and voicemail from a single place, your email client. In order to send out emails from your Asterisk@Home server, you'll need to make two changes. First, make this adjustment to the /etc/hosts file on the server. Since anonymous emails are blocked by most ISPs, you'll need a fully-qualified domain name for your server. The easiest one to use is the fully-qualified domain name that your ISP assigns to the IP address for your broadband connection. Don't forget to update it when your ISP changes your IP address. To find out what your fully-qualified domain name is, go to a command prompt on your Asterisk server and type: nslookup 123.456.789.001 substituting your public IP address for the preceding numbers. Then write down the name entry without the trailing period. Now edit the hosts file: nano /etc/hosts. Move the cursor to the line which begins 127.0.0.1, and then move the cursor over the first letter of the first domain name shown, usually asterisk1.local. Now type in the fully-qualified domain name you previously wrote down and add a space after your entry. Save your settings: Ctrl-X, y, enter. Now restart network services on your Asterisk machine: service network restart. Second, go into AMP->Maintenance->Config Edit->vm_general.inc with a web browser. Change the serveremail entry to your an email name at the fully qualified domain you used in your /etc/hosts file above. Then save your configuration and restart Asterisk. If you continue with this setup and still don't receive emails, here's another configuration change that is sometimes necessary. On the Asterisk terminal, log in as root. Switch to the directory where the SendMail configuration file is stored: cd /etc/mail. Make a backup of the config file: cp sendmail.cf sendmail.cf.bak. Then issue the following command: echo CGasterisk.dyndns.org >> sendmail.cf. Substitute the actual domain name of your Asterisk server for asterisk.dyndns.org, but be sure it's preceded by CG with no intervening spaces.Then restart your server: shutdown -r now.


To configure the voice mail forwarding options, go into the Setup tab of the Asterisk Management Portal using a web browser. Click on Extensions and then click on an extension you already have configured. In the Voicemail and Directory section of the form, enter either (or both) your email address and your pager or cellphone's text messaging address. To email the voicemails as attachments, just click Yes beside Email Attachment. To delete the voicemail message from your voicemail inbox after sending it to your email address (not recommended until you first get it working correctly), click Yes beside Delete Vmail. Doesn't get much easier, does it? If you want to customize the email message which is sent, just edit vm_email.inc from AMP's Maintenance->Config Edit screen using your favorite web browser.

Phone HomePhone Home. Inspired by ET and the Coors reminder (see inset), we wanted a way to have our Asterisk system call us while we were on the road and provide dialtone to make international calls ... to hail a cab. Remember, it's free with BroadVoice's $19.99 World Plan. So we put together a little web application (actually a PHP script) so that, using a web browser on the road, you could tell your Asterisk server to call you and provide dialtone to any number you specify. The only prerequisite here was that we didn't want to sell the farm, i.e. provide free dialtone service and unlimited international calling for all the world's hackers and crackers. We also didn't want to have to go through a bunch of authentication steps to access the web site and put the call in motion. So here's the design. We have a PHP script which you can download here. It needs to be renamed to callme.php. Then copy it into the /var/www/html directory on your Asterisk server. You'll also need to tell your firewall/router to route HTTP or port 80 traffic to the internal IP address of your Asterisk server. This is usually done under the Services or Rules menus on most routers. You’ll want to specify that all port 80 traffic be allowed through the firewall all of the time. Be sure you've changed ALL of your Asterisk passwords before you do this!

To use this script from the Internet, you'll probably want to have to have a more permanent fully-qualified domain name associated with your Asterisk server. We explained here how to do this using dyndns.org. The syntax is as follows: http://asterisk.dyndns.org/callme.php?number=sip/bv/4045551212 where asterisk.dyndns.org is the fully-qualified domain name for your Asterisk server and 4045551212 is the area code and number where you wish to accept a call with dialtone. Nothing else needs to be changed. To dial a local extension, use this syntax: http://asterisk.dyndns.org/callme.php?number=sip/204 where asterisk.dyndns.org is the fully-qualified domain name for your Asterisk server and 204 is the local number to ring. Beginning on the first ring, Asterisk will start prompting for a password. It doesn't care whether the call is answered or not, and it times out after 10 seconds. After three unsuccessful password attempts (each timeout counts as 1), Asterisk hangs up. Stated another way, you have about 30 seconds to enter your password after the phone first rings. Then Asterisk disconnects the call. To enter your password, key in the touchtone numbers which match the numerical password code you specified in your [callout] context (see below). Then press the pound (#) key. Note that a web page will not display at this web address unless you enter the portion of the address following the question mark. Nor will a call be placed unless the sip/bv/ syntax precedes a phone number. We did this for security reasons.

Before the above script will work, you also need to add the following context to the bottom of the extensions_custom.conf configuration file discussed above. Make sure you change the password 24681234 to something very secure. After all, it's your phone bill! Once you make this change, it won't take effect until you restart Asterisk. The easiest way to do that is to access setup within AMP, click Incoming Calls, then click the Submit Changes button, then click on the red bar which appears. Count to 10 and your changes should be operational.

[callout]
exten => s,1,Authenticate(24681234)
exten => s,2,DISA(no-password|from-internal)

Update. The Phone Home article has been updated since this was published. The updated article provides setup instructions for three DISA alternatives. You can read all about it here.

Unlimited Calls For Free With Nextel. If you're one of the lucky ones that subscribes to Nextel's "free incoming calls" plan with web Internet service, then you obviously can use the Phone Home trick above to never again pay for an outgoing call. Just use the web browser on your Nextel phone to connect to the link shown above, and your Asterisk server will immediately call you back with outgoing dial tone.

NOAALocal Weather Forecasts with Asterisk@Home. One of the really neat things Asterisk can do is run Perl and PHP scripts which gives Asterisk almost limitless expandability. A fellow named Mark Johnson wrote one that goes out and collects your local weather forecast from the National Weather Service when you dial a certain extension, *61 in the case of Asterisk@Home. As installed, you get the forecast for New York City, but it's easy to customize it for any big city near you. First, using an FTP client go to ftp://weather.noaa.gov/data/forecasts/city, click on your state, and write down the name of one of the cities or towns displayed. Now go to your Asterisk server, log in as root, and change to the Asterisk scripts directory: cd /var/lib/asterisk/agi-bin. Make a backup of the weather.agi script just in case something goes wrong: cp weather.agi weather.agi.bak. Then edit carefully the weather.agi script: nano weather.agi. Use the cursor to move down 8 lines to the line which reads: my $custpath = "city/ny"; and, using the delete key, delete ny and replace it with your state's two-letter abbreviation, e.g. ga for Georgia. Be careful you don't erase either the trailing quote or the semicolon. Next, move down to the next line and replace newyork.txt with the name of the city text file within your state that you found on NOAA's FTP site, e.g. atlanta.txt. Finally, move down 4 lines and replace New York with the actual name of your chosen city and state, e.g. Atlanta, Georgia. Now save the file: Ctrl-X, then Y, then press the Enter key. Now give it a try. Just dial *61. If you happen to get a fast-busy signal, it's probably because *61 hasn't been enabled in extensions_custom.conf. Follow the directions in the Call Your Friends section above to edit this file, find the 3 lines toward the top of the file that begin with exten => *61 and remove the semicolon at the beginning of each of the three lines. Click the Update button and then restart Asterisk as explained above and try your call again. If it still doesn't work, chances are there is a typo in either the city or state entry you made in weather.agi. Want some more Tips & Tricks? Here's a great place to start your search.

VTech i5871Coming Attractions. Next week we'll devote most of our attention to installation and configuration of Sipura's SPA-3000 for use with Asterisk. At under $100, the SPA-3000 is one of the best telephony inventions ever. Unfortunately, the documentation for the product isn't worth a nickel;, but we'll fix that. The SPA-3000 does three things and does them all well. First, if you want to connect your existing home or office Ma Bell phone line to your Asterisk server so that incoming calls to your regular phone line can be managed with Asterisk just like your VoIP line, then the SPA-3000 is the way to go. It provides the best voice quality period. Second, if you want the flexibility and redundancy of having a Ma Bell line to place outgoing calls (especially for 911 service), then the SPA-3000 is just the ticket. You even get failover protection when your Internet service croaks. Of course, our power fails a lot more often than our broadband connection. For those that are interested, here's our take on the FCC's 911 debacle.

Last but not least, if you want to connect a 5.8 GHz wireless phone set to your Asterisk PBX for use throughout your home or office, the SPA-3000 is a must-have. For more information on wireless phone sets, take another look at Part I of this series. And check out the incredible VTech i5871 (see inset) which we'll also configure next week to use with Asterisk. If you want to order an SPA-3000, the Voxilla Store is the cheapest source at the moment. You'll also get free BroadVoice setup and a month of free service with your purchase. As much as we like Voxilla, don't get sucked in to their $9.95 Priority Support "to [i]nsure your device is up and running in the shortest time possible." We tried it twice and usually got a cryptic email response which said something like "that's not covered in our basic installation support." In short, it's priority support when you order it, and it's (very) basic (or worse) assistance once you need it. I'm reminded of Mark Twain's comment about bankers: "A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain."

Then, in our final column on Asterisk (not really!), we'll walk you through setting up an Auto Attendant and Interactive Voice Response System with Asterisk. And we'll also spend some time showing you how to use Asterisk's built-in tools to block sales and political calls and even calls from old girlfriends. But why would you want to do that? Have a great weekend.


Some Recent Nerd Vittles Articles of Interest...

ISP-In-A-Box: Installing a Free Asterisk PBX Phone System (Part II)

AsteriskLast week we began our quest to install the free Asterisk® PBX. We won’t repeat ourselves so read Part I before continuing here. We’re also assuming you’ve already signed up for a BYOD-Lite BroadVoice account (using your free coupon from Voxilla). Be sure you’re signed up for a Generic SIP account to use with Asterisk. If not, call BroadVoice customer service and ask them (nicely) to change it. There’s no charge for this change. You also should have picked out your server hardware and have either procured an IP telephone set (we recommend the GrandStream GXP-2000 for under $100) or a Sipura VoIP adapter to use plain old telephones, or you plan to use a software-based telephone with your Mac or PC. We’ll cover installation of the latter option shortly because we’re going to use a softphone to make sure Asterisk is set up correctly before adding additional extensions and other bells and whistles.

Editor’s Note: This version of Asterisk@Home has been superceded. For the latest tutorial, click here.

Overview of Asterisk Installation Process. Our installation procedure for today goes like this. We’ll download Asterisk@Home, our favorite bundled Asterisk installation for new users. Then we’ll burn an installation CD from the ISO image. Next we’ll fire up our soon-to-be Asterisk server with the installation CD in place. The installation process will erase your hard disk and then load Linux, Asterisk, Apache, PHP, SendMail, MySQL, and lots of other stuff without your lifting a finger (we hope). For those that have been following our other ISP-In-A-Box tutorials, this process and the collection of open source application software should sound familiar. Once the install completes, we’ll reboot the server, configure Asterisk for use with your new BroadVoice account, download a softphone for testing, and make our first call. If all goes well, the whole process should take about an hour. We’ll then sketch out a deployment plan for Asterisk@Home depending upon how you plan to use it. For this week’s homework, we’ll let you continue building your Asterisk extensions and voicemail accounts. Then next week we’ll get to the fun part by adding an Auto Attendant, an Interactive Voice Response system, Music on Hold, and a few terrific surprises that you’d find it difficult to implement even with a $250,000 PBX install from one of the ‘Big Boys.’ "And what does all this cost," you might be asking. Assuming you have a clunker PC lying around, next to nothing. A 400MHz Pentium III with 128MB of RAM is more than adequate for a home or home office PBX. Your BroadVoice account comes with a 30-day money-back guarantee plus you get free setup and a month of free service if you purchase either a phone or VoIP adapter from Voxilla (either of which is under $100), and Asterisk@Home is free. If you want to use a softphone instead of an IP phone or VoIP adapter, then BroadVoice costs $9.95 for setup, and $8.45 a month for a phone number in almost any area code, unlimited incoming calls, and 100 minutes a month of outgoing within the U.S. So let’s get started. And why do you need a VoIP provider? Because outgoing calls to garden-variety telephones need to travel on the packet-switched voice network (PSTN), and that costs money. As a practical matter, you also need a PSTN phone number if you want folks to be able to easily call you.

Downloading the Software. First, we need to download an ISO image of Asterisk@Home. Version 1.5 is the latest and greatest, and it fixed some bugs so let’s use it. Just find a link close to your home base and click on it to begin the download. If you’ve never burned a CD from an ISO image, here’s how. For the Mac using Roxio Toast, choose Copy, click Image File, and drag the ISO file you downloaded into the folder. Click Burn after inserting a blank CD. If you don’t own Toast for your Mac, go to the Applications->Utilities folder and run Disk Utility. Click on Images->Burn from the Title Bar and choose the ISO file you downloaded. Then click Burn to begin. For those in the PC World, you’ll need either Roxio Easy CD Creator or Nero to create a CD from an ISO image. With Easy CD Creator, choose Create Data CD. Then in the File menu, select Create CD from Image, and choose your downloaded file. Now click burn to begin. With Nero, go to Recorder from the top menu and choose Burn Image. Select your download file. Then from the Burn Compilation Window, choose Burn to begin. When your CD is ready, insert it into your clunker PC, and reboot. Important: make sure this machine is connected to a network behind a router/firewall and can obtain a valid IP address from a DHCP server (i.e. the machine has working Internet access) before beginning this installation. The reason for this is that Asterisk@Home needs Internet access to properly configure the machine at the conclusion of the setup process. And, remember, everything on the hard disk of this machine will be erased before the Asterisk@Home installation process begins. You’ve been warned. In case you haven’t already figured it out, Asterisk@Home out of the box is anything but secure on the Internet so don’t expose it with a direct network connection until we get it locked down. Any time you can log on to a Linux system as root using password as your password, you have a system which will be hacked in a matter of minutes once it’s exposed to the big, bad Internet. While you’re waiting on Asterisk@Home to install, let’s download our favorite softphone so you’ll have a way to test your new Asterisk PBX once the installation completes. Free versions of X-Lite 2.0 are available for Mac OS X, Windows, and Linux here. So choose your favorite platform and install it on your desktop PC or Mac.0


IP Configuration of Asterisk. We need a consistent IP address or domain name both on your internal network and externally if you expect to receive incoming calls reliably. There are three pieces to IP configuration: (1) setting the internal IP address of your Asterisk server, (2) configuring an external qualified domain name which will always point to your router/firewall, and (3) configuring your router to transfer incoming Asterisk packets to your Asterisk server. Once the install completes, remove the CD, and reboot your new Asterisk@Home server. When startup finishes, log in as root with password as your password. Now type ifconfig eth0 (that’s "e-t-h-zero") then enter, and write down both your inet addr and your HWaddr on the Ethernet 0 interface, eth0. Inet addr is the internal IP address of your Asterisk box assigned by your DHCP server (i.e. your router/firewall). HWAddr is the MAC address of your Asterisk server’s eth0 network card. To assure a consistent internal IP address, you can either configure your router/DHCP server to make certain that it always hands out this same address to your Asterisk machine, or you can manually configure an IP address for this machine which is not in the range of addresses used by your DHCP server. Almost all routers now make it easy to preassign DHCP addresses so we prefer option 1. It’s generally under the tab for LAN IP Setup and is generally called something like Reserved IP table. Just add an entry and call it Asterisk PBX and specify the IP address and MAC address that you wrote down above. Now each time you reboot your Asterisk server, your router will assign it this same IP addreess. To assure a consistent external address is a little trickier. Unless you have a static (fixed) IP address, you’ll want to use a Dynamic DNS service such as dyndns.org and configure your router to always advertise its external IP address to dyndns.org. DynDNS.org will take care of revising the IP address associated with your domain name when your ISP changes your dynamic IP address. Then you can configure your BroadVoice account using your fully-qualified dyndns.org domain name, e.g. windswept.dyndns.org provides access to our beach house network even though Time Warner cable hands out dynamic IP addresses which change from time to time. For more details, read our article on the subject.

Basic Asterisk Configuration Using AMP. The crown jewel of Asterisk@Home is a web-based administration tool for Asterisk called the Asterisk Management Portal (AMP). Using your favorite web browser, call up AMP by typing in the internal IP address of your Asterisk server. Now click on the Asterisk Management Portal. When prompted for a username, type admin. The default password is … you guessed it … password. Click on the Setup tab to begin. Our first order of business is to set up Asterisk to work with your VoIP provider, BroadVoice. In Asterisk-speak, this is known as a SIP Trunk. So click on Trunks, and then choose Add SIP Trunk.

Under General Settings, enter your BroadVoice-chosen phone number for your Outbound Caller ID and enter 2 for Maximum Channels. This will assure that BroadVoice doesn’t shut down your account when ten of your friends attempt to make outgoing calls at the same time.

For Outgoing Dial Rules, enter the following on three separate lines. It means you can use BroadVoice to place 7 and 10-digit calls as well as 1-areacode-phonenumber calls in the U.S.

NXXNXXXXXX
NXXXXXX
1NXXNXXXXXX

For Outgoing Settings, name this trunk bv and then cut the following code and paste it into the Peer Details section. Once you have finished, replace the three occurrences of 9994567890 with your actual 10-digit BroadVoice phone number and replace yourBVpassword with your actual BroadVoice SIP password. This is NOT the password you set up to log in to your BroadVoice portal account at www.broadvoice.com. To retrieve your SIP password, log in to your BroadVoice portal at www.broadvoice.com and then click on the Account tab. Under My Devices, click Show Settings. In the list of settings will be your auth_password. Write it down, or better yet, cut and paste it into your Asterisk@Home configuration immediately after secret= with no intervening or trailing spaces.

authname=9994567890
canreinvite=no
dtmf=inband
dtmfmode=inband
fromdomain=sip.broadvoice.com
fromuser=9994567890
host=sip.broadvoice.com
insecure=very
nat=yes
secret=yourBVpassword
type=peer
user=phone
username=9994567890

For Incoming Settings, name the USER Context, sip.broadvoice.com. Then cut and paste the following into the User Details section of the form. Replace the two occurrences of 9994567890 with your actual 10-digit BroadVoice phone number and again replace yourBVpassword with your actual BroadVoice SIP password just as you did above.

context=from-pstn
dtmf=rfc2833
dtmfmode=rfc2833
fromdomain=sip.broadvoice.com
host=sip.broadvoice.com
insecure=very
nat=yes
secret=yourBVpassword
type=user
user=9994567890
username=9994567890

There’s one more step in the SIP Trunk configuration, and it’s the place where most folks make typos so BE CAREFUL. In the Register String field, enter the code below. Replace the two occurrences of 9994567890 with your actual 10-digit BroadVoice phone number and again replace yourBVpassword with your actual BroadVoice SIP password just as you did above. Note that there are three sections to this register string, your BroadVoice account address in email format, your BV SIP password, and your BroadVoice account address again in email format. The three sections are separated from each other by two colons which must not be deleted.

9994567890@sip.broadvoice.com:yourBVpassword:9994567890@sip.broadvoice.com

Once you’ve checked and double-checked and triple-checked your typing for typos, save the page. A red bar will display at the top of the screen, click on it to reload Asterisk with the new settings. Now let’s check and be sure you’re registered. Click on the Maintenance tab at the top of AMP. If prompted for a username and password, enter maint for the username and password for the password. Click Asterisk Info in the left column and a whole bunch of Asterisk details will be displayed. The section we’re interested in is Sip Peers. It should show sip.broadvoice.com with your phone number as the username. In the right column, if you have successfully logged in, it will show Registered. If it shows anything else, you need to make a small addition to your Linux configuration (which is a good idea anyway). Look at your BroadVoice device configuration settings screen again (where we found your SIP password), and there will be an entry like this: proxy_ip: proxy-atl.broadvoice.com. The entry we are most interested in is the three-letter city code following proxy-. As an aside, if you try to ping this domain, you’ll get an unknown domain message because BroadVoice has been too lazy to change the hyphen to a period which would be the correct name for this proxy. Anyway, this is BroadVoice’s best guess of their closest server to you. The other problem is that all of BroadVoice’s servers are not created equal. You can register with some and with others you time out. Atlanta (atl), for example, regularly rejects our registration requests, and we live in Atlanta. Go figure! Actually, we do need to go figure because we want this to work. So drop down to a command prompt, and ping the following IP addresses. Write down the response times for each of the IP addresses. Now what we want to do is point sip.broadvoice.com to the proxy with the shortest ping time and see if Asterisk will register. If not, we’ll move to the next shortest, and so on.

#Los Angeles proxy
#147.135.8.128 sip.broadvoice.com
#New York City proxy
#147.135.20.128 sip.broadvoicce.com
#Atlanta proxy
#147.135.28.128 sip.broadvoice.com
#DC proxy
#147.135.0.128 sip.broadvoice.com
#Chicago proxy
#147.135.12.128 sip.broadvoice.com
#Miami proxy
#147.135.4.128 sip.broadvoice.com
#service network restart once change is made

Here’s how to set the default IP address for sip.broadvoice.com on your Asterisk server. Go to the Asterisk server console and log in as root with password of password. Change to the /etc directory: cd /etc. Type all of the code above into the bottom of the hosts file: nano hosts. The pound sign (#) at the beginning of a line means it’s a comment which is ignored by Linux. Now remove the # sign from the line with the IP address with the lowest ping time by pressing Ctrl-D while positioned over the # sign. Save your changes: Ctrl-X, y, then enter. Now restart the network services on your Linux machine: service network restart. Now refresh your AMP maintenance screen and check to see if you’re registered with BroadVoice. If not, repeat the drill. Remark out the line you unremarked and delete the # sign from the IP address line of the server with the next fastest ping times. Continue until you get a Registered message. If none of the servers work and you’re sure you typed your phone numbers and passwords correctly, call BroadVoice support: 1-978-418-7300. Nights and weekends have shorter hold times, and expect to get cut off once or twice. It’s a feature!

Creating Your First Asterisk Extension. Now that we have a VoIP connection, we need an internal phone number for each telephone that will connect to the Asterisk server. You guessed it. They’re called extensions. And you can number them any way you desire, but we’ll give you a suggestion (if you live in the U.S. of A) which will save you lots of heartbreak. Don’t use extensions that begin with numbers which are used in the North American dialing plan. They may work, but they may not. The best numbers for extensions begin with 1000 and go all the way up to 1199. After that, you’re bumping into the dialing plan. And three-digit numbers almost always begin some phone number in the United States. Having told you the best practice, let me admit that we use numbers in the range of 200 to 399 and have had no problems with BroadVoice service or Asterisk. If we had it to do over again, we’d probably heed our own advice, but …

To set up an Extension, click on the Setup tab and then choose Extensions. An almost blank form will appear with a default extension of 200 using SIP as the protocol with rfc2833 for DTMF signalling. Set the extension number to whatever you desire, but be sure the protocol says SIP and the DTMF setting is rfc2833, for now. For ease of explanation, let’s assume you chose 1000. Now let’s make the extension password 1000 also to keep things simple. Enter your name for the user name. Be sure the Voicemail and Directory option is Enabled. Make the voice mail password 1000 as well. Enter a working email address for this user account and leave the other defaults as they are for now. Click Add Extension to save your work. Click on the red bar again to reset Asterisk.

Configuring Asterisk for Incoming Calls. Only two more steps and we’ll be ready to try out our new system. Click the Incoming Calls tab. In both the Regular Hours and After Hours sections of the form, click the Extension radio button and choose your new extension number (1000) for receipt of incoming calls. Click Submit Changes and then click the red bar to reset Asterisk.

Configuring Asterisk for Outgoing Calls. Now click on the Outbound Routing tab. The Add Route form will display. For Route Name, call it Outside. Leave the password blank. For Dial Patterns, enter the following:

NXXNXXXXXX
NXXXXXX
1NXXNXXXXXX

Finally, for the Trunk Sequence, choose SIP/bv. Check your entries carefully. Then press the Add button. Now click the Submit button. And click on the red bar to restart Asterisk.

Configuring the X-Lite Softphone. Start up X-Lite on your PC or Mac and choose Preferences->Systems Settings->SIP Proxy->Default from the menu bar. Make sure it is enabled. To keep things simple, enter 1000 for your Username, Authorization User, and Password. For Domain Realm and SIP Proxy, enter the internal IP address of your Asterisk server. You can change any or all of this later. Close the configuration menu and the softphone will try to register with Asterisk. If all went well, you’ll get a "Logged In" message with your extension 1000 displayed on the screen. You now should be able to dial a call anywhere in the U.S. using the same digits you’d use on your home telephone. Try it. You’ll like it! If that worked, you’re ready to take your first incoming call. Go to your cell phone or home phone and dial your BroadVoice number just as if it were your Aunt Betty’s phone number. All the area code and long distance rules still apply except you can dial any number in your own area code using BroadVoice by dialing a 7-digit number whether Ma Bell requires 10 digits or not.


Securing Asterisk. Now that we have things working, it’s time to make sure Asterisk@Home stays that way. There are two critical steps to securing Asterisk@Home. First, we need to install all of the patches which have been released since the bundled version for the CD was created. And second, we need to reset a number of passwords to secure passwords that only you know. Then we’ll be ready to put Asterisk on the DMZ of your firewall and expose it to every evil Internet person known to mankind. To get the latest Linux updates, log in to your Asterisk server as root, and type the following at the prompt: yum -y update. You may have to reboot your server when the update process completes. Get in the habit of doing this every couple of weeks, and you’ll never have a security problem with Linux.

Now for the passwords. First, think up a good one. Use letters and numbers. Now log out and back in to your Asterisk server. Read the screen and type: help-aah. As you can see, you need to change the Linux password (passwd), the maintenance password for AMP (passwd-maint), the standard AMP password (passwd-amp), the MeetMe password (passwd-meetme), and the admin password used to check email (passwd admin). One more you have to dig for is the password for the Flash Operator Panel (FOP). Change to the directory where the config file is stored: cd /var/www/html/panel. Edit the config file: nano op_server.cfg. Find the line with the password: Ctrl-W security_code. Then change passw0rd to something else and save your changes: Ctrl-X, y, then Enter. Don’t forget to stop and restart Asterisk: amportal stop then amportal start.. There’s really no reason you can’t use the same password for all of these passwords as long as it’s secure. Finally, log in to the Asterisk Management Panel (AMP) and click on CRM which starts up the Sugar CRM application. Login as admin with password for your password. Click on My Account in the upper right corner, and then click the Change Password button to change your CRM password.

Once you’ve completed all of these password changes, use a web browser to open the web interface to your router and find the option which let’s you designate an IP address as your DMZ server. Insert the IP address of your Asterisk server there. What this means is that Asterisk now is sitting out on the Internet without the protections of your router/firewall. You’ll need to do this if you plan to add remote extensions at other locations which can make calls off your Asterisk server. If you don’t care about this functionality, then the DMZ step is unnecessary.

Homework. We’ve covered enough to get you up and running with Asterisk@Home. Take a little time to add a few more extensions and enjoy your new toy. We’ll add the really fun stuff next week, but, if you want to get a head start, here are some of the best tutorials we’ve found: Asterisk@Home Handbook, Asterisk@Home for Dumb Me (especially good for those outside the U.S. that want to configure Asterisk for international dialing), The Hitchhiker’s Guide to Asterisk, Build Your Own PBX, Configuring Asterisk@Home for BroadVoice, the VoIP Wiki, Asterisk@Home Forums, and Voxilla’s Asterisk Forum.

Coming Attractions. One of the little goodies we’ve been working on for next week will let you access a web page stored on your Asterisk machine from anywhere in the world, type in the phone number of the phone sitting beside you, and have Asterisk call you back at that number with dial tone (after entering your password, of course). You then can make unlimited calls using your BroadVoice service at your home to anywhere in 21 countries … for free (assuming you have the BroadVoice $19.95 World Plan). For those that travel frequently outside the United States, you know what a big deal this really is. Stay tuned!


Some Recent Nerd Vittles Articles of Interest…

ISP-In-A-Box: Installing a Free Asterisk PBX Phone System (Part I)

AsteriskNOTE: For a more current article on setting up an IVR application with Asterisk®, see this Nerd Vittles article.

Summer vacation is over for us so today we hit the ground running. No home or office is complete without your very own free PBX. So we kick off our fall season with a series of HOW TO articles which will tell you everything you ever wanted to know about deploying the world’s best and most powerful open-source PBX, Asterisk. You might be asking, "What is Asterisk?" We like to think of Asterisk as the world’s finest telephony toolkit. Just about anything you’ve ever heard on a telephone can be built with Asterisk. It provides a rich collection of building blocks which allow people to call you using virtually any telephony platform including POTS (plain old telephone system) and VoIP (voice over IP). Hardware interfaces are available to connect your Asterisk PBX to T1 and PRI circuits, ISDN lines, POTS lines, and IP networks. And the beauty of the Asterisk design is that you build your system identically regardless of the telephony hardware interfaces you choose. When a call is received, Asterisk provides the tools to design an auto-attendant, an interactive voice response (IVR) system, a call routing system, a voicemail system including email or pager notification and delivery of messages, a fax server, and a teleconferencing system. Asterisk scales from one user to thousands on hundreds of interconnected systems. You can even put extensions at your remote getaways and make and receive calls through Asterisk at your home base. You also can mix and match hardware and call features to your heart’s content while adding sophisticated touches such as call queueing, music on hold, and even wakeup calls. There’s a terrific web interface to walk you through configuring your Asterisk server and another web application lets you listen to your voice mail messages with any browser. You won’t master Asterisk overnight, but you’ll be glad you invested the time learning it.

Our objective, as with all of our tutorials, was to identify a best-of-breed approach to Asterisk deployment which minimized the cost and learning curve while maximizing the functionality available. Our other Golden Rule applies in spades to Asterisk: Start Small and master the basics. Then grow your system. You don’t need to buy anything to start using Asterisk if you have an old clunker PC lying around your home or office. Out of the box, Asterisk supports VoIP telephony and a number of free softphones including X-Lite that work with Mac OS X, Linux or Windows PCs are available for the taking. Of course there are thousands of Asterisk developers around the world (even us) who will be more than happy to charge you $150 an hour to build any type of Asterisk PBX you can imagine, but we’re assuming your budget is more limited. Before we get to actual installation of Asterisk, let’s address briefly what types of systems are possible and what the relative costs would be.

Asterisk Hardware Costs. To reduce your anxiety level about Asterisk, let’s first talk about costs. Asterisk can be run on virtually any modern PC (3 years old or less) or a Mac. While we always lean toward the Mac platform because of the ease of installation and use as well as the open source flexibility that Mac OS X provides, Asterisk is an exception primarily because the simple tools are not yet available for the Mac and because Asterisk consumes all the computing resources it can get its hands on. Stated another way, your Asterisk server ought to be built on a machine dedicated to Asterisk and its tools. So don’t waste your Mac when PCs are a dime a dozen these days. And the very best implementation (today) is built around Linux running on any garden-variety PC. Yes, a $188 WalMart special (see inset below) will probably suffice for home or home office use. And, no, you won’t have to learn Linux to use Asterisk effectively.

Asterisk is extremely processor-intensive because of the digitizing and compression of incoming and outgoing human speech so the more simultaneous calls and tasks you wish to handle, the beefier the machine needs to be. Having said that, an under $1,000 AMD Athlon 64-based system with a gig of RAM and a 200GB drive could probably handle several hundred simultaneous calls and many more users without breaking a sweat. The Nortel solution for an equivalent system with consulting fees would be in the hundreds of thousands of dollars. For more sizing information, go here.


Editor’s Note: This version of Asterisk@Home has been superceded. For the latest tutorial on or after February 3, click here.

Choosing a Telephony Provider. Assuming you want to make calls out through your Asterisk PBX, you have two issues to consider. First, you need a telephony provider to route your calls to their destinations unless you only want to talk to other individuals in your home or office. And second, you need telephone equipment for each of your users. Our recommendation on telephony providers is to ditch Ma Bell and her offspring and choose a VoIP provider that gives you unlimited local and long distance calls to the places you frequently call. We’ve already explained in a previous article why our VoIP provider of choice is BroadVoice, and the balance of these tutorials assume you will go that route. Before you go the VoIP route, read our article and get a good handle on not only the advantages but also the risks and tradeoffs of VoIP technology. We think BroadVoice gives you the best VoIP bang for the buck: unlimited incoming and outgoing calls to 21 countries for only $19.95 a month plus a $2.50 service charge including a phone number in your choice of most area codes. There are, of course, other applications where outgoing calls may not be that important. For example, if you wanted to build an Asterisk IVR application to provide movie reviews and schedules or real estate listings or Little League baseball scores, then all you really care about is having a local phone number and free incoming calls. BroadVoice can meet those requirements with their Bring-Your-Own-Device (BYOD-Lite) Plan using Asterisk for $8.45 a month. Add unlimited outgoing calls within a single state for only $4 more a month. And, for businesses, unlimited calls within the U.S. and Canada are only $29.95 a month plus a $2.50 a month service charge. If you’re dead set on keeping your Baby Bell phone line, then you’ll need a Digium Wildcard X100P FXO PCI Card to connect your POTS line to your Asterisk PBX. You can find OEM versions for under $10. Just search for X100P on eBay. Software installation instructions are available here. Note: This card allows your Asterisk PBX to place and receive calls from a POTS line. It does not allow you to connect a telephone instrument. We’re getting to that.

GrandStreamChoosing Telephones. As with most technology decisions, choosing telephone instruments depends upon your requirements. If your VoIP PBX will be used in your home or home office by mostly your family where one person talks on the phone at a time, our recommendation would be to pick up one of the new 5.8GHz cordless phone sets. Many can support up to 8 wireless extensions which you can scatter around the house as desired. All that’s required is an electric outlet for each unit’s AC adapter. They work great throughout large homes and won’t interfere with your home wireless network. Visit Best Buy, Staples, Office Depot, or Office Max and have a look at the incredible selection which has become available in just the last year. Then go to PriceGrabber.com and save yourself 20 per cent. Sam’s Club and Costco also run specials on these phones almost weekly. If you go this route, then you’ll also need a Sipura VoIP adapter to connect your analog phones to your Asterisk digital PBX. If all you want to connect is a single cordless phone set with up to 8 wireless extensions, then the SPA-1001 will suffice. It’s the size and weight of a pack of cigarettes and costs about $60. For two lines, choose the SPA-2002 or choose the SPA-2100 for a cordless phone set and a fax machine. If you’re looking down the road to the day of multiple VoIP providers, then you’ll want to spring for the Big Kahuna, the SPA-3000, which still costs less than $100 (see inset below).

If you have a home office or a business and want a true business telephone instrument with speakerphone, multiple line support, and intercom paging, then IP telephone instruments are the way to go. We personally favor the GrandStream GXP-2000 (inset above) which is under $100 at the Voxilla Store. Sipura also makes a phone, but there have been problems reported with the rubberized buttons sticking. For $200, you can move up to the Polycom IP501 with a state-of-the-art speakerphone. With either of these phones, the same BroadVoice coupon described above is included. We’d recommend you steer clear of Cisco-branded IP phones (they also own Sipura now) unless you like burning money and enjoy water torture. Trying to obtain software updates from Cisco is next to impossible unless you purchase the phones directly from Cisco and subscribe to a maintenance contract (also expensive).


Homework. We’re going to give you until next week to get all of your hardware lined up, and then we’ll be ready to load Asterisk. We’ve chosen a bundled Asterisk product called Asterisk@Home that provides Linux, Asterisk, Apache, MySQL, and PHP all rolled into a single CD. You simply insert the CD into your PC, turn it on, and it will reformat your drive (aka "erase everything") and load a turnkey system for you. It doesn’t get much easier than that. You’ll be up and running in less than an hour. If you want to get a head start, you can download the ISO image, handbook, and user’s guide from here. There’s a great Asterisk tutorial from an Australian user that’s worth a look: Asterisk@Home for Dumb-Me. You may also want to review the Asterisk User Documentation Project including The Hitchhiker’s Guide to Asterisk which was written by some of the best in the business. It’s available in both HTML and PDF formats. Finally, there’s a new commercial offering, Asterisk: The Future of Telephony, at Amazon.com. For future reference, here’s the place to go when you get stumped down the road.


Some Recent Nerd Vittles Articles of Interest…