How-To: Google Voice Inbound/Outbound Without a Computer

Update (July 25, 2010): SIP Sorcery has disabled new account registrations as of today. If you don’t already have an account then you’re out of luck. More information here.

Quick History

Many of us have been using GrandCentral long before it was called Google Voice and have enjoyed many of it’s features. One of the unfortunate side effects of the increased visibility that Google’s acquisition brought to the service was the swift shut down of the SIP connectivity we were using to initiate calls. There were other workarounds using Gizmo5, different IPs, but all the tricks were eventually killed off in May 2009. Shortly thereafter Gizmo5 allowed users to make free outgoing calls by integrating Google Voice into their service but it was hampered by a 3 minute call limit. As they say, necessity is the mother of invention. The current workaround came through two different projects that utilize Google Voice via JSON and XML requests: Google Voice for Python (pygooglevoice) and SipSorcery’s Google Voice App.

Purpose

This tutorial will show how to make inbound/outbound Google Voice calls using only a SIP client whether it’s a computer-based softphone like Ekiga, a mobile phone-based softphone such as Fring, a hardware 3G/Wi-Fi SIP phone like my Nokia E71, or an analog telephony adapter like the Linksys PAP2T-NA that allows regular house phones to use VoIP. Any SIP software should be able to use this method of interacting with Google Voice. I put this together after Gizmodo and Lifehacker recently posted tutorials that had the incoming part of Google Voice working but neither showed how to get outbound calls working without a computer. I’m pretty sure this tutorial will also work for people that do not have a US phone number needed to verify a new Google Voice account as long as things are set up in the order below.

Acknowledgments

I’m doing nothing more than to take screenshots to illustrate a process that has been created by a number of very intelligent people who should be recognized for the their hard work:

There are many more people that I’m certain I haven’t listed. Feel free to e-mail me if I’ve made an omission that needs to be rectified.

Disclaimer

This post is for educational purposes only and is not meant to replace your regular telephone. Read this document through in its entirety before attempting anything. If you choose to follow this tutorial then you do so at your own risk and take full responsibility for any and all consequences. I cannot be held liable for any damages. In other words, if anything terrible happens to you because of this tutorial then you’re on your own. Do not use this configuration for anything other than leisurely tinkering and certainly not for emergency calls. You’ve been warned!

Requirements

SipSorcery Account Creation

  1. Create a SipSorcery account by pointing your browser to: http://www.sipsorcery.com
  2. Click Click for SIP Sorcery Portal. Note: You must have Microsoft Silverlight installed!
  3. Click Create New Account
  4. Fill in the fields with your information. Make sure you put in your real email address (a confirmation email will be sent), choose a security question, and set the correct timezone. Once completed, click Create Account.

  5. If everything was created successfully then you’ll see this message about confirming your email address.
  6. Head over to your email account and confirm your email address by clicking the link. Once completed, you’ll see the following message.
  7. At this point you can login to your newly created SipSorcery account by pointing your browser to: http://www.sipsorcery.com. Then click Click for SIP Sorcery Portal. Enter in your username and password. You’ll should see something like this:
  8. We’ll come back to SipSorcery later. Let’s set up our SIP softphone next.

SIP Softphone Set Up

Note: You may use any SIP softphone, hardphone, or analog telephony adapter of your choosing. The basic setup instructions will be the same for all of these devices. I’ll use Ekiga because it’s a free download. If you’re not using Ekiga then skip down to step 13 for the SIP phone configuration information.

  1. Download Ekiga for Windows by pointing your browser to: http://ekiga.org/download-ekiga-binaries-or-source-code
  2. Once downloaded, install the application with the defaults. Note: You’ll see a second installation wizard for GTK which needs to be installed in the same default manner. Once it’s done, it’ll exit back to the main Ekiga installation wizard.
  3. Start Ekiga. A window will pop-up called Ekiga Configuration Assistant (1 of 8). Click Forward on the bottom right.
  4. Enter your name. Click Forward on the bottom right.
  5. The panel is for those who want to create an Ekiga.net SIP account. We don’t need it for our configuration so we’ll skip it by clicking the checkbox at the bottom. Click Forward on the bottom right.
  6. This panel is for those who want an Ekiga outgoing call account. Again, we don’t need it for our configuration so we’ll skip it by clicking the checkbox at the bottom. Click Forward on the bottom right.
  7. This panel is for choosing your internet connection type. Pick LAN if you have a sufficiently fast broadband connection. Click Forward on the bottom right.
  8. This panel is for choosing the audio devices Ekiga will use for VoIP calls. The defaults should be fine in most cases. Click Forward on the bottom right.
  9. This panel is for choosing a webcam for video calling. If you one then pick it. If you don’t have one then don’t worry about it. Either way we won’t be making video calls in this configuration. Click Forward on the bottom right.
  10. The final panel is to confirm your settings. Click Apply on the bottom right.
  11. The Ekiga’s main window should pop-up now. Click the Edit menu. Click the Accounts option.
  12. In the Accounts window click the Accounts menu. Click the Add a SIP Account option.
  13. Fill in the fields Edit Account window as follows:
    1. Name: Your name
    2. Registrar: sip.sipsorcery.com
    3. User: Your SipSorcery Username that you created in the last section
    4. Authenticated User: Leave it blank
    5. Password: Enter your SipSorcery password that you created in the last section
    6. Timeout: 3600
    7. Make sure the checkbox next to Enable Account is ticked.

  14. Click OK.

  15. If you typed in everything correctly then you should see Registered displayed under Status for your new account. If not, then edit your account settings. Click Close to return to the main Ekiga window.
  16. That’s it our Ekiga softphone set up is now complete. Next we need to get an incoming phone number from a VoIP company.

