House-wide VoIP? Easy and Cheap? Yup.

I ditched the home phone line about 7 years ago now in lieu of Voice Over IP and haven’t looked back.  In talking with people on the pros vs. cons over the years who were debating the switch, I’ve heard just about all of the common hurdles that are preventing more people from doing so.  I wanted to throw up an article discussing the questions I’ve fielded along with how I have been successful, safe, and thrifty doing this.

Who would I use?

That’s a big question.  You really have two classes of carriers to choose from – the “big-box” Vonage type that supply you a device, and the more customizable “BYOD” (Bring Your Own Device) providers like Callcentric.  Who you go with is up to you – quick and easy, “big-box”.  A tad more technical and cheaper, “BYOD”.

I don’t want to have to be on my computer to make a call.

You don’t have to be!  If you choose a service like MagicJack you do because that’s how they offer unlimited calls for so cheap – it’s ad supported.  You can really go any of three main ways:

  1. “On the computer” – Skype for Windows/Mac or MagicJack
  2. “Near the computer” – most VoIP services such as Vonage
  3. “Anywhere in the house” – a modified version of #2.
This blog is going to focus on #3.  Regardless of provider, the implementation at your house / office is going to be the same.  I personally go with Callcentric because they have a great web interface and allow me to pay as I go rather than lumping out $30/mo for Vonage.  (I had Vonage in the past, didn’t like their ever-increasing monthly rate)
I’ll lose my phone every time my power goes out.
This can be the case if you don’t plan for it.  True 100% copper / fiber fed home phone lines are actually powered by the phone company (unless you have a wireless set that needs a separate plugin).  So even if your power goes out, you’ll still be able to plug a corded telephone in and get dial tone from the phone company.
Yes and no with VoIP.  If you plan your infrastructure to account for this, you can mitigate the risk.  You can go the whole-hawg route by putting your cable/dsl modem, router, and ATA on a UPS or other battery backup, or you can make the decision to rely on a cell phone for power-out emergencies.  There are steps between that, but typically people will go for one way or another.
Being the nerd I am, I have both.  =)
Ok, so how do I get all the phones in my house to be on VoIP?
What you get from Vonage is a Linksys/Cisco “ATA”, which stands for “Analog Terminal (or Telephone) Adapter”.  Basically it’s a device that connects to your Internet connection and provides an interface between your traditional home (analog) telephone and a VoIP service provider.  There are honestly thousands upon thousands of VoIP service providers out there – go with someone like Vonage if you want to just “set it and forget it”, but if you’re a little more technically savvy and want to save some moolah, go with someone like Callcentric.  (If you sign up as a result of reading my blog, be kind and put my Agent ID in at checkout…11085 – thanks!)
Now comes the slightly higher technical portion of our program – lighting your house up with dialtone over the existing wiring without backfeeding your signal to the telephone company.
DISCLAIMER!  This blog is only meant to give you insights on how **I** did this to my home.  Your phone company may have rules on access to the TNI or policies on touching their equipment.  I do not take any responsibility for you violating any agreement with your phone company, nor any responsibility for any harm or “it won’t work!” stuff.
(**NOTE!  Most ATAs are only rated to power 4-5 telephones in your home.  You can try more than that, but you run the risk of running your ATA down (read:  break it) faster than what would normally be expected.)
On most houses with modern connection to the phone company, there will be one of two things in your house.
1.  Telephone Network Interface (“TNI”).  This should be a box on the outside of your home where the telephone company makes the connection with your “inside wiring”.  In the simplest situation, you open the box and disconnect the telephone’s company wires with the wires that go into your house.  In more complicated situations
2.  In older homes that do not have a TNI, if you look in your house (typically on the ceiling in the basement) near where the wire comes into your house you’ll see a big mess of wires wrapped around two screw posts.  Same concept here – disconnect JUST the wires from the phone company.  Leave everything else intact.
This (physically) breaks your connection to the phone company.  To finish the job, take a standard phone cord, plug one end into your ATA and the other into any phone jack in your house.  This action will back-feed the signal along your existing wiring, lighting up your house!
I’ll get hacked!
Not really…there are ways that a really dedicated hacker could break in, but it’s not realistically more than if that same hacker wanted to break into your computer through the Internet.  Risk mitigation…I have a firewall in place as general good practice, but it’s not a risk that stops me from doing this.
The quality isn’t as good as a traditional land line.
That’s debatable.  95% of the time, neither you or the person you’re calling could tell the difference.  Most VoIP providers use a voice “codec” (the thing that transmits your voice as data) that is of quality equal to traditional land lines.  If you are noticing some choppy or robotic sounding voice when calling, odds are that you have another Internet-enabled device in your home that is doing something bandwidth-intensive.  Netflix, gaming, downloading files, etc – because VoIP is truly data, in a regular home network it’s all the same to your router and Internet provider.  You can HELP (not cure, but help greatly) the situation by implementing “Quality of Service (QoS)” on your router, or ask your ISP if they support it on their modem.
What QoS does is prioritize certain traffic from certain devices over others.  In my network, my router detects all traffic coming from my ATA and prioritizes it over any other device on my entire network.  If you’re using a Linksys/Cisco E-series router (typical for home use), there is a tab for it in the configuration and is a breeze to setup.
I don’t know, I still like my land line, but want VoIP for long distance
You can do that too!  Typically a Vonage or other larger provider doesn’t give you this option, but if you go with a BYOD carrier, you can purchase a device like the Grandstream HT-486.  The HT-486 has the ability to connect to BOTH a VoIP carrier AND a standard phone company.  You can set it up to use the standard phone company for all regular calls, but then use the cheaper VoIP provider for long distance and international calling.  Best of both worlds!
VoIP is here – like it or not.  If you have phone service through your cable company, they are delivering it via VoIP and doing exactly what this article is talking about anyways.  Why not save a few dollars and do it yourself?  =)

