Thanks to the efforts of Scott Lawrence and Mike Eklund from the sipX-users forum, I have updated my previous post with instructions on how to configure sipX to use SIP/TCP when communicating with the Exchange server. Mike has been working on this problem for a while, and with Scott's guidance, was able to determine the appropriate configuration modifications needed to resolve the issue. Thanks guys, a job well done and I'm sure that many others will appreciate your efforts.
Previously, sipX made 4 attempts to contact the Exchange server using SIP/UDP, before falling back to SIP/TCP. This caused a 5 second delay before a connection was made, and about 50% of the time, the call timed out before the Exchange server had a chance to answer it. To resolve this, we are now able to get sipX to use SIP/TCP for all communications with our Exchange UM server.
Unfortunately, we can't do this through the web interface at this stage, but I believe the sipX developers may be working on adding more direct support for Exchange UM in a future release. In the mean time, we must create some additional XML files, and modify the sipX configuration file. Full details are available in the updated post. If you have already followed the older instructions, then please delete the Exchange dial plan you configured before proceeding.
Please note that if you have the Unified Messaging role installed on a server that has the Mailbox role installed, there may be resource contention issues that result in timeouts and/or broken speech synthesis. Basically, the store.exe process is designed to agressively cache mailbox data into RAM. As the UM processes are infrequently used, they are paged out to disk to free up RAM for store.exe. When you try and call the Exchange server, Windows has to load these pages back into RAM, resulting in further timeout delays. The call usually times out, but will connect straight away if you call again shortly after.
I recommend installing the UM role on a dedicated server (or one that at least does not have the Mailbox role installed) in a production environment. In a lab environment, you can change the size of the store.exe cache to relieve these issues be following the instructions at http://support.microsoft.com/default.aspx?kbid=815372&product=exch2003 (instructions are for Exchange 2003, but are the same for 2007).