An open replacement for Skype voice

http://www.maxmasnick.com/2013/05/18/replacing-skype/

My house has terrible cell service, so I’ve been reluctantly relying on Skype for making phone calls. Yesterday, I discovered that there is an open protocol called SIP that has similar functionality to Skype but is cheaper and has better call quality in my testing. Read on to see how I set it up.

Old phones
Technology has come a long way, but somehow I still can't get reliably good voice call quality. Hopefully the SIP-based method described here is more robust than my cell phone or Skype. (Photo by flickr/davekonig.)

Why not Skype?

I’m really not a fan of Skype. My reasons include the terrible redesign of Skype for Mac, unreliable delivery of instant messages, poor quality over the Skype-to-real-phone bridge, and lock-in to a closed platform (Skype is not an open standard so no one else can make a “Skype-compatible” application).

Additionally, it appears that Microsoft (who bought Skype in 2011) is now reading supposedly-encrypted Skype chat messages.

SIP

SIP stands for Session Initiation Protocol, but that’s not very descriptive (or important). I’m not going to go into details on how SIP works (I’m not sure I totally understand it), but the upshot is this: you can get a “SIP endpoint” like sip:1234@sip-provider.com from a provider, enter this into a SIP-enabled phone (either hardware or software), and then you can make calls to regular phone numbers from that phone.

To accept incoming calls from regular phones (i.e. not SIP-to-SIP calls, which are also possible), you need your provider to hook your SIP endpoint up with a phone number. This will allow people to call your phone number on their cell phone or landline and your SIP phone will ring.

This is pretty much what Skype can do except SIP is based on an open standard. This means there are a myriad of hardware and software phones that support SIP. There are also a ton of providers of SIP services, so if your provider starts sucking you can always switch.

My SIP setup

I decided to go with Plivo as the provider of my SIP endpoint. There are lots of different companies that can do this, but Plivo has some unique attributes:

  • It’s a platform-as-a-service (like Amazon Web Services for phones), so billing is based just on usage and is really cheap.
  • It’s geared towards programmers, allowing you to do all the setup yourself through their website or APIs. Provisioning is instant.
  • It’s a startup (yay for supporting startups) with legit backers (YC, Andreessen Horowitz).

I also tested sipgate, which worked fine, but it doesn’t sound like they’re giving out US numbers anymore.

How to set up a SIP endpoint with Plivo

This was a little non-intuitive but not particularly difficult.

  1. Sign up, and deposit $25 to activate your account.
  2. Go to the “Applications” tab and click the “Direct Dial” application. Replace the placeholder text in the “Answer url” and the “Hangup url” with your phone number (format: 15551231234). Plivo will display this as the caller id number for your outgoing calls. I used my Google Voice number.
  3. Go to the “Endpoints” tab and create a new endpoint. Keep the password you create because you’ll need it later. Select “Direct Dial” for the “Plivo App” field.
  4. Click the “+” next to the endpoint you just created and get the “SIP URI” (e.g. sip:test100000000000@phone.plivo.com).
  5. Go back to the “Applications” tab. Create a new application called “Forward to SIP” with the following settings, replacing the SIP URI in the URLs with your own SIP URI from step 4:
    • Answer URL: http://plivodirectdial.herokuapp.com/response/sip/route/?DialMusic=real&ForwardTo=sip: test100000000000@phone.plivo.com 
    • Answer method: POST
    • Fallback answer URL: leave this blank
    • Hangup URL: same as answer URL.
    • Hangup method: POST
  6. Go to the “Numbers” tab and buy a number. Set the Plivo app to “Forward to SIP”.

I added my Plivo number to my Google Voice account, so when someone calls my Google Voice number my SIP phone will ring in addition to my cell phone.

For my SIP phone, I use the simple, free Telephone app for OS X. For your account information, you’ll need the SIP URI from step 4 above (the portion before the @ is your username; the portion after is the domain) and the password you created in step 3.

Once you enter your account information, you should be able to make a call by typing in a number (e.g. 15551231234) or the beginning of a contact’s name (Telephone integrates with the Mac address book).

In my testing, the call quality was crystal clear with no delay or dropout, even though I was calling a cell phone in Montana.

Note that Plivo costs $0.80 per month for a US number and $0.009/minute for calls (compare to $2.50/month for a phone number and $0.023/minute with Skype).