Incoming SIP Phone Number

Note: Several companies offer US phone numbers for free incoming VoIP calls. I will use IPKall but you may get a free number from SipGate or IPComms.net. If you don’t use IPKall then the configuration is slightly different. Instead of following this section, you’ll need add the login credentials for the provider on the SIP Providers tab in SipSorcery. This is done by clicking on SIP Providers -> Add on the top box called SIP Providers. Enter your SIP provider’s Name, Username, Password, Server Address, tick the Register box, and leave the Register Contact field alone (it should be your SipSorcery address), and click Add. Once you’ve successfully completed this step SipSorcery will show a message in the bottom box called SIP Providers Registration confirming that you’re credentials work. Substitute your alternate provider’s phone number wherever I put in the IPKall phone number in the remaining sections.

  1. Get an IPKall phone number by pointing your browser to: http://www.ipkall.com
  2. Click *Sign-Up*
  3. Enter in the following information:
    1. Choose your account type: SIP
    2. Choose Area Code for your IPKall Number: 425 (explained below)
    3. SIP Phone number: Your SipSorcery Username
    4. SIP Proxy: (ex. sip.fwdi.net): sipsorcery.com
    5. Email Address: Your Email Address
    6. Password: 4-digit numerical pin
    7. # of Seconds to ring before hanging up: 120

  4. Enter in the ReCaptcha and click Submit.
  5. This next page is a confirmation screen. Save the information so you can log back in later. Your new IPKall number will be emailed to you.
  6. Check your email and write down your phone number for the following steps.
  7. If you would like to test your set up so far, then call your IPKall phone number another phone. Your Ekiga client should ring on your computer. Once you pick up you should be able to hear your voice through your computer.

Note: IPKall only gives phone numbers in the state of Washington. This doesn’t matter because no one will be using this number besides Google Voice to forward your calls. IPKall numbers expire if they aren’t used for 30 days so the numbers are put back into the available pool. Many Google Voice accounts that are no longer used still reference expired IPKall numbers therefore Google Voice won’t allow you to use them as your forwarding number. I’ve had the best luck with area code 425. If for some reason Google Voice does not allow you to use an IPKall number then log back in to IPKall, delete your account, and recreate another for a new number using the above instructions.

Google Voice Account Creation

  1. Create a Google Voice account by pointing your browser to: http://google.com/voice
  2. Pick your Google Voice phone number by entering an Area code, city or zip code and/or a Word, phrase, number. Click Continue once you find a phone number you like.
  3. Confirm your Google Voice phone number (write it down), enter a 4-digit numerical pin (twice), read and accept the terms and conditions, and click Continue.
  4. Add a forwarding phone number by entering in your IPKall phone number from the previous section. Leave the Phone Type as Home. Click Continue.
  5. If Google Voice did not accept your IPKall phone number because it is in use by another account then you must read the note at the end of the previous section. In a new browser window or tab you’ll need to delete your IPKall account and create another one to get a different number. Then return to the Google Voice window or tab to reenter your forwarding number.
  6. If everything went smoothly then Google Voice will ask to confirm your forwarding number. Note down the two-digit code. Make sure Ekiga is running and switch to the Dialpad tab. Click Call me now.
  7. Wait for Ekiga to ring, answer, and enter the code on the Ekiga dialpad using your mouse. Once the recording says your phone has been activate hang up. The browser window will have a message confirming your Google Voice number. Click Finish.
  8. Now click Settings (top right) -> Voice Settings -> Calls. Turn off Call Screening. Google will ask you to confirm this change, do so. Finally, click Save Changes.
  9. You can now test your Google Voice number by calling it from another phone. Ekiga should ring on your computer. If so, congratulations inbound calling works! Now we need to setup outbound calling in SipSorcery.

Outbound Google Voice Calls

Outbound calling with Google Voice without a computer requires some clever magic with a SipSorcery dialplan. We will set that up next.