Cloud-based VoIP Carrier…with an API??! Sweet.

I stumbled on this site the other day –  There are MANY SIP providers out there in the market today (hundreds of thousands) and they all charge around that magical 1.4 cents/minute inbound and 1.9 cents/minute mark.  Twilio does the same, but what got me really excited about them is their API.

Yes – someone got smart at Twilio and put out an API – a truly AWESOME API.  This is another great example of a company filling a need in the marketplace for others to use to make truly remarkable end solutions.

Recently I joined up with an Eden Prairie MN-based company that delivers solutions in the CRM (Salesforce, MS CRM, etc) market – truly a remarkable market to be in right now, and one that again “trips my trigger” as being able to work with companies that need creative solutions.  To throw another log on the fire, some kind soul in the Salesforce Development community has laid the groundwork to integrate the two platforms.

I’m totally geeking out right now.  Check Twilio out!

Asterisk Appointment Reminder Solution

Over the last 11 years, I have had the incredible opportunities to be involved with companies that either encourage the exploration of new technology, or the need to deploy and utilize virtual office spaces.

Having the freedom to really tinker with about anything that trips my trigger for the day, I’ve become been fascinated with the space between computers and telephony and interoperability with Cloud-Based computing.

The possibilities are endless.

Take for instance my latest distraction,  I have implemented a number of appointment reminder systems for clients in my career, and they typically are:

  • Expensive to purchase
  • Tied to expensive annual vendor support agreements
  • Tied to specific software packages for integration / automation options
  • Expensive to expand (additional phone lines, etc)

Why not leverage open source and the cloud to do the same thing?  Sure, there will need to be some custom development on an interface and some sort of integration connector…but really, what is that difficult about a system that queues calls to a dialer?  (I say that tongue-in-cheek, of course…)

