As many of you know, we were ecstatic when Google Voice arrived with free U.S. calling, voice mail transcription, and SIP connectivity to Asterisk®. That lasted less than a week until Google slammed the SIP door and spoiled our party. But... "Where there's a will, there's a way" goes the old adage, and so it is with Google Voice and free Asterisk calling. It returns today, back from the dead, thanks to another column of Gizmo tips and tricks that we wrote several months ago. Turns out our friends at Gizmo are considerably more persuasive with the Google moguls than we are because they still have SIP connectivity to Google Voice. That got us to thinking. If we have a free Gizmo account and a free Google Voice account, why can't we do a quick SIP marriage of convenience between the two accounts and restore free calling to Asterisk? Lo and behold, it turns out you can. And today we'll show you how. Admittedly, this isn't as exciting as other 3-ways you may have tried, but it's still fun! Once we get all the pieces in place, you'll be able to pick up any phone on your Asterisk system and place a call to anywhere in the United States for free. All you have to dial is GV + the area code and phone number. Couldn't be any easier!
Update: The original SIP interface to Google Voice described in this posting no longer works. A new approach that really works is now available on Nerd Vittles at this link.
Within the past few months, we've added several hundred million free phone numbers to our Asterisk PBX by creating a Skype Gateway as well as Gizmo Backdoor Dialing1 and ENUM interfaces that didn't cost us a dime. When we add all the phones in the U.S. to that free calling list, we're getting very close to a billion free numbers. So welcome back... Googlified Messaging™.
Today's New Design. Much of today's column is a cut-and-paste job from previous tutorials because we really are marrying two previous tutorials to get this working. Here's the design. You need both a free Google Voice account and a Gizmo5 account. It's also free or almost free. Then we'll set up the Google Voice account to forward all incoming calls to voicemail. This allows you to call your Google Voice number and press a few keys to make an outbound call instead of listening to your voicemails. Next we'll set up our Gizmo5 account to forward all incoming calls to the SIP URI of our Google Voice number. We can get to Gizmo5 with a SIP call, but we can no longer place a direct SIP call to Google Voice. But Gizmo can! With a little dialplan voodoo, we'll tell Asterisk to place a SIP call to our Gizmo number. Gizmo then passes the call along with a SIP call to Google Voice. Asterisk counts to ten while the call is transferred to Google Voice. Then Asterisk acts like an auto-dialer by sending *, entering our Google Voice password, pressing 2, and finally dialing a 10-digit number plus # to place a free call to somewhere in the U.S. You'll never know any of this is happening behind the scenes until Aunt Betty answers her phone. And here's the best part of the story. The SIP call from your Asterisk server to your Gizmo number is free. The SIP connection from Gizmo transferring the call to your Google Voice number is free. And the phone call to any phone in the U.S. through Google Voice is free. FREE + FREE + FREE = FREE! And the sound quality is fantastic. The silver lining is that you can accomplish all of this and still use Google Voice as a message transcription service for your voicemails.
To get everything working, there are four steps: (1) configuring your Google Voice number to go directly to voicemail, (2) configuring your Gizmo5 number to forward all calls and send them via SIP to your Google Voice phone number, configuring FreePBX to route all calls with a GV prefix to your Gizmo5 SIP URI, and (4) configuring Asterisk to jump through the autodialer hoops to place an outbound call to any U.S. number through the Google Voice telephone interface. It sounds more complicated than it is. So hang on to your hat. Here we go!
Google Voice Design. To integrate free voicemail transcription and free U.S. calling into Asterisk, what we first must do is turn your Google Voice account into a glorified answering machine and message distribution system. When calls arrive on your Google Voice number, they will immediately trigger a greeting message that says something like this:
Thank you for calling Nerd Vittles. No one is available at the moment to take your call. After the tone, please identify yourself, leave a callback number, and a brief message. Your message will be transcribed and delivered to us. We will get back to you promptly. Please begin speaking after the tone.
Once a voicemail message is received, we want Google Voice to transcribe it and email us both the voicemail message and the transcribed text. The other feature we want is the ability to press *, enter our PIN, choose option 2 to place an outbound call, and dial a 10-digit number to any phone in the U.S. for free!
Google Voice Setup. Log into your Google Voice account and click Settings, General. In the Voicemail Greeting section of the form, record your greeting message as outlined above. In the Notifications section, identify the email and SMS addresses for delivery of your voicemail messages. In Voicemail Transcripts, check the option to transcribe voicemails. Now click on the Do Not Disturb check box to forward all inbound calls to voicemail.
Configuring Gizmo5. You can learn all about the host of features that Gizmo5 offers to the VoIP community by reading our previous article. Once you've set up your Gizmo account, log in and, in the Forwarding Gizmo5 Calls section of the form, click the Forward All Calls button. Next, click on the SIP option and enter your actual Google Voice phone number (instead of 6175171234) in SIP URI format: firstname.lastname@example.org:5061. Don't change anything else. Now click the Save button to save your settings.
Integrating Google Voice into Asterisk. This setup lets you place a call through Gizmo and Google Voice from any Asterisk phone by dialing the GV prefix plus a 10-digit number. So, to place a call to President Obama in Washington through Google Voice, you'd dial 48-202-456-1111. Good luck with that, but here's how...
17473456789 - Your Gizmo5 DID
8888 - Your Google Voice PIN
First, log into your Asterisk server as root and edit extensions_custom.conf. It's in the /etc/asterisk folder. Go to the very bottom of the file and insert the following code. Use your Gizmo phone number instead of 17473456789. Use your actual Google Voice PIN instead of 8888. Remember to expand the two-line dial string so it fits on a single line with no spaces! Save your changes and reload the dialplan:
asterisk -rx "dialplan reload"
exten => _X.,1,Dial(SIPemail@example.com
exten => _X.,n,Hangup
Next, open FreePBX with a web browser and choose Setup, Trunks, Add Custom Trunk. Insert the following Custom Dial String on the form and Submit Changes and reload the dialplan:
Finally, choose Setup, Outbound Routes, Add Route and fill in the following entries on the form:
Route Name: GoogleVoice
Dial Pattern: 48|NXXNXXXXXX
Trunk Seq: local/$OUTNUM$@custom-google-voice
Save your changes and reload the Asterisk dial plan one more time to complete the setup. Now you're all set to call the President whenever the urge strikes: 48-202-456-1111. And, remember, it's a free call... at least for now.
Creating Google Voice Favorites in Asterisk. If there are friends that you frequently call in distant places, you may find it more convenient to create Speed Dial numbers for them. Here's how to do it in Asterisk and still take advantage of free calling through Google Voice.
Log into your Asterisk server as root and again edit extensions_custom.conf in the /etc/asterisk folder. In the [from-internal-custom] context, add one or more entries for people you wish to call giving each of them their own extension on your PBX. Be sure to make the following substitutions and match your Gizmo and Google Voice credentials:
999 - Extension number to call
17473456789 - Your Gizmo5 DID
8888 - Your Google Voice PIN
1234567890 - Phone number of person to call
And here's the default entry which should be one continuous entry on one line:
When you finish making all the extension entries desired, save the file. Then reload your Asterisk dialplan:
asterisk -rx "dialplan reload"
Google Dialer for Asterisk. Another approach for outbound calling with Google Voice would be to create a simple dialer in your Asterisk dialplan. The idea here is that anyone can pick up a phone and dial *GV (which is *48) to place a call. They then will be prompted to enter the 10-digit number to call. This code would be inserted in the same [from-internal-custom] context, and remember to insert your actual Google Voice PIN and Gizmo DID in the dial string. Keep the entire Dial command on a single line (which we can't do in this blog's template). Reload the Asterisk dialplan when you're finished.
exten => *48,1,Answer
exten => *48,n,Wait(1)
exten => *48,n,Set(TIMEOUT(digit)=15)
exten => *48,n,Set(TIMEOUT(response)=20)
exten => *48,n,Playback(pls-entr-num-uwish2-call)
exten => *48,n,Read(NUM2CALL,beep,10)
exten => *48,n,Playback(pls-wait-connect-call)
exten => *48,n,Dial(SIPfirstname.lastname@example.org
exten => *48,n,Hangup
So... the ball is back in Google's court once again. Let's hope they make the right choice this time and leave SIP connectivity in place. Otherwise, S-K-Y-P-E is only a few small footsteps away. Enjoy!
Special Thanks to Our Generous Sponsors
Awesome Vitelity Special. Vitelity has generously offered a terrific discount for Nerd Vittles readers. You now can get an almost half-price DID from our special Vitelity sign-up link. If you're seeking the best flexibility in choosing an area code and phone number plus the lowest entry level pricing plus high quality calls, then Vitelity is the hands-down winner. Vitelity provides Tier A DID inbound service in over 3,000 rate centers throughout the US and Canada. When you use our special link to sign up, Nerd Vittles gets a few shekels down the road to support our open source development efforts while you get an incredible signup deal as well. The going rate for Vitelity's DID service is $7.95 a month which includes up to 4,000 incoming minutes on two simultaneous channels with terminations priced at 1.45¢ per minute. Not any more! For our users, here's a deal you can't (and shouldn't) refuse! Sign up now, and you can purchase a Tier A DID with unlimited incoming calls and four simultaneous channels for just $3.99 a month. To check availability of local numbers and tiers of service from Vitelity, click here. NOTE: You can only use the Nerd Vittles sign-up link to order your DIDs, or you won't get the special pricing! Vitelity's rate is just 1.44¢ per minute for outbound calls in the U.S. There is a $35 prepay when you sign up. This covers future usage. Any balance is refundable if you decide to discontinue service with Vitelity.
Some Recent Nerd Vittles Articles of Interest...
- Backdoor Dialing unfortunately has bitten the dust at least temporarily. [↩]