Note: You will need to enter in your Google Voice username and password into the SipSorcery dialplan. Some people have their reservations about this step but it’s a choice that’s best left up to you. I’ve been using Aaron’s SipSorcery for a very long time and I trust him as do many others. However, if that’s not enough then you can always create another Google Voice account with a throw-away email address and password. The choice is yours (see disclaimer above).

  1. Go to SipSorcery by pointing your browser to: http://www.sipsorcery.com
  2. Click Click for SIP Sorcery Portal. Note: You must have Microsoft Silverlight installed!
  3. Login with your username and password.
  4. Once logged in, click Dial Plans.
  5. Click the default dial plan. Erase sys.Log(“hello world”) that’s in the dial plan so it is blank.
  6. This is Mike Telis’ Simple Dial Plan.
    # Copyright(c) 2010 Mike Telis
     
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    # http://www.apache.org/licenses/LICENSE-2.0
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    # License for the specific language governing permissions and limitations under
    # the License.
     
    # Click "View raw file" in the lower right for the best copy/paste view
     
    AREA_CODE = '717'                  # my area code
    GV_USER   = 'username@gmail.com'   # my GV e-mail address (user@gmail.com)
    GV_PASS   = 'GV password'          # my GV password
    CB_NUMBER = '1aaaxxxyyyy'          # my 11-digit SIP number (only one)
     
    SPEED_DIAL = {                     # my speed dial numbers
     '1'   => '19879879876',          # Mom
     '123' => '12345678901',          # Work
     '45'  => '17479876543',          # Gizmo BFF
     '411' => '8004664411',           # Google 411
     '266' => '4153767253@podlinez.net',     # CNN Headlines
    }
     
    begin
       sys.Log "** Call from #{req.Header.From} to #{req.URI.User} **"
     
     if sys.Out    # if outbound call
       num = req.URI.User.to_s        # Get a string copy of the number to dial
     
       num = SPEED_DIAL[num] || num   # Substitute with speed dial entry, if any
     
       case num
         when /@/ then sys.Dial num   # URI dialing
         when /^[2-9]\d{6}$/          # Local call, 7-digit number
           num = '1'+ AREA_CODE + num # prefix it with country and area code
         when /^[01]?([2-9]\d{9})/    # US number with or without country code
           num = '1' + $1             # add country code and truncate number to 10-digit
         when /^(011|00|\+)(\d{10,})/ # international number
           num = '+' + $2             # GoogleVoiceCall works with '+' prefix only
     
     
         else sys.Respond 603, 'Wrong number, check & dial again'
       end
     
       sys.Log "Calling #{num} via Google Voice"
       sys.GoogleVoiceCall GV_USER, GV_PASS, CB_NUMBER, num, '.*', CB_NUMBER =~ /^1747/ ? 7 : 1, 30
     
     else          # sys.Out
       sys.Dial "#{sys.Username}@local"
     end
     
    rescue
     sys.Log("** Error: " + $!) unless $!.to_s =~ /Thread was being aborted./
    end

    Select all the code in the box above, copy it to the clipboard, then paste it into the SipSorcery Dial Plan area (the large black box) like this:

  7. Scroll to the top of the black box where you just pasted the Simple Dial Plan so we can edit a 4 specific fields.
  8. The lines we’re going edit are the following (do not edit anything else in the script):
    1
    2
    3
    4
    
    AREA_CODE = '717'                  # my area code
    GV_USER   = 'username@gmail.com'   # my GV e-mail address (user@gmail.com)
    GV_PASS   = 'GV password'          # my GV password
    CB_NUMBER = '1aaaxxxyyyy'          # my 11-digit SIP number (only one)
  9. Change 717 to the area code of your Google Voice number. Leave the apostrophes in place only edit the 3 number in between!
  10. Change username@gmail.com to your Google Voice login email. Leave the apostrophes in place only edit the email address in between!
  11. Change GV password to your Google Voice login password. Leave the apostrophes in place only edit the numbers or letters in between!
  12. Change 1aaaxxxyyyy to your IPKall number. Leave the apostrophes in place only edit the numbers in between!
  13. Just to be clear: leave the apostrophes in place and only edit the 4 lines above. Nothing else! Once done, click Update.
  14. If you took too much time, then the dial plan update will fail. To fix this problem you’ll have copy your edited dial plan to Notepad, log out and relogin to SipSorcery, go back to the default dial plan, clear the box, and paste in your edited dial plan.
  15. If everything worked then you should see the following message:
  16. That’s it! Now go to Ekiga and dial “266.” If your dial plan is entered correctly then you should be hearing CNN headlines through your computer speakers. Hang up and try calling a US phone number and it should work. If it’s not working then go back and recheck all the steps.

After logging out from Ekiga you can use your SipSorcery login credentials in another computer-based softphone, a WiFi/3G phone’s SIP client, or a analog telephony adapter like the Linksys PAP2T-NA. I’ve used this configuration in all three scenarios and it works perfectly.

SipSorcery is a very powerful application but not a full PBX. The simplest usage scenario is to use SipSorcery to login to several SIP accounts on the SIP Providers tab so that you can receive calls from all of your other SIP accounts. There are several more complex use cases out there to do things like picking the cheapest VoIP provider to route outbound calls. Your imagination (and dial plan skills) is the limit so browse the SipSorcery forums to see what others are doing. If you want even more control over your VoIP calls such as menu systems for incoming calls and other great things then check out Ward Mundy’s The Incredible PBX. It can incorporate several Google Voice lines in different area codes and much more.