Save Millions on VoIP Costs: Here’s How
Lesson #6: In the VoIP Wild West, don't believe every flashing sign that you see or every headline that you read. But rest assured, the Federal Trade Commission will be coming to your rescue ... some day.
And, yes, this is the sixth article in our Asterisk@Home series, and we will show you how to save some money on your current phone bills using Asterisk® Dial Plans, but maybe not quite millions. Everything in this article applies to anyone using Asterisk@Home or a pure Asterisk® PBX with the Asterisk Management Portal (AMP). Read the first five parts (I, II, III, IV, and V), and then you'll be ready to continue on here.
Perhaps the greatest feature of Asterisk@Home is the ease with which you can automatically route outgoing calls based upon the number dialed. And you can do it with or without dialing prefixes such as dialing 8 or 9, and then a 1, and then an area code, and then a phone number. You can use this dialing plan intelligence to route specific types of calls to different VoIP providers thereby taking advantage of cost savings offered by the different providers. For example, Voxee.com has a 1.1¢ per minute rate for calls within the United States with 6 second billing increments. And Free World Dialup (FWD) has free outgoing calls to 800 numbers in the United States. In addition to worldwide calling plans, BroadVoice also has a $9.95 in-state residential calling plan that hopefully will prove to be less controversial than their worldwide plans. It provides unlimited (sort of) in-state calling. The "sort of" is a warning that BroadVoice recently inserted an asterisk (Unlimited*) after all of their so-called Unlimited Dialing Plans despite their continuing ads to the contrary (inset). In the fine print, BroadVoice indicates that they now can retroactively determine that you are not using the plans as they intended them to be used. It's still a bit of a mystery as to what the BroadVoice formula is; however, you are forewarned to be prepared for a legal battle if you exceed their undisclosed calling thresholds. When your international calling gets into the thousands (not billions) of minutes, expect to be converted to a business plan where you'll be billed by the minute at prevailing rates.
Here's the actual text of their Terms and Conditions. On the Voxilla forums, some customers report being "converted" to business accounts merely for calling their girlfriends too frequently. Compare that conduct to the ad now running on Voxilla (see inset) and judge for yourself. Suffice it to say, if you take BroadVoice's bait and attempt to use a billion minutes, you should fully expect a bill for millions of dollars rather than the $19.95 advertised price. Bottom Line: If you choose BroadVoice, protect yourself after signing up by switching to a prepaid debit card with no more than a three-month cash balance: $66.50.
You agree that if BroadVoice determines in its sole discretion that you have used the Service, and/or anyone else has used the Service for any activities and purposes prohibited by this section it may immediately charge you BroadVoice's higher rates for its Business service for all periods, including past periods, in which you use, or used, the Service for such prohibited activities together with a US$100.00 administrative fee for same, and that BroadVoice may immediately charge such amounts on your credit card.
The AMP Approach to Dialing Plans. There are, of course, about A Billion ways to set up Asterisk dialing plans, too. We'll provide one approach that works. When we're finished, you'll have a VoIP dial plan that provides toll-free calling to millions of phone numbers, free calling to anyone in your state, and penny-a-minute long distance calls within the United States with billing increments of six seconds. The total monthly cost is $9.95 plus however many penny-a-minute U.S. long distance calls you make. International savings are equally remarkable. Suffice it to say, you can call Paris, London, Hong Kong, and Tokyo for less than 2¢ a minute with numerous VoIP providers. Check the Voxilla forums for the best current deals. You, of course, can take what you learn here today and embellish these dial plans to meet your unique circumstances. But, we're getting ahead of ourselves. First, you need to know a bit about how Asterisk@Home and especially the Asterisk Management Portal (AMP) process outgoing calls. It's quite different than the pure Asterisk way of doing things so, if you plan to use AMP or Asterisk@Home which uses AMP, learn the AMP way of doing things. It's very powerful and downright easy once you get the hang of it. The only problem is that no one ever bothered to write down HOW ... until NOW!
When you dial a number, AMP compares the dialed number against the Dial Patterns you've set up in your AMP->Setup->Outbound Routing rules. When AMP finds the first matching dial pattern in any Route (going down the list of routes from top to bottom), it then looks there to see what your first Trunk Sequence priority is and applies the Outgoing Dial Rules for that trunk. You set these dial rules in AMP->Setup->Trunks by editing your Trunk configurations. The important point is that the Dial Pattern in your Outbound Routing rule gets processed first, and then the Dial Rules for the Trunk that will actually do the dialing are processed. If this Trunk isn't available for some reason, Asterisk repeats the process using your second Trunk Sequence priority, and so forth until all of the Trunk Sequences are exhausted or the call is successfully dialed. Let's walk through a good example which uses these configurations so you can see how to put one together and what goes where. You'll note that this sequence is exactly backwards from the way you configure new VoIP providers using AMP, i.e. you first set up the trunk and then the outbound rule to support the trunk. As unintuitive as it may appear, it really works quite well ... if you first sit down with a pencil and figure out what you're trying to do. It turns out that's pretty good advice for most programming tasks.
Since we know that FWD provides free outbound dialing for toll-free (800 number) calls, let's use FWD as our top Trunk Sequence priority for placing outbound 800 calls. You can't beat free! We'll assume you've already set up your free FWD account. If not, go here first. Now we want to create a FWD trunk entry using AMP->Setup->Trunks->Add IAX2 Trunk. IAX2 is the native protocol that Asterisk speaks so use it whenever you can to eliminate pesky NAT problems. Just be sure UDP port 4569 on your firewall is redirected to the internal IP address of your Asterisk server. Now back to AMP. In the General Settings, plug in a Caller ID entry, e.g. "DOE JOHN <695695>" where John Doe is your name and 695695 is your FWD number. FWD expects 800 number calls to be in the following format: *18002221212, but that isn't really the way you dial them since there isn't an asterisk on your phone. In the Outgoing Dial Rules for your FWD trunk, enter the following which tells Asterisk to add an asterisk (*) prefix before dialing 18xx calls or add 1 plus an asterisk (*) before dialing 8xx calls. This way FWD can correctly handle calls whether you dial 18002221212 or 8002221212 on your phone. The main point to remember here is that you use Trunk Dial Rules to reformat a dialed number into something the VoIP provider is expecting to see when the call arrives from your Asterisk server. And typically you use Outbound Dial Patterns to interpret the numbers dialed on a telephone instrument and to route the call accordingly. So here's the code for the Outgoing Dial Rules in your Trunk setup for FWD:
*+18XXNXXXXXX
*1+8XXNXXXXXX
Here's the rest of the code you'll need to make and receive calls using FWD. In the FWD Trunk's Outgoing settings, enter fwd for the Trunk Name, and enter the following for the Peer Details using your callerid, username, and password from FWD registration. WARNING: If you cut and paste code from these articles and the code contains quotation marks (such as below), be sure to replace the WordPress-inserted, front and back quotes with normal quotation marks, or you'll send Asterisk into the ozone.
allow=ulaw
auth=md5
callerid="DOE JOHN" <695695>
disallow=all
host=iax2.fwdnet.net
qualify=yes
secret=yourFWDpasswordhere
type=peer
username=695695
For your FWD Incoming Settings, name your User Context iaxfwd and enter the following for the User Details:
allow=ulaw
auth=rsa
context=fwd-in
disallow=all
inkeys=freeworlddialup
type=user
For the Registration String, enter 695695:yourpasswordhere@iax2.fwdnet.net using your actual FWD phone number and password. Now save your settings and click the Red Bar to restart Asterisk.
You'll note in the Incoming Settings above, we're using a special context to manage incoming FWD calls: fwd-in. So we need to add some code to process the incoming FWD calls at the bottom of the extensions_custom.conf file. Do that now before you forget it. Don't forget to plug in your own FWD phone number in each line below and then save your file by clicking the Update button. Here's the code to cut and paste:
[fwd-in]
exten => 695695,1,NoOp(Incoming call for FWD #695695)
exten => 695695,2,Goto(from-internal-custom,111,1)
exten => 695695,3,Hangup
The above code will assure that your incoming FWD calls are processed by the autoattendant we built last week just like your other incoming calls.
Now we're ready to add an Outbound Route for our toll-free calls. Choose AMP->Setup->Outbound Routing. In the Add Route screen, name your new route TollFree. For Dial Patterns, enter the following:
1800NXXXXXX
1822NXXXXXX
1833NXXXXXX
1844NXXXXXX
1855NXXXXXX
1866NXXXXXX
1877NXXXXXX
1888NXXXXXX
800NXXXXXX
822NXXXXXX
833NXXXXXX
844NXXXXXX
855NXXXXXX
866NXXXXXX
877NXXXXXX
888NXXXXXX
The above code covers all of the existing and planned toll-free area codes in the United States and will be triggered whenever you dial 1 and a matching 8XX area code or just 8XX and a 7-digit number. For the primary Trunk Sequence, choose IAX2/fwd. If you also have an SPA-3000 connected to a PSTN (POTS) line, click add and choose SIP/pstn for the second Trunk Sequence. Click Submit Changes to add the new Outbound Route. Use the Up arrow beside the TollFree Outbound Route to move it up your list of routes so that it is just above all of your other long distance routes. Otherwise, these calls would be processed by the first matching long distance route which would mean you'd have to pay for the call with most VoIP providers. Now click the red bar to restart Asterisk. Note that 10-digit 800 calls (i.e. without a 1) using your PSTN line will fail unless you add 1+NXXNXXXXXX to the Outgoing Dial Rules for your SIP/pstn Trunk. Once you get all the changes entered, make a test call to an 800 number after starting the Asterisk Command Line Interface (CLI) which we covered in the last article. Your output on the CLI screen should look something like the following. You'll note that the highlighted text shows the call was placed using the proper Outbound Trunk: IAX2/fwd.
-- Executing Dial("SIP/204-4c88", "IAX2/fwd/*18005551212") in new stack
-- Called fwd/*18005551212
-- Call accepted by 65.39.205.121 (format ulaw)
-- Format for call is ulaw
Implementing Prefix Dialing. There's one more Dial Plan concept you need to get under your belt, and we can demonstrate it by designing an Outbound Route to actually place calls to others with FWD phone numbers. Then, for your homework, we'll leave it to you to design Dial Plans that allow you to place calls to other VoIP providers' customers with whom FWD has peering agreements. There's a long list of them here, and all of these calls are absolutely FREE to anywhere in the world. Another one that's not in the list is using FWD to call BroadVoice numbers: **282 + Area Code + Number. And you also can call FWD numbers from BroadVoice but there may be a charge depending upon your plan: 011+0+393+FWDnumber. Post a comment with a correct dial plan that provides access to all the peering agreement customers' numbers, and you may or may not (more likely) win a prize. We'll only publish correct answers so don't worry about being embarrassed by an incorrect suggestion.
Now, for the missing piece, we need another FWD dial plan that let's you force calls to go out through your FWD trunk. This comes in handy for other providers as well. For example, you might want to dial an 8 prefix to force a call to be sent out to Voxee or 9 to force a call to be sent out through your PSTN (home phone) line. We use 393 (FWD spelled with the phone keys) as a prefix to place FWD calls. All of their numbers have either 5 or 6 digits so the numbers you'd dial would be 393-12345 or 393-123456. What we want the Outbound Route to do is strip off the 393 and then send the call along to our IAX2/fwd trunk for processing. Use AMP->Setup->Outbound Routing and in the Add Route screen, fill in OutFWD as the Route Name. For the Dial Pattern, use 393|XXXX. and don't forget the trailing period. The period tells Asterisk to accept any number (but at least one more) digit following seven initial digits which begin with 393. The 393| expression tells Asterisk to look for a number beginning with 393 and then discard the 393 prefix before sending the call on to the outbound trunk. Note that this dial pattern will avoid interference with local phone numbers beginning with 393 of exactly seven digits ... for those of you that still have local 7-digit dialing. The reason is that you'll have to dial at least 8 digits for this dial plan to be triggered. For the Trunk Sequence, choose IAX2/fwd. Click the Submit Changes button and then move the OutFWD route to the top of your Outbound Routes list. We do this to assure that Asterisk always processes dialed calls beginning with 393 by first examining whether the call can be handled by FWD. Now click the red bar to restart Asterisk. You can try placing a call to yourself by dialing 393 plus your FWD phone number. If you want a test incoming call from elsewhere, go to the Free World Dialup site here and log in with your FWD phone number and password.
Using the samples above, you now should be able to structure a Dial Plan for your Asterisk server which takes maximum advantage of the strong points and cost savings offered by various VoIP providers. For example, our own Asterisk@Home server now has the following Outbound Routes in the following order (from top to bottom):
The real beauty of structuring a Dial Plan with AMP along the lines that we've shown above is that, when a new VoIP provider comes along with a more cost effective plan down the road, you can add a new trunk for that provider and, in under a minute, adjust the outbound routes of your Asterisk system to take maximum advantage of that provider's strong points. Thereafter, every call placed on your system will use the new Dial Plan without any further training of end-users and without any disruption in service. Try that on your $250,000 Nortel or AT&T system. We'll be talking about the last entry in a future column so stay tuned.
Disclaimer: Some of what you've read above might be construed by some as legal advice. It's not. It's merely advice learned the hard way through the school of hard knocks. If it saves you some grief or some money, great! But, if you need or want legal advice, hire a lawyer. Remember, you get what you pay for ... and you haven't paid us a dime.
Finally, we're really sorry if we misled you with our headline. We really didn't mean it. Don't expect to ever hear that from a VoIP provider! And, yes, there are numerous additional articles in this series. You can read all of them by clicking here.
Why Asterisk Matters: It’s Katrina, Stupid!
Over the past eight weeks, we’ve written the better part of a book on how to quickly and effectively deploy Asterisk@Home PBX systems using hardware which many folks and virtually every corporation in America have sitting around gathering dust in a back room. For anyone that’s been reading between the lines, you already know that, with these Asterisk® servers running on low-end Pentium III hardware, you could quickly and inexpensively build and deploy a meshed communications network supporting the needs of tens if not hundreds of thousands of users. What Google did for searches with lots of small, networked, redundant PCs, Asterisk could do for communications using virtually identical (low-cost) hardware. And the typical build time: under an hour! If you’re in the continuity of operations or disaster recovery business, you need to take a hard, careful look at Asterisk and especially Asterisk@Home. Our tutorials will get you started.
Also during the past month, our country endured one of the worst natural disasters in its history, Hurricane Katrina. If you’ve been following the news, you’ve probably reached the same conclusions that we have. There were at least four major shortcomings which arose after Katrina: food, water, security, and communications. We’ll leave the first three to others who are more qualified to solve them. We’re more concerned about the last one. The total absence of a communications solution during this disaster appears to be merely the tip of a very large iceberg: the lack of creative technical talent in our country with the capacity to solve basic technical problems which don’t follow a preordained script especially after a catastrophic event. It seems the key ingredient in everyone’s disaster recovery plan was cellphones. Wrong!
Where were our self-proclaimed technology geniuses after Katrina: Bill Gates, Steve Jobs, Eric Schmidt, Larry Ellison, Michael Dell, Andy Grove, Larry Page, and on and on? Where were our whiz kids when the country desperately needed some technical help? Was there a trade show that we all missed somewhere? Oh, I almost forgot. There was a new iPhone to introduce. Too bad they don’t work without a functioning cellphone tower. Hint to all billionaires: You Can’t Take It With You. And where were all those football blimps when we could have used them for something other than a 15-second panoramic shot above the SuperDome? Is all the glorious talk of WiMax just hot air? Was there no better place to try out this technology than New Orleans these last couple weeks? Come on, folks! The feds, of course, had no problem ordering up the most costly solution on the planet to meet their own communications needs. But what would you expect from an aerospace contractor selling $500 toilet seats?
What became abundantly clear very quickly was that there weren’t any technical geniuses (or any other genius flavors) in FEMA or elsewhere in the federal government, state governments, or local municipalities. Is there only one Rudi Guiliani, Crisis Manager, in the whole damn country? We probably should have anticipated our government’s technical shortcomings after reading how the FBI has been trying to build a unified database for one government agency, itself, FOR TEN YEARS. But wouldn’t you think the same folks that can communicate from Earth to Mars could wire some tin cans together when folks really needed some help getting in touch with their loved ones. As someone who served in the federal government for over 30 years, I’m embarrassed to see how little talent remains and how many bureaucrats and politicians are on the payroll who care about nothing more than themselves and their next photo op. And you wondered why everybody was outsourcing their technology jobs to India!
Some of you are probably snickering saying "but there weren’t any phone lines or cable modems, dummy." Ah, but you can buy a modified Pringles can that will transmit and receive the data equivalent of ten T1 lines for a distance of 10 MILES for under $50. You can even buy them at CompUSA (or you could have stolen them with the police if you were in New Orleans). Or you could build two yourself for under $10! Think what $10,000 could have built. And just think of the media coverage Pringles would have gotten … for free. After all, that’s what seems to matter. Now we need electricity. Fine. You can walk in any Home Depot or Lowe’s and buy a generator with networking power to spare for under $500. Add another $30 for a week’s worth of gasoline and presto: instant network and communications for thousands of people. 200 generators, 400 Pringles cans, and a truckload of clunker PCs and wireless access points comes to a little over $100,000, and there would have been communications to spare. Is there no one left at any level of government that can create a functional, low-tech solution that works without turning to AT&T or Sprint … who was also dead in the water, literally. Guess where Sprint’s major network hub was located? You guessed it: New Orleans, Louisiana. Now there’s a technology breakthrough: build your communications hub below sea level.
Think what $1 million could have built for the people in the hands of a creative technology group of Americans. The only trouble with Microsoft and America’s other technology giants is there are too many overweight millionaires on the payroll that care about little else than the value of their stock portfolios. Here’s something to ponder. When some of those nutty guys in the Middle East decide its time to blow up something new and they choose one of your corporate campuses, what’s your stock going to be worth then? At least put yourself together an Asterisk box so you and your colleagues can conference and whine together.
I’m sleeping better now knowing that New Orleans is going to be rebuilt … whatever it costs. After all, George Bush told the world he used to party there. But what about the poor folks in Mississippi and L.A. That’s Lower Alabama for those of you who’ve never been there. Hopefully someone will come along who still can make a difference in the communities that don’t have and really don’t want another Bourbon Street.
Update. CNN carried the following story about this very subject on Wednesday, October 5, 2005.
Who Is This Guy? Ward Mundy is a retired attorney who spent more than 30 years providing legal and technology assistance to the federal courts in the United States.
HOW-TO Bonanza: 50 Great Summertime Projects for You & Your Mac mini
Well, it’s that time of the year again. The Nerd Vittles staff will be taking a breather for a bit to recharge our batteries. But, in the finest college tradition, we’re leaving you lots of homework. Here’s a listing of what we’ve built thus far in our Mac mini ISP-In-A-Box project. So, while we’re taking it easy, pick out a few projects you haven’t tried and knock yourself out. Any Mac running at least Mac OS X v10.3 aka Panther is a suitable candidate for these projects. Many also have been tested with Tiger. Visit Tiger Vittles for the Tiger update notes to many of these tutorials. Also be sure to check out our WHERE-TO Bonanza: 50 Great Summertime Web Sites for You & Your Mac mini.
And here are some of our other tutorials to keep you and your Mac mini busy:
And finally we and our friends at MacSurfer and Engadget and Gizmodo and MacOSXhints and MacDevCenter and Entropy. Give ’em a whirl!
Last but not least, for PC users thinking about making the Switch to a Mac, read our article and this one. Then buy David Pogue’s book, and you’ll have everything you need. It really is a No Brainer!
We’ve gotten lots of terrific feedback and some great tips from many of you since we first began putting this list together in early spring, but we’d love to hear from the shy types as well. What did you like? What can we improve? What can we cover which would be of interest to you in the coming months? If you have a favorite open source application or a must-have tool that we’ve overlooked thus far, don’t be timid. Drop us a note or just leave a comment below. We do this for fun, not as a business fortunately, but we strongly believe that Apple should be doing something similar as part of their business plan. We, their loyal customers, deserve nothing less. Thanks for visiting NerdVittles.com. And do tell your friends about us. Finally, take a look at our Tiger Vittles site for the latest happenings with Mac OS X Tiger.
Who Is This Guy? Ward Mundy, the author of the ISP-In-A-Box series, is a retired attorney who spent more than 30 years providing legal and technology assistance to the federal courts in the United States.
Putting the Pedal to the Metal with Asterisk@Home
Peaceful Coexistence. This is the fifth in our Asterisk@Home series. Read the first four parts (I, II, III and IV), and then this one will be a breeze. Now that we have our Asterisk® server up and running and our Sipura SPA-3000 configured, you've probably noticed a few quirks. Specifically, both Asterisk and the Sipura device are designed to control some of the same functions such as call forwarding, call forwarding on busy, call waiting, and do not disturb. Where possible, we want the Asterisk box to control these functions because you may have more trunks than your Ma Bell PSTN line, and the Sipura box is only designed to manage your incoming PSTN trunk. That would mean your SIP and IAX2 trunks would be left without support for call forwarding, call waiting, and do not disturb which isn't what we want. There's a simple way to fix this. Point a web browser at your Sipura device's IP address, click on Admin Login and then Advanced. Now click the Regional tab and scroll down to the Vertical Service Activation Codes section. Then delete the following entries: Blind Transfer Code, Cfwd All Act Code, Cfwd All Deact Code, Cfwd Busy Act Code, Cfwd Busy Deact Code, CW Per Call Act Code, CW Per Call Deact Code, Block ANC Act Code, DND Act Code, DND Deact Code, and Conference Act Code. Now save your changes by clicking the Submit All Changes Button at the bottom of the form. Your SPA-3000 will reboot, and you're all set. Now the following functions will work through Asterisk from any extension on your system:
Wading into the Weeds. As best we could, we've tried to keep the really technical parts of Asterisk shrouded in secrecy because there's really no reason to fiddle with most of this stuff, particularly if you don't really understand what you're doing. There are times, however, when things don't work or lines ring busy when they shouldn't, and you at least need to know where to look to find the information that others (not me!) will need to help you with your problem. The Asterisk forums at SourceForge and Voxilla are tremendous resources when something comes unglued, and you'll also learn a lot just by reading some of the issues others have faced. If you're new to forums, there's one cardinal rule you need to observe. Search for an existing answer to your problem first. If you don't find it, then post a question. This will save you the embarrassment of being flamed for repeating a question that already has been answered.
So where do you look to see what's going on with your system. If you're getting a fast busy when you try to place calls or, if people calling you are getting a fast busy when they dial your number, the first thing to check is whether your connections to your VoIP providers have been successfully established. Fire up your web browser and point it at your Asterisk server's IP address. Then choose AMP->Maintenance and click on Asterisk Info. The sections we're primarily interested in are Sip Peers and IAX2 Sip Registry. All of your connections to BroadVoice, Voxee, and other VoIP providers will have an entry here assuming you've created a Trunk for each of them. In the far right column of each entry should be an entry which says "Registered." If it says something else, you've got a registration problem which typically is caused by your providing an incorrect account name and/or password, or your VoIP provider's service may be down. If you're using a Sipura SPA-3000 to manage your PSTN (home phone) line, then you'll need to point your web browser at the IP address of your SPA-3000, click Admin login, then Advanced, and choose the Info tab on the far left. Check the Registration State in both the Line 1 Status section and the PSTN Line Status section. Both of these should also show Registered. If not, review the setup steps for the SPA-3000 in our previous articles. You've missed a step or a password somewhere. The next place to turn for information is Asterisk's debug log. You can print out the last 2,000 lines of the file by going to AMP->Maintenance->Log Files and clicking on Asterisk Full debug log. Or, if you're a glutton for punishment, go to a command prompt, change to /var/log/asterisk, and print out the full file. Yep, that's the name of the file: full.
Asterisk also has an interactive mode called the Command Line Interface (CLI) so that you can actually watch what's happening when calls are placed and received. This works best if you connect to your Asterisk server through SSH from a Mac or PC. SSH comes with every Mac and the syntax is simple: ssh root@AsteriskIPaddress. If you're still chained to Microsoft, download Putty from the Mother Country, and you can do the same thing using a Windows machine. Once you're logged in as root, issue the following command: asterisk -r. Quit ends your Asterisk CLI session, and exit logs you out of your SSH session. Now issue the command: set verbose 5 to get maximum information. Place a call and watch what happens. HELP will list all of the various commands which are available. Be careful! Some of them will really screw up your system if you don't know what you're doing. Save dialplan, for example, sounds fairly innocuous but it permanently deletes your existing dialplan with no backup! If you have problems with SIP connections, review the SIP commands and turn debug on for a particular IP address or channel. If you have Zap, IAX2, or PRI connection issues, you can do something similar for the addresses and channels of these interfaces. Before you use any of the commands in CLI, give a careful read to the detailed explanations of the commands which can be found at this link on VOIP-Info.org.
System Backups. If you do nothing else with your Asterisk server, at least configure the system to make regular backups and download at least one backup to another computer. To download a backup to another computer, go to the remote computer and use a web browser to access AMP on your Asterisk server. Choose, Maintenance, then Backup. Now Ctrl-Click (Mac) or Right-Click (PC) on Download Backup and save it to a safe place on your local machine. To configure regular backups on the Asterisk server itself (remember that these don't help you if you have a disk crash!), go to AMP->Setup->Backup and Restore and choose Add Backup Schedule. Stop here for a moment and go to your Asterisk machine, log in as root, and change to the following directory: cd /var/lib/asterisk. Make a new directory: mkdir backups. Change the owner of the directory: chown asterisk backups. Change the group ownership of the directory: chgrp asterisk backups. Now return to AMP's Add Backup Schedule screen. Name your backup schedule Daily. Click Yes for all the buttons. Leave Follow Schedule Below selected. Click 2 in both the hour and minute columns, and make sure the other three entries each have All selected. This means you'll get a backup every day at 2:02 am in your /var/lib/asterisk/backups/daily folder. Click Submit Changes to activate the backup schedule. Don't forget to check the directory from time to time and remove some of the older backups. Periodically, make an external backup to a remote machine just be on the safe side. Now you'll sleep better.
Choosing VoIP Providers. One of the beauties of having your own PBX is being able to easily add and change VoIP providers. Because Voice Over IP technology is still experiencing some growing pains, putting all your eggs in one basket for IP telephony is a very bad idea. A number of readers have written asking for specific provider recommendations beyond those outlined in some of these articles. We're always shopping for the most reliable and least costly solutions just as you are and THINGS CHANGE. BroadVoice, for example, which has been one of our favorites and is especially flexible for those with Asterisk servers is having some internal problems apparently. Three of the company's founders including the CEO, his wife, and their top guru all abruptly left BroadVoice last month ... about the same time BroadVoice reportedly implemented some shady retroactive billing practices. Read this thread on Voxilla for more information. You really can't beat Voxee for pricing on most outgoing calls, but they don't provide incoming phone numbers (yet anyway). For a really good selection of incoming numbers and reliable service, we like Teliax but, unlike most in the VoIP industry, they charge for incoming and toll-free calls (2¢ a minute) with minimum one minute billing plus $5/month per phone number/DID. Don't expect them to be around too long. They're just too pricey. Secret clue for Teliax: folks aren't drawn to the VoIP solution just to find a way to pay more for their phone service than they're currently paying Ma Bell. Sorry boys but the cellphone pricing model just isn't going to fly in the VoIP arena. A footnote on Teliax: One of the extremely cool things you can do with a Teliax IAX2 connection to your server is spoof your CallerID number. If you want to have a little fun, put on a Barry White album and then call your buddy late one night after setting your CallerIDNumber to his girlfriend's home phone number ... and then lock all your doors and windows.
Another top-rated provider is VoicePulse. They offer all-you-can-eat plans starting at $14.95 (these plans use a locked terminal adapter!) and pay-as-you-go service called VoicePulse Connect with local numbers/DIDs priced at $11 per month with unlimited free incoming calls. That's just about double the price of a comparable BYOD-Lite account with BroadVoice. Others have recommended getting a FWD account and using it with a free DID from Washington state using IPkall. This gives you free incoming calls albeit to a Washington state telephone number. Our experience with FWD has been just short of terrible. And our one inviolate rule for incoming calls is your phone needs to ring when someone calls. This is simply not negotiable in our book. Our particular FWD account failed to register about 90% of the time during our testing these past few weeks so we've pretty much written off FWD. The good news is that just because FWD was disappointing doesn't mean you can't use an IPkall number with Asterisk to get free incoming calls from a real Washington state PSTN number. In fact, your number will be just outside Bill Gates' hometown. For this to work, you'll need a fully qualified domain for your Asterisk server as we previously discussed. Then you'll need to make certain that your firewall redirects incoming UDP traffic on ports 5060 through 5082 and 10000 through 20000 to the internal IP address of your Asterisk server. Finally create an entry in the [from-internal-custom] context of your extensions_custom.conf file that looks like this substituting one of your phone extensions for 204 in lines 1 and 2. Why not just use an actual extension number with ipkall.com? Because this way you can control incoming calls from that specific VoIP provider without divulging any information about the actual extensions in your Asterisk system.
exten => ipkall,1,dial(SIP/204,20,m)
exten => ipkall,2,VoiceMail(204@default)
exten => ipkall,3,Hangup
You'll also need to make sure you have two lines in the [General] context of your sip.conf file. The first line should contain the actual public IP address of your Asterisk server. If you don't know it, click here. The second line should be the private subnet of your internal network, typically 192.168.0.0 or 192.168.1.0. The subnet mask (255.255.255.0) should be correct for most of you. With these settings, you shouldn't have to turn on NAT for your individual phone instruments. Just remember to update your externip address whenever your ISP changes your dynamic IP address if that's what you have. The third line is a little fix (from the Voxilla forums) that solves a nagging problem with incoming BroadVoice calls not actually ringing at the caller's end. Just thought we'd fix it while we were here.
externip = 24.99.153.83
localnet=192.168.0.0/255.255.255.0
progressinband=yes
Restart Asterisk and then go to ipkall.com and sign up for your free telephone number. For your SIP phone number, use ipkall. For your SIP Proxy, use the fully qualified domain name for your Asterisk server. Use your legitimate email address to assure that you receive your signup information. Think up a four digit PIN to access your IPkall account in the future. And change the seconds to voicemail to a number such as 90 so that it never gets used. Now sit back and wait for your signup email which will have your new phone number in area code 360. Within an hour, anyone will be able to dial your 360 phone number and connect through your Asterisk server to the extension you specified above. It doesn't get much easier (or cheaper!) than that. Ours was operational in just under 60 minutes. If you ever want to disable the number temporarily or permanently, all you have to do is comment out the three ipkall lines in your extensions_custom.conf file with a leading semicolon and restart Asterisk.
Here's a good list of all the VoIP providers out there if you want to explore your options further.
So which providers do we use? Well, it's a combination of a $49 a month BellSouth PSTN line and BroadVoice's $9.95 in-state SIP calling plan with free incoming calls to handle all incoming calls as well as outgoing local and in-state calls (which make up about 90% of our usage) and Voxee's pay-as-you-go, penny-a-minute service for U.S. long distance calls. Guess which one we're about to disconnect? Then we have ipKall and Teliax's pay-as-you-go service for additional redundancy. If all of these services fail, telephones will be the least of our worries. We don't do much international calling (other than to some of you) so that wasn't a big issue for us. Your mileage may vary depending upon your calling patterns. Based upon the current allegations floating around, BroadVoice would be our very last choice if heavy international calling (even to girlfriends or family) were a priority. Here's why. Too bad.
Building Autoattendants and Interactive Voice Response (IVR) Systems. Entire books have been written and literally hundreds of multi-thousand dollar telephony courses can be purchased to learn about good design and implementation techniques for autoattendants and IVR systems. Our discussion is going to focus on the technical aspects of implementing such a system with Asterisk@Home. But, if you want to keep your friends and your customers, you really should learn something about IVR design before implementing your own version of IVR Hell. Here's a free site with loads of good tips about IVR design. A little additional time with Google will work wonders, too.
The folks that brought us the Asterisk Management Portal (AMP) got it almost right with their Digital Receptionist. You access it by going to AMP->Setup->Digital Receptionist. The drill for today goes something like this. First, sketch out on a piece of paper what options you want to offer your callers. Whether you like it or not, callers will have the option of keying in an actual extension number to dial or pressing the pound key to access your directory lookup service. We configured this in Part II. In any case, you'll probably want to tell callers about these two options plus any others you want to add. Second, we'll record the actual Main Menu for your new autoattendant. Third, we'll move it to its permanent home on your Asterisk server. And then we'll use AMP to tweak our extensions_custom config file. And finally, we'll use AMP's Digital Receptionist to do the heavy lifting of building the actual IVR code for us. Just for fun, play along and build the sample below. Then you can change it to your heart's content.
As we mentioned, the AMP folks got it just about right, but not quite. Just about everything works except actually naming and placing your voice prompt files (such as For Bob, press 1; for Betty, press 2, etc.) in the proper locations. The AMP solution also uses .wav files which are roughly 50 times the size of equivalent .gsm files. So we're going to do things a little differently, but the result will be the same. It does mean you have to endure a couple of error messages from AMP, but who cares if it works when we're done. Right? So we begin by thinking through what we want our home menu choices to be when someone calls. We decide that callers should be able to press 1 to ring Bob's phone, 2 to ring Bob's cellphone, or 3 to leave a voicemail message. Pressing 4 will give password-protected access to an outside line, and pressing 5 will play back today's weather forecast. We built these last two applications previously but we'll modify them a bit to support AMP's IVR design plan.
In our last article, we covered Recording Voice Prompts with Asterisk. If you've forgotten how, go back and read that section again. Now that you're up to speed, pick up a phone and dial 456. Then say "Welcome to Bob's Place. Press 1 for Bob, 2 for Bob's cellphone, 3 to leave a message, 4 to access an outside line, or 5 for today's local weather forecast. You can also access Bob's directory by pressing the pound key." When you finish speaking, press the pound key (#) to play back and then save your recording into the /tmp folder with a filename of asterisk-recording.gsm. If you make a mistake, you just repeat the drill which will overwrite the previous file. Now go to your Asterisk terminal and login as root. Now move your recording to it's final home and delete the corresponding .wav file if it exists:
mv /tmp/asterisk-recording.gsm /var/lib/asterisk/sounds/custom/aa_1.gsm
rm /var/lib/asterisk/sounds/custom/aa_1.wav
Now go back to your Mac or PC and bring up AMP using your web browser. Before we get to the Digital Receptionist, we need to make a couple additions to our extensions_custom.conf file. So click on the Maintenance tab, click Config Edit, and then click extensions_custom.conf. Insert the following code at the bottom of the file substituting your cell phone number in the last context. Then save the file by clicking the Update button.
[custom-weather]
exten => s,1,Answer
exten => s,2,AGI(weather.agi)
exten => s,3,Hangup
[custom-callout]
exten => s,1,Authenticate(1234588)
exten => s,2,Background(pls-wait-connect-call)
exten => s,3,DISA(no-password|from-internal)
[custom-cellphone]
exten => s,1,Dial(SIP/6781234567@bv,60,r)
exten => s,2,Hangup
Now go to AMP->Setup->Digital Receptionist and click Create a New Voice Menu. Provide your extension number when prompted. Ignore Step 1 and Step 2 and the error message in the Record Menu. Name your menu "Main Menu" and give a brief summary of what it is -- "Main Asterisk Autoattendant." In the Options for Menu screen, leave the context as Default, and enter 5 for the number of options. When you click Continue, you'll be prompted to actually enter your choices for the five options. Enter the following:
If you want a default AutoAttendant option for those that don't press any buttons, then just add a final menu selection and change it's number from 6 to the letter t (for timeout) with whatever option you want to implement for that choice.
Now click the Continue button to save your changes and then the red bar to reload Asterisk. Then go to AMP->Setup->Incoming Calls and choose Digital Receptionist->Main Menu for both your day time and evening call answering choice. Save your changes and click the red button to restart Asterisk. You now can test your autoattendant by calling your home or BroadVoice number.
For those that also want to control your incoming PSTN line from your Sipura SPA-3000, replace your existing exten=>99 code in extensions_custom.conf with the following. WARNING: If you cut and paste code from these articles and the code contains quotation marks (such as below), be sure to replace the WordPress-inserted, front and back quotes with normal quotation marks, or you’ll send Asterisk into the ozone.
exten => 99,1,GotoIf($["${CALLERIDNUM:0:2}" = "00"]?2:3)
exten => 99,2,SetCIDNum(${CALLERIDNUM:2})
exten => 99,3,SetMusicOnHold(default)
exten => 99,4,Goto(aa_1,s,1)
The last line is the important one. There's a context for each autoattendant, and they're numbered starting with 1. AMP->Digital Receptionist provides the actual names (after the word "Menu").
The Stealth AutoAttendant. For home use especially, you may prefer something a bit less intimidating for callers. Last week, we built a welcome message which said something like "Welcome to the Rockefellers. Someone will be right with you." We stored the welcome message in the custom sounds folder. This can be used as kind of a silent autoattendant. In short, for regular callers, they just hear music on hold while calls are transferred to the extensions you designate. For family that know it's really an autoattendant, you can dial certain codes to make Asterisk jump through certain hoops so long as you start dialing immediately after the welcome message begins playing. Here's how we've done it for our home. In the [from-internal-custom] context of the extensions_custom.conf file, add an extension which will trigger the AutoAttendant welcome message:
exten => 111,1,Zapateller(answer|nocallerid)
exten => 111,2,Wait(1)
exten => 111,3,SetMusicOnHold(default)
exten => 111,4,GotoIf($["${CALLERIDNUM}" = ""]?who-r-u,s,1)
exten => 111,5,GotoIf($["foo${CALLERIDNUM}" = "foo"]?who-r-u,s,1)
exten => 111,6,GotoIf($["${CALLERIDNAME:0:9}" = "Anonymous"]?who-r-u,s,1)
exten => 111,7,GotoIf($["${CALLERIDNAME:0:7}" = "Unknown"]?who-r-u,s,1)
exten => 111,8,GotoIf($["${CALLERIDNUM:0:7}" = "Private"]?who-r-u,s,1)
exten => 111,9,GotoIf($["${CALLERIDNAME:0:7}" = "Private"]?who-r-u,s,1)
exten => 111,10,GotoIf($["${CALLERIDNUM:0:10}" = "Restricted"]?who-r-u,s,1)
exten => 111,11,GotoIf($["${CALLERIDNAME:0:11}" = "OUT OF AREA"]?who-r-u,s,1)
exten => 111,12,GotoIf($["${CALLERIDNUM:0:4}" = "PSTN"]?who-r-u,s,1)
exten => 111,13,GotoIf($["${CALLERIDNAME:0:4}" = "PSTN"]?who-r-u,s,1)
exten => 111,14,DigitTimeout,3
exten => 111,15,ResponseTimeout,3
exten => 111,16,Background(custom/welcome)
exten => 0,1,Background(pls-hold-while-try)
exten => 0,2,Dial(local/200@from-internal,20,m)
exten => 0,3,VoiceMail(200@default)
exten => 0,4,Hangup
exten => 1,1,Background(pls-hold-while-try)
exten => 1,2,Dial(local/222@from-internal,20,m)
exten => 1,3,VoiceMail(204@default)
exten => 1,4,Hangup
exten => 4,1,Authenticate(1234588)
exten => 4,2,Background(pls-wait-connect-call)
exten => 4,3,DISA(no-password|from-internal)
exten => 2XX,1,Background(pls-hold-while-try)
exten => 2XX,2,Dial(local/${EXTEN}@from-internal,20,m)
exten => 2XX,3,VoiceMail(${EXTEN}@default)
exten => 2XX,4,Hangup
exten => 2XX,103,Voicemail(${EXTEN}@default)
exten => 2XX,104,Hangup
exten => t,1,Background(pls-hold-while-try)
exten => t,2,Dial(local/204@from-internal,20,m)
exten => t,3,VoiceMail(204@default)
exten => t,4,Hangup
exten => i,1,Playback(wrong-try-again-smarty)
exten => i,2,Goto(111,16)
At the bottom of the extensions_custom.conf file, add the two following contexts:
[who-r-u]
exten => s,1,Background(privacy-unident)
exten => s,2,Background(vm-rec-name)
exten => s,3,Wait(2)
exten => s,4,Record(/tmp/asterisk-stranger:gsm|5|15)
exten => s,5,Background(pls-hold-while-try)
exten => s,6,Goto(ext-park,70,1)
exten => s,7,VoiceMail(200@default)
exten => s,8,Playback(Goodbye)
exten => s,9,Hangup
[ext-park]
exten => 70,1,Answer
exten => 70,2,SetMusicOnHold(default)
exten => 70,3,ParkAndAnnounce(asterisk-friend:/tmp/asterisk-stranger:vm-isonphone:at-following-number:PARKED|40|local/222@from-internal|who-r-u,s,7)
exten => 70,4,Hangup
Now create an additional extension on your Asterisk server to process incoming calls, e.g. 205. Using a softphone, connect to that extension and then place a call to *72111 which tells Asterisk to forward incoming calls on this extension 205 to extension 111. You never have to touch extension 205 again. Now using AMP->Setup->Incoming Calls, send incoming calls to extension 205. We have to jump through the double extension hoop (205 and then 111) because AMP only recognizes extensions created in AMP and not custom extensions which you've built in extensions_custom.conf. If you want to extend this to also manage your SPA-3000 incoming PSTN calls, then you'll need to modify your exten=>99 block of code from last week to call extension 205 (only!).
Let's cover a little of what the code above actually does so that you can make changes and enhancements if you want to. The exten=>111 section of the code actually processes the incoming call to this extension. Zapateller is a special information tone which will be played to callers who have CallerID disabled. It also causes most automated telemarketing systems to hang up and place your phone number in their Do-Not-Call database. Others won't hear the tone sequence at all. Lines 4 through 11 attempt to identify all the various messages which are sent when someone has CallerID disabled. Lines 12 and 13 handle incoming PSTN calls with no CallerID from your SPA-3000. If there's any match, these callers will be prompted to say their name after which their call will be parked automatically on an extension (beginning with 71). Asterisk figures out the next empty parking space so you don't have to worry about it. You do need to modify the [ext-park] context code (line 3) to specify the extension, extensions, or ring group where you want this incoming call announced. We use 222 as a ring group for our entire house. So our phones will ring, we answer, and Asterisk says "Asterisk is your friend. John Doe is on the phone at the following number: 71." John Doe is whatever name the caller recorded above in the caller's own voice. We then hang up the phone, pick it up again, and dial 71 to connect to John Doe, who is listening to music while waiting. If you don't want to talk to John Doe, then don't dial 71 and sooner or later John Doe will get tired of the elevator music and hang up. Actually exten=>s,7 specifies which voicemail account will be used in the event of no parked call answer within 40 seconds. Be sure to change it to one of your working voicemail extensions.
For incoming callers with CallerID, the system will play "Welcome to the Rockefellers. Please hold while we connect your call." Music on hold plays and the extension, extensions, or ring group specified in exten=>t,2 (we use 204 for our cordless phones) will ring assuming the caller presses no buttons. If there's no answer in 20 seconds, exten=>t,3 sends them to voicemail for extension 204. You can change these extensions to suit your needs. The exten=>2XX code block allows callers (who know our little secret) to actually dial a 200-299 extension within our home. If your extensions are numbered differently, just modify 2XX to match them. The exten=>0 code rings our office if someone presses 0. The exten=>1 code rings our ring group (all phones) if someone presses 1. And the exten=>4 code prompts for a password (1234588) and then gives outside dial tone to place a call through BroadVoice or the PSTN line or our other VoIP providers. If the caller enters any other number, the exten=>i code block plays a "try again, dummy" message.
Special Filters for Special People. Finally, if you're like most mere mortals, there are some "special" callers with CallerID enabled that you'd just prefer to never speak to again. Remember, if someone turns off CallerID, we'll catch them in our [who-r-u] tangled web. But for old girlfriends, ex-wives, and former stock brokers, we need some special processing. Asterisk handles this with ease in a couple of different ways. We'll cover the blacklist database in a future article but, for now, just add lines like the following at the top of the exten=>111 code above substituting the actual area code and numbers of the people you want to block:
exten => 111/2565551212,1,Congestion
exten => 111/6785551212,1,Congestion
exten => 111/3215551212,1,Congestion
Why Use Asterisk@Home and Not Roll Your Own? One of our favorite pundits on Voxilla summed it up this way:
After using Asterisk@Home for three months, we haven't found a single thing we couldn't do that someone with a roll-your-own version of Asterisk could. Asterisk@Home is not crippled in any way. In fact, it's just the opposite. It's not only full-blown Asterisk but it's also AMP (Asterisk Management Panel, think of it as PHPmyAdmin for Asterisk) plus functioning music on hold (just try to get it working on a vanilla Linux box!) plus voice support for any speech application you can dream up plus a Flash Operator Panel plus ring groups plus calling queues plus conferencing plus DID routing plus SQL-compliant Call Detail Reporting plus SugarCRM contact management with integrated dialing plus SpanDSP fax support plus Microsoft Outlook TAPI integration with a Microsoft TAPI gateway (that works!) plus Apache, PHP, SSH, SFTP, SendMail, Web Mail, and MySQL integration plus Cisco XML support (to load your contact management info into your Cisco IP phones) plus xPL for Home Automation plus H.323 NetMeeting support plus turnkey support for SIP, IAX2, auto-configuring ZAP channels, and ENUM.
What we have found is that we can implement solutions for clients in a couple of minutes or hours that would have taken weeks or months to learn to do had we gone the roll-your-own route. That includes building IVR and AutoAttendant solutions literally in minutes, supporting five or more VoIP providers and numerous departments each with numerous phones of all flavors, implementing complex dialing rules, remote phone access, voicemail with email and SMS alerts, and out-of-the-box support for virtually every 3-digit calling feature provided by local Baby Bells.
Are there folks that want to master calling plans, extension syntax, contexts, Linux, Apache, SendMail, MySQL, PHPmyAdmin, WebMin, Web Mail, Asterisk and all its add-on's plus Linux dependency hell? Absolutely. But Asterisk@Home doesn't preclude your using anything you learn. It just gives you an incredible, leveraged head start. Asterisk@Home is a deceptive moniker. It's not stripped-down, crippled, or condensed in any way. Quite the contrary, it's Asterisk on Steroids, plain and simple. Worked great for Major League Baseball, didn't it?
Amen, Brother! Well, we've covered a lot of territory today. It ought to be sufficient to keep you busy while we think of something else to write about. Enjoy!
Some Recent Nerd Vittles Articles of Interest...
Turbocharging Your Asterisk@Home PBX
This is the fourth in our series of articles on the Asterisk® PBX. You'll be much the wiser and less frustrated reading this if you begin with Part I. Then read Part II. And then read Part III. Then return here.
30 minutes and 2 cents. That's how long it took to configure a backup VoIP provider and the total cost of testing seven outbound calls in the U.S. while configuring last week's CallMe application to use the backup provider. Our choice was Voxee.com, and nobody could make it much easier or charge much less. Outgoing calls within the U.S. or to Canada, London, Paris, and most of Germany are about a penny a minute, and U.S. calls are billed in 6 second increments. China costs 2¢ and most of Mexico is under a nickel. Any place with an island in the name ... well, it's almost cheaper to go there. But that's true with all providers. It costs $5 through PayPal to seed your Voxee account with call money. After that, it's pay as you go. There are no setup fees. In fact, if you opted for the BroadVoice BYOD-Lite plan which gives you free incoming calls and 100 minutes of outgoing calls a month, then Voxee is the perfect complement. You'll pay a penny a minute for most calls with increment rounding in the U.S. while BroadVoice charges 4¢ a minute in the U.S. with full minute rounding. The other good news is that Voxee supports Asterisk's native protocol IAX2 which makes configuring telephones at remote sites a breeze. Unlike SIP, there are no NAT headaches with IAX2. All you need is a phone that talks IAX. For more information, here's a great article. There's even an adapter to plug in POTS phones using IAX. In short, if you want to skip some SIP headaches, IAX is worth a careful look at both the telephone instrument and the service provider levels.
Adding a Voxee Trunk. To add a Voxee trunk using Asterisk@Home, run AMP, choose Setup->Trunks->Add IAX2 Trunk. Maximum channels only matters if you want to restrict how many simultaneous outgoing calls through Voxee can be made. Otherwise, skip down to the middle of the form and under Outgoing Settings, name your trunk voxee. For the Peer Details, insert the following using your username and password assigned when you registered for an account:
type=friend
host=66.246.246.52
username=some number assigned by Voxee goes here
secret=the password you chose at Voxee goes here
Now drop down to the Registration field and plug in the following: YourAcctNoHere:YourVoxeePasswordHere@66.246.246.52. Save your settings and click the red bar.
Adding a Voxee Outbound Dialing Route. The final step is to add an outbound dialing route for your Voxee calls. The easiest way to set this up is to use a dialing prefix for Voxee calls, e.g. 9. So click Outbound Routing within AMP Setup. In the Add Route screen, name your new route OutVoxee. Whether to have a route password is, of course, up to you. For the dial strings, we recommend the following which lets you dial U.S. and foreign Voxee calls by dialing 9, 1, area code and number or 9, 011, country code, and number. The 9's will be stripped off before the dial string is sent to Asterisk to place the call. That's what the "9|" syntax means.
9|011.
9|1NXXNXXXXXX
Now click on the Trunk Sequence pull-down and choose voxee for your outbound trunk. Click the Submit Changes button and then the red bar to update Asterisk. The only gotcha here is to be sure you dial a 9 and a 1 plus area code and number for U.S. calls. BroadVoice doesn't require a 1, but Voxee does. If you want to use the callme application we built last week, the correct syntax to have Asterisk place the call through Voxee is http://asterisk.dyndns.org/callme.php?number=iax2/voxee/16781234567 where asterisk.dyndns.org is the fully qualified domain name for your Asterisk server and 6781234567 is the phone number to be sent dialtone. For early readers of last week's column, please note that a code change was made on Saturday to avoid a potential security problem. It's explained in the comments section of last week's article if you want more details. Otherwise, just download the callme.php file again and replace your old version.
Adding a Voicemail Address. We all are accustomed to having email addresses. So what's next: Voicemail Addresses, of course. Yes, with most SIP phones, you now can make calls to addresses that look just like your existing email address: homer@thesimpsons.com. If you've followed our tutorials thus far and have set up a fully-qualified domain name with dyndns.org or if you have your own domain pointing to your Asterisk server, then it's a two-minute operation to add voicemail addressing. Using AMP, click on the Maintenance tab and open extensions_custom.conf. Now add the following lines to the [from-internal-custom] context of the file substituting your real name for homer and adding an actual extension number on your Asterisk PBX for 1000:
exten => homer,1,dial(SIP/1000,20,m)
exten => home,2,VoiceMail(u1000@default)
Once you save your changes and restart Asterisk, anyone can call you from any IP telephone or softphone by "dialing" sip:homer@asterisk.dyndns.org where homer is the name you plugged in to extensions_custom.conf and asterisk.dyndns.org is the fully-qualified domain name pointing to your Asterisk server. You can add as many additional accounts as desired. It's equally simple to match address names to the locations of IP phone extensions in your home or office: kitchen, office, playroom, pool, or whatever else you might need. And your friends can sign up for a SIPphone account or a Free World Dialup (FWD) account to make the calls ... which are free! Many phones don't even require the sip: prefix just as most web browsers no longer force you to type http://. For those that want to make your new voicemail address match your email address, here's a link that will tell you what's necessary to make it happen with your ISP.
Sipura SPA-3000. There is no finer piece of telephony equipment you can purchase than the SPA-3000. As we mentioned last week (but it's worth repeating), 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. And finally, 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. With some careful shopping, you can purchase an "unlocked" SPA-3000 for just under $100. Unlocked means you can access the administrator setup features of the unit. You need this capability to use the device with an Asterisk PBX.
Buying the SPA-3000 it turns out is the easy part. Getting it configured properly to work with Asterisk can be a nightmare, and we're not quite sure why. Actually, we are pretty sure why. Sipura is one of those fine companies that thinks only dealers can read so you'll have a hell of a time finding even a user's guide for the product. For those of you that can read, here it is. Another part of the problem is that Asterisk is an incredibly complex toolbox which can be set up in many, many different ways. So providing HOW-TO instructions to configure an SPA-3000 is a daunting task. We're assuming you are using Asterisk@Home and that you've configured Asterisk@Home according to our tutorials. If not, you may be in for a rough ride with the SPA-3000, but we'll try to provide some explanations as we go so that you can get back on track if your configuration differs from ours. We're also going to stick with Plain English rather than telephony jargon so, if you're a telephone geek or a purist, don't go postal. Just bear with us.
Overview. There are four parts to the SPA-3000 configuration drill today. First, we'll set up the SPA-3000 hardware device and get everything plugged in correctly. Next we'll set up some Asterisk extensions to support the SPA-3000. Then we'll use a web browser to configure the SPA-3000 device to work with your Asterisk@Home server. And finally we'll add some bells and whistles to Asterisk to show off a little bit. When we're finished, your Asterisk server should be able to answer calls from both BroadVoice and your home/office Ma Bell phone line. And, you should be able to place calls through BroadVoice or your Ma Bell phone line using the phone or wireless phone set connected to the SPA-3000. As we did with the Asterisk server, we're assuming you have placed the SPA-3000 behind a rock-solid firewall. Otherwise, your phone bill may include thousands of dollars of calls to the Queen Mary that you didn't make.
SPA-3000 Hardware Interfaces. So let's begin with the hardware basics. The SPA-3000 is designed to plug in to four different things:
Once you get all the wires connected, plug in the SPA-3000. Or, if you plugged it in before connecting it to your LAN, unplug it, count to 10, and plug it back in. Once all the lights stop blinking, pick up the telephone you connected to the Phone jack. You should hear a dial tone. If not, go back to square one. Otherwise, press **** which will access the Sipura configuration menu. Once Egor stops talking, press 110# to retrieve the IP address assigned to your unit. Write it down and hang up the phone. Rather than hard-code an IP address into the SPA-3000, our preference is to tell your router to reserve the IP address already assigned so that it is reassigned to the SPA-3000 whenever you turn it off and back on. We did the same thing with your Asterisk box in Part II so reread the IP Configuration of Asterisk section of that tutorial if you need a refresher.
Configuring Asterisk to Support the SPA-3000. Before configuring the SPA-3000, let's turn our attention to Asterisk for a bit. You'll need three extensions to support the SPA-3000: one for incoming calls, one for outgoing calls, and one to handle the telephone instrument(s) you plugged into the Phone jack above. From your web browser, access AMP->Setup by going to the IP address of your Asterisk box. When prompted, type in maint for your username and whatever password you assigned to AMP previously. The trick to adding these three extensions is that you have to do everything twice because you can't enter all of the data for each extension in the original form. Aside from that, it's pretty straight-forward. You can obviously use any extension numbers you like, but using ours may make it simpler when we start configuring the SPA-3000. So here goes.
SPA-3000 Incoming Extension. Click Extensions and fill out the Add an Extension form as follows:
Click the Add Extension button to save your work and then the red bar to restart Asterisk. In the right column, click on PSTN Incoming - Extension 99 that you just added. Make sure your form looks like the following. Then save your changes and click the red bar to restart Asterisk.
Now click Submit Changes and then the red bar to update Asterisk. One down. Two to go.
SPA-3000 Outgoing Extension. Click Extensions and fill out the Add an Extension form as follows:
Click the Add Extension button to save your work and then the red bar to restart Asterisk. In the right column, click on PSTN - Extension 199 that you just added. Make sure your form looks like the following. Then save your changes and click the red bar to restart Asterisk.
Now click Submit Changes and then the red bar to update Asterisk. Two down. One to go.
SPA-3000 Phone Extension. Click Extensions and fill out the Add an Extension form as follows:
Click the Add Extension button to save your work and then the red bar to restart Asterisk. In the right column, click on Wireless - Extension 204 that you just added. Make sure your form looks like the following. Then save your changes and click the red bar to restart Asterisk.
Click Submit Changes and then the red bar to update Asterisk. Done. Now we're finally ready to configure the SPA-3000.
Configuring Your SPA-3000 for Asterisk. Before we get down to the nitty gritty, let's chat about what you'll have in place when we get finished. Our design plan is to support incoming calls from both your BroadVoice VoIP number and your POTS (aka Ma Bell or PSTN) number that you've had forever. For outgoing calls in the U.S., dialing a 7-digit number will place the call through your PSTN line. Dialing a 10-digit number will also place the call through your PSTN with BroadVoice as a backup. Dialing 1 and then area code and phone number will place the call through BroadVoice. Dialing 9 and then the area code and phone number will place the call through Voxee. Dialing 911 will place an emergency call through your PSTN (i.e. local) phone number. Dialing 011 calls for other countries will go out through Voxee. If you need another configuration, post your question using language similar to what we've outlined, and we'll respond to some of them in a future column. Don't ask questions about other VoIP providers. That's what the VoIP forums are for, and we've previously pointed you to several good ones. So here we go.
First, a reminder: MAKE SURE YOUR SPA-3000 IS BEHIND A FIREWALL! Now let's reset the SPA-3000 to its factory defaults just to be sure we're all reading from the same sheet of music. With a phone connected to the Phone jack, lift the receiver and dial **** to access the Sipura Configuration Menu. Now press 73738#. When prompted, press 1 to confirm your request. The SPA-3000 will reboot. Then, using a web browser, access the IP address of your SPA-3000 that you wrote down above. When the main screen displays, click Admin Login in the upper right corner. Then click Advanced. If you're prompted for a password, you have a locked unit, and all bets are off. Contact your vendor and either get the passwords or send the unit back. You won't have this problem with Voxilla. After clicking on the Advanced option, you'll have access to all the settings in the SPA-3000.
Regional Tab Settings. You'll notice there are nine tabs across the top of the SPA-3000 Admin Config page. Start by clicking on the Regional tab and set your Time Zone. This matters because POTS phones connected to the Phone jack get their time from the SPA-3000. The Time Zone pull-down is in the Miscellaneous section of the form toward the bottom of the screen. The SPA-3000 doesn't know about Daylight Savings so pick your time zone accordingly. Save your change by clicking the Submit All Changes button. The SPA-3000 will reboot.
Line 1 Tab Settings. In the Proxy Registration section, enter the IP address of your Asterisk box in the Proxy field, set Register to Yes, set Register Expires to 60, and Use Outbound Proxy should be No. Leave all the other settings as you find them. In the Subscriber Information section,
Set Auto PSTN Fallback to Yes. Finally, one could write a book on Dial Plan settings, and someone probably should. But it won't be me. While I'm by no means an expert, I'm learning fast. So here's a Dial Plan configuration to get things working, and we'll revisit it in a future column to add additional features and safeguards. For now, plug the following into the Dial Plan field at the bottom of the form after erasing what's already there. Then Submit All Changes:
(#xx|< :*>*xxxS0|*xx|[3469]11|0|00|1[2-9]xx[2-9]xxxxxxS0|[2-9]xxxxx.|[2-9]xx[2-9]xxxxxxS0|xxxxxxxxxx.)
PSTN Line Tab Settings. Things get a little tricky in this form so type carefully, or you'll have a real mess when you try to receive calls. In SIP Settings, set the SIP Port to 5061. In the Proxy Registration section, enter the IP address of your Asterisk box in the Proxy field, set Register to Yes, set Register Expires to 60, and Use Outbound Proxy should be No. Leave all the other settings as you find them. In the Subscriber Information section,
should be entered for Dial Plan 8 in the Dial Plans section. That's a less than symbol, then S, then zero, then a colon, 99, and a greater than symbol. In the VOIP-To-PSTN Gateway Setup, set Gateway Enable to Yes and Caller Auth Method to None. In the PSTN-To-VoIP-Setup, set Gateway Enable to Yes, PSTN Ring Thru Line 1 to Yes, PSTN CID for VoIP CID to Yes, PSTN Caller Default DP to 8, and PSTN CID Number Prefix to 00 (that's zero-zero).
In the FXO Timer Values section, set VoIP Answer Delay to 1, PSTN Ring Thru Delay to 3, and PSTN Ring Thru CWT Delay to 3. Click Submit All Changes button to save your work thus far.
User1 Settings. In the Selective Call Forward Settings section, set Cfwd Sel1 Caller to 00* (zero-zero-asterisk). Set Cfwd Sel1 Dest to 99. And, at the bottom of the form, set VMWI Ring Policy to New VM Arrives. If you forget to change this last one, your phone will ring once a minute, all night long whenever anyone leaves you a voicemail message in the middle of the night. Click the Submit All Changes button, and we're finished configuring the SPA-3000 ... at least for today.
Tweaking the Asterisk@Home Dial Plan to Support the SPA-3000. Our final drill for today is to tell Asterisk about the SPA-3000, add a few custom routines to our Extensions_Custom config file, and test everything to make sure it's working. Whew! No one said this would be easy, did they?
Let's first add the PSTN trunk. Call up AMP->Setup->Add SIP Trunk. For the Outbound Caller ID, enter your home phone number with area code. For maximum channels, type 1. Skip the Outgoing Dial Rules section as well as the Incoming and Registration sections. In the Outgoing Settings, let's name the trunk pstn. For PEER Details, enter the following but not our comments on the right. Then click the Submit Changes button and then the red bar.
auth=md5
context=from-internal
dtmfmode=rfc2833
fromuser=asterisk < -- don't change this
host=192.168.0.115 <-- plug in the internal IP address of your SPA-3000 here
insecure=very
port=5061 <-- important!
secret=123456 <-- use your password for extension 204 here
type=peer
username=asterisk <-- don't change this
Next we need to reconfigure our Outbound Routing a bit. Let's add a new Outbound Route and name it OutPSTN. For the Dial Rules, enter the following:
911
NXXNXXXXXX
NXXXXX.
For the Trunk Sequence, choose SIP/pstn and then add SIP/bv. Be sure they appear in this order or press one of the blue arrow keys to reorder them correctly. Now click Submit Changes and then click the red bar. When the list of trunks reappears, make sure they are in the following order (top to bottom): OutVoxee, OutPSTN, Outside. If not, click on the arrows to reorder them, submit changes, and click the red bar.
Modifying Extensions_Custom to Handle Incoming PSTN Calls. Click on AMP->Maintenance->Config Edit and then choose the extensions_custom.conf file. When the editor opens, move down several lines to an opening in the [from-internal-custom] context. Insert the following code. WARNING: If you cut and paste code from these articles and the code contains quotation marks (such as below), be sure to replace the WordPress-inserted, front and back quotes with normal quotation marks, or you’ll send Asterisk into the ozone.
;next extension (99) is to handle incoming PSTN calls
exten => 99,1,GotoIf($["${CALLERIDNUM:0:2}" = "00"]?2:3)
exten => 99,2,SetCIDNum(${CALLERIDNUM:2})
exten => 99,3,SetMusicOnHold(default)
exten => 99,4,Answer
exten => 99,5,Wait(1)
exten => 99,6,Background(custom/welcome)
exten => 99,7,DigitTimeout,2
exten => 99,8,ResponseTimeout,2
exten => t,1,Answer
exten => t,2,Wait(1)
exten => t,3,Background(pls-hold-while-try)
exten => t,4,Dial(SIP/204&SIP/200,20,m)
exten => t,5,VoiceMail(204@default)
exten => t,6,Hangup
exten => i,1,Answer
exten => i,2,Wait(1)
exten => i,3,Playback(wrong-try-again-smarty)
exten => i,4,Goto(99,5)
The only line above that you'll need to modify is t,4 where you'll need to specify the numbers of each extension you want to ring when a call comes into Asterisk from your PSTN (home phone) line. If you have more than one extension, separate them with an ampersand and use the SIP/extensionnumber syntax for each extension. Now add the following code snippet at the bottom of the file after adding include => custom-recordme-code near the top of the file in the [from-internal-custom] context :
[custom-recordme-code]
exten => 456,1,Playback(custom/record-msg)
exten => 456,2,Wait(2)
exten => 456,3,Record(/tmp/asterisk-recording:gsm)
exten => 456,4,Wait(2)
exten => 456,5,Playback(/tmp/asterisk-recording)
exten => 456,6,Wait(2)
exten => 456,7,Hangup
Recording Voice Prompts with Asterisk. Save your changes by clicking the Update button and then restart Asterisk as previously described. Now pick up a phone and dial 456#. When you hear a beep, say "Please say your voice prompt at the tone. Press the pound key when you are finished." Then press the # key, listen to your recording, and hang up. If you want to revise it, just repeat the steps. Now go to the Asterisk console and log in as root. Change to the tmp directory: cd /tmp. Rename the custom recording we just made: mv asterisk-recording.gsm record-msg.gsm. Now move the file to its permanent home: mv record-msg.gsm /var/lib/asterisk/sounds/custom. Now let's record one more. Dial 456# again. At the tone, say "Hi, you've reached the Rockefeller's. Someone will be right with you." Now press # to save your recording. Now go back to the Asterisk console. Go to the /tmp directory. Rename the recording: mv asterisk-recording.gsm welcome.gsm. Then move the file to its permanent home: mv welcome.gsm /var/lib/asterisk/sounds/custom.
Why are we doing all of this? Well, there really is a reason. Now when someone (like you) calls that knows what's going on, you can dial any extension on your Asterisk system while this mundane greeting plays. You can even call up the weather.
At this point, everything should be working. You should be able to dial in using either your home phone number or your BroadVoice number. And you should be able to dial out using the dialing rules we outlined when we began. Finally, a word of caution. Being human, we sometimes forget a step in a process as complex as this was. We've actually built our new system at the same time we wrote this so everything oughta work fine. Ours does. If not, post a comment (don't email me with technical problems!), and we'll have a look. For those that are curious, we purchased an Ice Cube HU61 from Now Micro in St. Paul, Minnesota. For just over $500, it includes an AMD Athlon 64 XP3000 processor, 512MB of RAM, a 250GB Seagate 7200 ATA IDE drive (don't buy SATA drives as they won't work with this version of Linux and Asterisk), a 52X CD ROM drive, and a 3 year parts and labor warranty. Remember, you don't need an operating system for this machine. It's on the Asterisk@Home installation CD. The Ice Cube has the capacity to handle about 1000 phone extensions and roughly 200 simultaneous SIP calls so it'll do just fine for home use unless we have more than a few Strom Thurmond "moments." And, on the weekends, you can disconnect your phones and take your ass-kickin' Ice Cube to the finest LAN parties in town. See you next week.
There are numerous additional articles in this series now. You can read all of them by clicking here.
Tips & Tricks to Turbocharge Your Asterisk@Home PBX
Welcome 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
Email 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 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.
Local 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.
Coming 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)
Last 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)
NOTE: 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.
Choosing 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…