Integrating Speech Server with Office Communications Server

While Speech Server is apart of Office Communications Server, the two do not rely on each and actually do not integrate with each other out of the box. However that doesn't mean it can not be done.

There are two main scenarios which I am always asked about are:

1.) Communicator Calls to Speech Server
2.) Transferring Speech Server calls to Communicator

Calling Speech Server from Communicator

The first thing you need to do is setup a static route in OCS to Speech Server. Here you will need to assign a sub domain, something like This tells OCS to route all calls where the domain contains to Speech Server.


Next in the Speech Server administrator console you will need to add the OCS Front End Server as a Trusted SIP Peer on non default ports, such as 5068 for TCP and  5069 for TLS. This is required as OCS doesn't handle the 302 Redirect Messages that Speech Server uses, by assigning non default ports we "turn off" these SIP messages. You will also need to enable Mutual TLS.

Note: This will be using TLS, OCS will already have a certificate installed, but Speech Server probably won't, now would be the time to install a certificate on Speech Server.

Next you will need to deploy your application and again assign non defaults ports, these ports should be the same ports as the Trusted SIP Peer. You can assign a "telephone number" to the application as well.

Now you can dial the Speech Server application from Communicator by dialing the static route, like
411 being the extension that you assigned to your application and being the sub domain you specified in the OCS routing tab.

Transferring Calls to OCS users

When trying to create a transfer type Speech Server application, you need to know one rule. You can only transfer via the SIP Peer in which the call orginated.

Let's take the static route example we setup previously, if my Speech Server application does a transfer to another OCS user, it would transfer back to the OCS Front End Server and would transfer apporiately via a specified SIP URI. However you couldn't transfer the call to say a PSTN, as the call orginated via OCS.

Note: To do this type of "internal" transfer, make sure to add Speech Server to the Host Authorization tab in the Front End Properties of OCS.

Back to the orginal scenario, a call comes in via the PSTN to probably a VoIP Gateway, meaning when we do a transfer it will be routed back to that same gateway. Depending on your VoIP Gateway, you need to have rules, one or more numbers assigned to forward to Speech Server, and the rest of the numbers should get routed to the Mediation Server.

Typically you do not want Speech Server to sit behind the Mediation Server but next it, as shown in the diagram below.

In your Speech Server application when we do a transfer, instead of transferring to a SIP URI like:;transport=tcp, you need to transfer to a TEL URI, like;transport=tcp.  Using the TEL URI, the gateway will correctly route it to the mediation server and the mediation server will in turn route it to the correct user.

Tip: Depending on your VoIP Gateway, SIP Proxy, PBX, whatever, specificing the transport parameter is a good idea. I've run into issues where the some 3rd party SIP applications revert back to UDP if this isn't specified.


Comments (5)

  1. A great post from Michael Dunn on Integrating Speech Server with Office Communications Server… Sent

  2. One of the questions I frequently get in the UC Metro classes is how to install and use OCS 2007 Speech Server. First, you have to download it. After that, installing it is easy, but there are two other things…

  3. dszabo says:

    Micheal, this was exactly the post that I was looking for a long time!!!! Thank for that!

  4. It looks like something simple to configure but it doens’t work for me.

    I was followining all the suggested steps but something weird is happening.

    Using the voip test tool I’m getting the following response:

    Registration State: Registering->Registered


    Session State: Idle->Connecting

    Provisional Response: 100 Trying

    Exception Message: The requested operation failed.

    Session State: Connecting->Idle

    Response Code: 404 Not Found

    Diagnostics: Error ID=1008

      Reason=Unable to resolve DNS SRV record


    Why is it trying to resolve the DNS srv records of my edge server? The static route has been set matching the domain name. I’m using the VOIP test tool on my OCS frontend server (so I/m calling in via Edge). My external DNS records were also registred on my internal DNS but after removing them and flushing the DNS I still get the error.

    Any suggestions on what’s happening here?


    P.S. hov can I open teh etl log files of speech server?

  5. says:

    Still no solution…I was parsing the trace files on the speech server but I can get any usefull information from it….


Skip to main content