Since Asterisk® will no longer be able to "talk" to Google Voice after June 17, we promised to hold our nose and document how to salvage your Google Voice trunks. Our exercise for today is to show you how to deploy an OBi 200-series device which can speak the new Google Voice language and use it as a traditional SIP bridge between Google Voice’s proprietary SIP platform and your Asterisk server. We will skip the editorializing on why Google is making a terrible mistake by discarding XMPP and forcing users to a proprietary solution necessitating a hardware purchase without first offering an open standards solution as Google’s Community Manager promised here. Promises, of course, don’t keep your phones ringing. For the whole story, see our article from last Saturday. For today, you’ll need to shell out $50 for an OBi 200 device. Once you have it in hand, feel free to read on and we’ll get you back in business. For security reasons, it should be noted that today’s setup assumes you are running an Incredible PBX® server and OBi device locally behind a NAT-based router. This will work equally well with the Incredible PBX-enhanced versions of Issabel and VitalPBX. We’ll leave it to the FreePBX® folks to figure out a solution for their proprietary distro.
Everything we’re covering below will work just as well using any of the OBi 200-series devices. We’ve simply chosen to use an OBi202 in our examples today because it supports an extra phone port. But an OBi200 works just as well if you will only be deploying Google Voice trunks (up to 3 and perhaps more) for your PBX. They retail for approximately $50 and are readily available at Amazon through the link in the right column which also provides a few shekels for Nerd Vittles to keep the lights on. As mentioned last week, Obihai crippled the OBi 110-series devices which will no longer work with the new Google Voice setup. Such a fine company that we once praised for producing our Device of the Year. And don’t worry. If you ever visit their forum, you can expect a cheery reception from the Obihai forum moderator. Here’s the response we got1 when raising concerns about the demise of Google Voice XMPP:
Registering Your OBi2x Device with OBiTALK
A Quick Start Guide accompanies your OBi hardware. Following along in the tutorial will get your OBi set up using a free (so far) OBiTALK account. When you get to Step 5, you’ll be ready to set up your Google Voice account by clicking the Google Voice Set-Up button.
Before you begin the Google Voice setup, we strongly recommend that you plug a POTS phone into your OBi device and dial ***6 to update your firmware to the latest release. Depending upon where you purchased your device, it may or may not have the latest firmware which is required to communicate with Google Voice on or after June 17.
We also recommend that you dial ***1 and obtain the DHCP-assigned IP address for your OBi. You’ll need this in a few minutes. And, while you’re at it, be sure to set the OBi up behind a NAT-based router to protect it from intrusion. Once someone gains access to your OBi, they’ve essentially got the keys to your telecom castle. So always deploy an OBi behind a hardware-based firewall that is on the same private LAN as your Asterisk PBX. Finally, on your router, be sure to reserve the DHCP-assigned IP address of your OBi for permanent use by the OBi hardware. Otherwise, the IP address of your OBi may change, and this will break the SIP gateway connection to your Asterisk server.
Finally, a word about the new OBi setup. All of your settings are now stored and managed in the OBiTALK cloud. Obihai then pushes the configuration to your OBi device. To put it charitably, this usually works but sometimes it doesn’t, and you end up with a quirky OBi setup that looks correct in the cloud but simply doesn’t work. We’ve found the simplest solution is to unplug the device and then restart it. Then check all of your cloud-based settings when the OBi device comes back to life to be sure none of your settings disappeared. Sometimes they do! In the old days, you had the option of configuring your OBi device locally; however, Obihai (now Polycom) has disabled that functionality with the new Google Voice setup presumably to disguise what they are doing under the covers to connect to Google.
Configuring a Google Voice Trunk on OBi200
To give credit where credit is due, configuring a Google Voice trunk on the OBi 200-series devices is dead simple. Login into your OBiTALK account, click on your OBi device, and then click the Google Voice Set-Up button.
Enter your Google Voice credentials when prompted, give Obihai permission to control your Google Voice account, and you’re done. Within a few seconds, the connections dialog box should show Google Voice connected on service provider SP1.
If you haven’t already done so, plug a POTS phone into your OBi device and place a call to somebody by dialing a 10-digit number. Then use another phone and call the Google Voice number you assigned to your OBi device. The POTS phone should ring. Don’t continue until you get these calls working in both directions. You’d be wasting your time.
Now we need to adjust the destination for incoming calls to your OBi device and redirect them from the POTS phone to the SP3 trunk we’ll be using to connect to your Asterisk server. We’ll leave SP2 unoccupied in case you wish to add another Google Voice trunk down the road.
To make this change, click the OBi Expert Configuration button at the bottom of the Device Configuration window. Then click OK to confirm that you know what you’re doing. Next click the Enter OBi Expert button at the top of the next form. In the left column, click Voice Services and then SP1 Service. The fifth parameter is called X_InboundCallRoute. Beside it, uncheck both the OBiTALK Settings and Device Default checkboxes. Now enter sp3(6781234567) in the Value field for X_InboundCallRoute where 6781234567 is your actual Google Voice phone number (DID). Scroll to the bottom and click the Submit button.
Finally, at the top of the left column of the form, click Return to OBi Dashboard.
Configuring OBi SIP Trunk for Asterisk
1. Login to your OBi Dashboard using a web browser . After signing up for an account and registering your OBi device, click on the OBi 200 device in the My OBi Devices list.
2. In the Device Configuration dialog, click OBi Expert Configuration button. When prompted whether you’re sure, click OK.
3. In the OBi Expert Configuration Menu, click Enter OBi Expert button.
4. In the Production Information (left) column, click Service Providers.
5. In the Service Providers listing, click ITSP Profile C General.
6. For each of these fields, uncheck OBiTALK Settings and then uncheck Device Default:
- General:Name
- Service Provider Info:Name
- Service Provider Info:URL
7. Fill in the ! field Values as shown below using the private IP address of your PBX:
8. Click Submit button after checking your entries carefully.
9. In the Service Providers listing on the left, click ITSP Profile C SIP.
10. In the ITSP Profile, enter the private IP address of your PBX in the Proxy Server, Registrar Server, and Outbound Proxy fields after first unchecking both the OBiTALK Settings and Device Default checkboxes.
11. Scroll down the form to X_SpoofCallerID and uncheck both the OBiTALK Settings and Device Default checkboxes. Then check the Value field for X_SpoofCallerID.
12. Scroll down the form to X_DiscoverPublicAddress and uncheck both the OBiTALK Settings and Device Default checkboxes. Then uncheck the Value field for X_Discover PublicAddress.
13. Click Submit button after checking your entries beside the 5 red exclamation points.
14. In the Production Information (left) column, click Voice Services
15. In the Voice Services listing on the left, click SP3 Service.
16. In the SP3 Service Profile, fill in the 5 fields in which the OBiTALK Settings checkbox is unchecked. The AuthUsername and AuthPassword entries will be used to authenticate to your PBX so be sure to choose a very secure password. It’s your phone bill. The URI field actually makes the trunk connection to your PBX so replace the 192.168.0.82 entry shown with the actual IP address of your PBX.
17. In the SIP Credentials section of the form, make certain that X_EnforceRequestUserID is unchecked. If not, uncheck both the OBiTALK Settings and Device Default checkboxes and then uncheck X_EnforceRequestUserID.
18. If you do not want to pass the CallerID number with your calls, in the Calling Features section of the form, be sure to check AnonymousCallEnable after unchecking both the OBiTALK Settings and Device Default checkboxes.
19. In the Service Providers listing on the left, click ITSP Profile A SIP.
20. Be sure X_SpoofCallerID is checked.
21. Click Submit button after checking your entries carefully.
Configuring Incredible PBX GUI for an OBi200
On the Incredible PBX side, log into the GUI using a web browser. We’ll be adding a SIP trunk, an outbound route, and an inbound route to process calls to and from the OBi device.
Add a SIP Trunk with a Trunk Name matching whatever you used in your OBi SIP credentials, e.g. obi200 or obi202. Plug in your Outbound CallerID to match your Google Voice phone number. In the Dialed Number Manipulation Rules tab, add a Match Pattern of NXXNXXXXXX. In the SIP Settings tab for Outgoing, the Trunk Name should match whatever you used on the OBi side, e.g. obi200 or obi202. In the PEER DETAILS, enter the following using the default username and password you assigned on the OBi side. Normally, port 5061 is the default port assigned on the OBi side. If you get a failed registration, try 5060 and then 5062 and 5063. Click Submit and reload your dialplan when finished.
type=friend defaultuser=obi200 secret=your-password qualify=yes port=5061 nat=yes host=dynamic dtmfmode=rfc2833 disallow=all context=from-trunk canreinvite=no allow=ulaw insecure=port,invite
For Outbound Call Routing, we recommend an Outbound Route using the 624 (OBI) prefix and 10-digit numbers. For example, if a user dials 624-888-1234567, your Incredible PBX server would place a call using the OBi’s Google Voice trunk to 1-888-1234567. When your Outbound Route setup looks like the following, click Submit and reload your dialplan.
For Inbound Call Routing, create an Inbound Route specifying a DID Number to match your Google Voice number. Choose a Call Destination to meet your own requirements, e.g. an extension, ring group, or IVR. Then click Submit and reload your dialplan.
Now you’re ready to test an outgoing call by dialing the OBi prefix (624) plus a 10-digit number. Then place a call to your Google Voice number using your cellphone and be sure Asterisk routes it to the destination you specified in your inbound route above.
Configuring VitalPBX to Use an OBi200
Truth be told, we weren’t bright enough to figure out how to configure the VitalPBX Trunk using credentials so we simply set up the SIP trunk using IP address authentication with the IP address of the OBi device. It works just as well and just goes to prove there’s always more than one way to skin a cat. So here’s the Trunk configuration on the VitalPBX side. The only entry you will need to change is the Host IP address for your OBi device. If you don’t know it, plug a phone into the OBi and dial ***1.
NOTE: For the Username and Description fields below, be sure to match what you used on the OBi side (above) for your SIP credentials, i.e. obi200 or obi202. If they don’t match on both devices, you won’t get a successful connection. Our apologies for mixing apples and oranges in the screenshots.
For Outbound Call Routing, we recommend an Outbound Route using the 624 (OBI) prefix and 10-digit numbers. For example, if a user dials 624-888-1234567, the VitalPBX server would place a call using the OBi’s Google Voice trunk to 1-888-1234567. Here’s the Outbound Route setup to make that happen:
For Inbound Call Routing, go to PBX:External:Inbound Routes and add an inbound route and destination for calls from your 10-digit Google Voice number. Or you can use the Default Inbound Route which we explained in our previous VitalPBX tutorial. Basically, you set up an Inbound Route with a Description and Routing Method of Default. All the other fields should be left as is except for the Inbound Destination. For the destination, you can choose an IVR, Extension, Ring Group, etc. to meet your own requirements.
Originally published: Monday, May 14, 2018
Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a difficult place to address support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forum. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, the PIAF Forum is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.
SPECIAL TREAT: If you could use one or more free DIDs in the U.S. with unlimited inbound calls and unlimited simultaneous channels, then today’s your lucky day. TelecomsXChange and Bluebird Communications have a few hundred thousand DIDs to give away so you better hurry. You have your choice of DID locations including New York, New Jersey, California, Texas, and Iowa. The DIDs support Voice, Fax, Video, and even Text Messaging (by request). The only requirement at your end is a dedicated IP address for your VoIP server. Once you receive your welcome email with your number, be sure to whitelist the provider’s IP address in your firewall. For Incredible PBX servers, use add-ip to whitelist the UDP SIP port, 5060, using the IP address provided in your welcoming email.
Here’s the link to order your DIDs.
Your DID Trunk Setup in your favorite GUI should look like this:
Trunk Name: IPC
Peer Details:
type=friend
qualify=yes
host={IP address provided in welcome email}
context=from-trunk
Your Inbound Route should specify the 10-digit DID. Enjoy!
Need help with Asterisk? Visit the PBX in a Flash Forum.
Special Thanks to Our Generous Sponsors
FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.
BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.
The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.
VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!
Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.
- You can always find a little humor in insults if you dig deep enough. Ironically and unbeknownst to our pal, Steve, it was Sherman Scholten and his OBi development team that were among the first Google Voice "freeloaders." Only years later after Google Voice was integrated into FreeSwitch did Josh Culp at Digium perfect a clean way to integrate Google Voice into the Asterisk platform. [↩]
I do not have an obi (thank god!) but i was curious in reading this what part of the Obi diverts the incoming call to the PBX and visa versa?
Thank you, thank you, thank you!
As an Asterisk/FreePBX (yeah, I know) hobbyist, I was dreading the demise of GV’s XMPP-ending. After reading this post I bought an Obi202 to setup my two GV numbers/trunks on my RasPBX. It works like a charm!
Step by step, and a little translating to make the second set work (SP2 and SP4) I was able to get both numbers to work as trunks, as well as in/out-routes. All I had left to do was delete my Google Motif entries and it worked perfectly! Thanks again, Ward!
is there anyway to set this up without having the obi device on the same private network?
@mendel: I have the Obi202 setup at the office and iPBX 13-13 is on a HiFormance VPS server. I’m able to make outgoing calls, but not receiving incoming yet.
Great guide for a stinky situation 😉
Can you please advise how to set this up for a second and third GV line?
Can the additional lines use the same trunk to asterisk and send their DID info or will it require a trunk for each google line and therefore it will only be possible to have two GV lines per obi? (SP1+SP3 and then SP2+SP4)
Thanks for the detail instruction. I purchased OBI200 years ago when we had a glitch with GV. I didn’t spend time to figure out outbound redirect. Thanks to you, I now have a complete setup with two GV numbers.
Interestingly, after following your guidance, OBI web shows I have SP3 and SP4 "Not Configured". The inbound and outbound both work though.