From the "man, I can’t believe I haven’t written about this yet" file…
Exchange Unified Messaging can make phone calls. (OK, OK; I did know that much!) For example, when you call in to Outlook Voice Access, you can ask Exchange to place a call to someone who’s in your personal Contacts folder, or in your organization’s GAL. It turns out that you can harness this feature by writing code to have Exchange UM place calls for you… sort of.
"How does it work?" you ask. Good question. It’s the same as the mechanism that Exchange uses to route calls through an auto-attendant. Let’s say that Alice calls the main number at Contoso. Alice’s device connects to the PSTN, which routes the call to the Contoso PBX (or OCS server, whichever; it doesn’t matter for our purposes).
The PBX sees the inbound call, consults its call coverage map, and sends the call to Exchange, which answers it and triggers the auto-attendant. If Alice requests Bob’s extension (or does anything else that requires the attendant to route the call, as opposed to just playing prompts and recording responses), Exchange will make a SIP request to the PBX asking that the call be transferred.
It turns out that Play on Phone uses the same trick. In fact, there are several other cool things you can do with the UM web service: play messages, reset user PINs, and play greeting messages among other things. This article has a summary of the things you can do, along with some (.NET Framework-based) code showing how to do raw SOAP calls and to use them to connect to the UM service. (There’s sample code for using the web service here, too, if you’re the coding sort.)
The article, sadly, doesn’t mention the power of Autodiscover, which is what you can and should use to find which UM service a given user should be connecting to. Regular users of Exchange Web Services already know that, however.
It’s too bad that you can’t use this feature to place a call to an arbitrary number and play whatever content you want (although that would be easy to do with Speech Server). Still, it’s a useful capability; I’d love to see an iPhone app that would tell the Exchange server to Play-on-Phone all my voice mail messages.