So I set off to build this.  I found a number of blogs and WIKIs about people who had successfully (or unsuccessfully in some cases) put something like this in place.   I hate reinventing the wheel so I always like to find something at least remotely applicable to what I’m trying to do.  I found a good starting point at Ward Mundy’s (NerdVittles) Teleyapper / Robodialer for Asterisk page.

I have been working with Asterisk since the early 2000s – I love it.  The contributing community behind it is unmatched.  I’ve installed dozens of Asterisk-based systems, (Core Asterisk, PIAF, Trixbox, FreePBX, VICIDial, and Elastix) over the years and haven’t found a real business need that the Asterisk community hasn’t been able to meet.

So I started off on gathering my business requirements on how I wanted this service to work:

  • Available 24×7
  • Able to use multiple providers / trunks
  • Provider and Location Failover
  • Neat / Easy to Use Interface
  • Outbound CallerID set on the fly (appear as customer)
  • Payment integration (PayPal to start)
  • 99% HANDS OFF (I hate maintaining simple things…)
  • Worth enough $$$ to make it worth my time building it!

Those last two I never really bothered to think about in my youth – partnering up with anyone who had an idea or some free time to build “the next best thing” but ending up with something unsellable or so manually intensive that I just gave up on it.  Great experience yes, but the literal MONTHS of time wasted on ideas teaches you to ask yourself, “would anyone REALLY buy this?” more and more as you grow up.  HA!

So after researching a few “competitors” on the web that did roughly the same thing, I figured that I’d make a go at this.  I installed Teleyapper on a virtual instance and began running all kinds of calls through it.  “Cool!” I thought, but it needed more.

Core System:

Pentium Dual Core box
PIAF (Asterisk + PBX in a Flash)
2 channels of Cepstral with Allison’s lovely voice
2 SIP Trunking providers (CallCentric and VoIPStreet) for failover

Testing, testing, testing, and more testing.  Calls to landlines, calls to cell phones, calls to VoIP phones, calls to Skype phones, calls to answering machines / voicemail.  I spent two weeks solid (and about $50 in carrier fees) making sure that I knew for sure how data moved around in the system and that the final product wasn’t a waste.

Ok, core system is good, but I need a website to feed this beast data.  I shuddered at the thought of hosting this solution in my basement – to start off is always OK, but what about when my flaky internet connection tanks or my little Linksys router can’t take it (which is often…grrrr)?

MySQL is awesome – let me tell you.  There are a lot of cloud / hosting providers out there that allow you to put publicly-accessible MySQL instances out there, my choice at the time was GoDaddy.  (I already had hosting packages and domains out there)  I signed up for a basic Linux hosting package and away we went.  Taking the basic structure of Ward’s scripts, working in some additional includes and streamlining the DB calls and general flow and my Asterisk box was now talking to GoDaddy’s servers.  Cool!  Connect up a website, easy enough to do.

Now came tweaking the original DB design to integrate multiple customers, payment packages, demo accounts, and resellers…took a little bit, but 8 more DB tables, 20+ new columns in the existing table schema, some stored procedures – BOOM, we have a functioning site.  LAUNCH Adwords and some Facebook advertising.  Go baby go!

“Wait…” I said, “What about scalability?”  Granted Asterisk can handle more calls than I could realistically throw at it in the near future, but before I scored my first customer and instituted the “locked-down production” mantra, let’s integrate in the ability for multiple Asterisk boxes to continually ping the master DB for calls to make.  Easy enough – add one new column in a few tables to handle a unique “DialerID”.

Production System

Core System x 2 (two separate locations)
GoDaddy MySQL Hosting (GoDaddy runs MySQL 5.0 that has stored proc support)
Hostgator PHP Hosting (GoDaddy’s PHP Mail is HORRID, and I’m being nice leaving it at that – but Hostgator doesn’t support MySQL stored procs)
PayPal Integrated Payments with IPN functionality

Ad campaigns running, letters to local businesses, word of mouth going – fun stuff.

Want to know more of the nitty-gritty technical details behind this?  Comment away…