Liberating Google Voice: Placing and Receiving Calls from your Computer

I’m a big fan of Google Voice back from the days when they were called GrandCentral. Among the many niceties provided by the service are receiving voice messages as email, sending and receiving texts from your browser, and the ability to keep the same phone number forever.

One of my favorite Google Voice tricks is receiving and placing calls from the computer. The process used to be super simple using the now-defunct Gizmo5. Back in the day whenever someone called your Google Voice number the Gizmo app running on your computer you let you pick up the call. Placing calls from Gizmo was a snap and had the interesting side-effect of allowing for free calls from your computer. Google acquired Gizmo5 in 2009 and shut down the service in 2011, channeling the acquired technology into the current Google Voice Chat that allows you to place and receive free phone calls from Gmail.

Although Google Voice will notify you in Gmail that you are receiving a call, you have to keep a browser tab open and signed in to Gchat (not a great options for folks that use Adium). With Gizmo5 shuffled off the mortal coil I had to look elsewhere for a service to place and receive Google Voice calls from the computer. Leveraging two services called PBXes and IPKall you can do just that.

The Phone Cycle

image

We begin with a call placed to your Google Voice number and end with a notification on your computer. First, IPKall converts the “analog” call over the public switched telephone network (PSTN) into a “digital” IP call. Next PBXes, a free telephone exchange service, notifies your computer via session initiation protocol (SIP) that your phone is ringing. An application running on your computer and logged into your PBXes SIP account will receive this notification and allow you to answer the call.

Connecting the Dots

image

If you don’t have one already, sign up for a free Google Voice number and a free PBXes account. In the PBXes dashboard click Extensions and add a SIP extension. Under Extension number pick something unique. Skip the webcall section and enter a password. Click submit and note the username under device options. Change dtmfmode to rfc2833 and click apply.

Now create a free account with IPKall. Pick any number you want and enter the SIP URI as the username you just created in PBXes (with the number) @ pbxes.org. You might wonder how IPKall manages to stay in business. Apparently they are able to charge termination rates to companies like AT&T for shuttling calls off the PSTN.

image

Now you’ll want to go to your Google Voice settings and add a new number. Enter the number you received from IPKall (remember to add +1 so GV knows you are in the US). You’ll next need to confirm your number with Google Voice. I like to use an app called Telephone that lets you place and receive SIP calls on a Mac. Install the app and add a new account. Enter your name, pbxes.org as the domain, your username from PBXes (without the number) as the username, and your PBXes password. Under advanced enter the SIP address (with the number) @ pbxes.org. If everything goes according to plan the application should connect without any errors.

image

In Google Voice click Connect to verify your number. You should get a notification in the Telephone app that your phone is ringing. Click answer and enter the verification code using the keypad when prompted. You’ll now be able to use the Telephone app to place and receive calls from the computer.

Update: Telephone is quite a bare-bones app so I went looking for an alternative. I gave Jitsi a try but had difficulty making it work with PBXes. I stumbled across Blink which offers a version in the App Store for $9.99. However there is a free version that seems to receive calls just fine.

It is important to set the outbound proxy to pbxes.org:5060;transport=tcp, otherwise Blink will ring but you won’t be able to pick up the call. For some reason the free version of Blink doesn’t allow me to open the Preferences window but you can set your own preferences in ~/Library/Application Support/Blink/config. Here are the settings that worked for me with PBXes:


Accounts:
    username-999@pbxes.org:
        display_name = "YOUR NAME"
        enabled = true
        auth:
            password = PASSWORD
        sip:
            outbound_proxy = "pbxes.org:5060;transport=tcp"
            primary_proxy = "pbxes.org:5060;transport=tcp"
        sounds:
            audio_inbound = "file:None,50"

SIPSimpleSettings:
    default_account = username-999@pbxes.org
    user_agent = "Blink 0.24.1 (MacOSX)"
    audio:
        alert_device = system_default
        input_device = system_default
        output_device = system_default