OCS 2007 R2, Trixbox, and Unified Messaging, Part 1
Posted by: Tom Karpowitz in Unified Communications, Trixbox, Quintum, OCS, Exchange on Oct 03, 2009
We are setting up a full-bore implementation of Microsoft Office Communications Server 2007 R2 (OCS 2007 R2) in order to evaluate its capabilities. To date, I have set up a full Enterprise-type deployment and it is working flawlessly (e.g. all functions of Office Communicator 2007 R2 and Communicator Web Access work as expected, both on the intranet LAN and via the public Internet). We will be expanding our evaluation to include the broader Unified Communications platform which uses additional functionality provided by Exchange 2007 (which we also have deployed and operational).
Some of the OCS and UC features require the use of POTS lines to give "regular" (non-IP-phone-or-SIP-client-using) users access to facilities such as audio conferencing, LiveMeeting, voice-driven access to Outlook, etc. In order to do this, you need to provide OCS and Exchange with SIP-based access to POTS lines. I was given this task, and chose the Trixbox soft PBX platform as an element of my solution. In Part 1 of this article, I will describe the setup of Trixbox and the use of a Quintum SIP gateway to connect to our POTS lines.
I have not played around with Trixbox (or Asterisk) for quite awhile, and was delighted to find that the 2.8 release includes support for SIP over TCP, an essential requirement for connection to the Unified Communications platform. I downloaded the latest Trixbox release (2.8.0.1) from the Trixbox web site, burned the ISO to a CD, and installed on a Sun V20Z. Installation went flawlessly.
To verify that I had installed and configured Trixbox correctly, I created a couple of SIP extensions (101 and 102) and used the freeware Express Talk SIP soft phone (available from NCH Software) on two laptops to verify that I could make and receive calls successfully using the SIP extensions. So far so good.
Next, I needed a way to physically connect four POTS lines (FXO) to Trixbox. In the past, I have used PCI cards plugged into the Trixbox system to do the job. This time, however, I opted for a SIP gateway product, which I believe adds quite a bit more flexibility. There are many players in this market (e.g. Cisco/Linksys, Quintum, Grandstream, etc). I went with Quintum because they are listed as a Microsoft integration partner for OCS, and I assumed that I might have fewer OCS-related difficulties as a result. I selected the Quintum Tenor AFT400, which provides 4 FXO connections, a 10/100 Ethernet LAN connection, and simple manageability for a very reasonable price (I paid about US$330.00).
Physically installing the AFT400 is trivial. I connected the four POTS lines using standard RJ11-terminated phone cables, cabled it to the LAN, and applied power. Right out of the box, the system uses DHCP to acquire an address. There is a management application which you install on a Windows system that can locate Quintum systems on the network and act as their "GUI". The first time you connect to the device it takes you to a wizard which you can use to simplify the deployment process. (I opted to first update the unit's firmware using a download from Quintum's web site).
My expectations were high; things were going well, the wizard-based configuration seemed simple enough, and I thought I'd be done in record time. Of course, I was proven wrong.
Now, while I might (not so modestly) consider myself to be a computer expert, I am by no means a Trixbox/Asterisk expert. So I did my best to follow the scant documentation available to me and make a best effort at configuring Trixbox and the AFT400 properly. Unfortunately there were two primary problems that I encountered. After MUCH Googling, documentation reading, and good ol' trial-and-error, I finally worked my way past them.
-
When I tried to dial out through the AFT400, I received an "all circuits are busy" status. This turned out to be a codec problem. Out-of-the-box, the AFT400 is configured to use the G.723 and G.729 codecs; these codecs are not installed and useable on a defaul Trixbox installation. As a result, no line was configured with codecs that matched the request, so "all circuits were busy". My solution was to simply enable G.723 and G.729 support on Trixbox. (Alternatively, I could have changed the codecs used on the AFT400 side... the important thing is that both ends have codecs that they agree upon.)
-
The AFT400 would not successfully SIP Register itself with Trixbox. Although I thought I had a properly-defined SIP Trunk under Trixbox, the AFT400 SIP Registration calls would time out and retry endlessly. As far as I can tell, the AFT400 wants to be accessed as a SIP Trunk for outbound calls, but accessed as a SIP Extension for inbound calls (!!!). I created both a SIP Trunk definition and a SIP Extension definition for the AFT400 under Trixbox and things worked correctly.
What follows are the steps and configuration values I used to create a working system. Let me restate that I am by no means a Trixbox/Asterisk expert, so this configuration may not be optimal, but it DOES seem to be working as expected.
For purposes of this tutorial, the following data are relevant:
- The DNS domain foo.local is functional on the local LAN, with DNS servers at 10.0.0.1 and 10.0.0.2
- The Trixbox server is named TRIXIE (trixie.foo.local) and has been assigned the static IP address 10.0.0.9
- The AFT400 is named SIPPYCUP (sippycup.foo.local) and has been assigned the static IP address 10.0.0.25
With that as background, here's what I did...
- Physically cabled up the AFT400 and applied power.
- Installed the Tenor Configuration Manager (TCM) software on a LAN client so as to easily manage the AFT400.
- Started TCM and pointed it at SIPPYCUP. Used the menu to download and flash the latest 'n' greatest firmware update.
- Reconnected to SIPPYCUP and stepped through the configuration wizard...
- Set up static IP addresses for SIPPYCUP and the DNS servers.
- Did not configure a dial plan.
- Did not change the progress tone settings.
- In VoIP Routing, chose SIP Only.
- Enabled Hopoff with the default patterns used.
- Set my SIP server address to 10.0.0.9.
- For SIP configuration, my User ID is 777 (more on this later), my password is something-I-won't-actually-list-in-this-blog, and I left "Contact" blank.
- I answered No to "disable any PBX-side channels".
-
After completing the wizard, I switched to "Advanced Explore" view to tweak a few things that were either the result of wizard bugs or were not accessible using the wizard.
- The time server wizard has issues, so I manually configured the time server parameters and verified that they were correct.
- Under VoIP Routing, in Static Route-1, I added a number pattern for extension/number "*", type Public, Priority 0.
- Under Trunk Routing Configuration -> Trunk Circuit Routing Groups -> Trunk Circuit Routing Group-line, I set the SIP User Agent to SIPUserAgent-101.
- Under Line Routing Configuration -> Line Circuit Routing Groups -> Line Circuit Routing Group-phone, I set the Caller ID Type to "Use obtained caller ID; Otherwise, use area code + 1st LDN".
- I rebooted the AFT400 just for grins.
-
With the AFT400 configured, I turned my attention to Trixbox. As mentioned earlier, to avoid codec problems I enabled support for the G.723 and G.729 codecs on TRIXIE.
-
Next, I added a SIP trunk named "sippycup". Under Outgoing Settings, the PEER Details box contains the following:
- Under Incoming Settings, the USER Context is from-pstn. The UserDetails and Register String boxes are empty.
-
With the trunk configured, I created a SIP Extension, 777, with the expected password. In the disallow field I put "all". and the allow field contains "g729&g723". All other parameters are the default values.
-
I defined an Outbound Route to route all desired dial patterns to SIP/sippycup.
-
For testing purposes, I created an Inbound Route which routes all calls from all extension to extension 101.
context=from-trunk
disallow=all
allow=g729&g723
dtmfmode=rfc2833
host=10.0.0.25
insecure=invite
type=friend
secret=something-I-won't-actually-list-in-this-blog
username=777
qualify=yes
And that was it. At this point, I could dial any of the four POTS numbers using my desk phone and SIP extension 101 would ring and could process the call. Likewise, using the SIP soft phones, I could dial out to landline phone numbers and they worked as expected. Remarkably, even Caller ID worked properly in both directions!
The Quintum Tenor AFT400 works as advertised and seems to be a nice little box. However, I must admit to being a little bit disappointed in the lack of documentation available on Quintum's website and elsewhere. I fully understand that this device is targetted primarily at integrators who are building and supporting telephony systems... but what if I am an integrator? I have to believe that Asterisk/Trixbox based systems account for a large percentage of Quintum's target customer base... with that in mind, a clear piece of documentation with thorough examples for attaching their products to Asterisk/Trixbox should be mandatory.
-
|2010-01-06 10:05:40 Tom Karpowitz@Greg: This project was temporarily put on the back burner. In the not TOO distant future, I expect to continue with Part 2, which will document how to get OCS/Exchange/UM working with this infrastructure.
One thing I did discover after writing this blog post: for the specific usage of providing a POTS gateway for OCS/Exchange/UM, I/you/we may not need to use Asterisk/Trixbox at all! In other words, the AFT400 has OCS-specific functionality built in (if you know the secret handshake to activate it) that seems to be "enough" to act as a POTS gateway without using Asterisk/Trixbox. As I figure all of that stuff out I will post about it.
