Comparing Unified Communications APIs
Summary: This article describes the 2010 APIs available for Microsoft Unified Communications development.
Applies to: Microsoft Lync Server 2010 | Microsoft Lync 2010
Published: June 2011 | Provided by: John Clarkson, Microsoft | About the Author
Unified Communications 2010 SDKs
This article is an update of the Unified Communications Roadmap article covering the 2010 release of Lync Server 2010, the Lync client and the Unified Communications Managed API. This article gives guidance on the intended use of the current set of APIs, and how to prepare for anticipated updates.
Use the SDKs featured in this article to develop real-time messaging, voice, and video-conferencing applications for the mobile and desktop environment.
Lync 2010 SDK
The Microsoft Lync 2010 SDK is the key SDK to add Microsoft Lync 2010 functionality to existing line-of-business (LOB) applications, or to create a custom client that includes Lync 2010 features. The Lync 2010 SDK is meant for Windows-based applications and requires that the Lync 2010 client must be a running process on the computer that hosts the Microsoft Lync 2010 API application.
The API consists of two layers:
The Lync 2010 Managed API (formerly known as OCOM, or Office Communicator Object Model).
Microsoft Lync 2010 Controls for Microsoft Windows Presentation Foundation and Microsoft Silverlight.
The Lync 2010 Managed API includes the following namespaces, each documented in the MSDN Library.
The Lync 2010 SDK supports the same business logic as the Microsoft Lync 2010 client. It is a high-level API that lets developers easily add Lync features to an existing business application. This can be as easy as dragging controls representing UI elements of Lync 2010, such as the MyStatusArea or ContactSearch controls into the XAML design pane. For example, see the demonstration video Add Presence to a WPF Application. For more advanced scenarios, use a .NET Framework language to incorporate Lync 2010 API features into your application.
Figure 1. Lync 2010 Model API application architecture
Conversations appear in the Lync 2010 conversation window. Lync 2010 API is generally used to start a new conversation within your custom application, after which you participate in that conversation using the conversation window. Lync 2010 API can also be used to generate a contact list within your custom application by using data obtained from Lync 2010. For more information, see Walkthrough: Display a Customized List of Team Members.
Use UI suppression in Microsoft Lync 2010 SDK applications to completely hide the Microsoft Lync 2010 UI. UI suppression is useful to support development of a customized, alternative UI in a Lync SDK application. UI suppression disables Microsoft Lync Controls and extensibility through the Automation class. The Lync 2010 Automation API differs from the Microsoft Office Communicator Automation API. For more information, see Understanding UI Suppression in Lync SDK.
Figure 2. Lync 2010 SDK application architecture with UI suppression
The Microsoft Lync 2010 Conversation Window Extension (CWE) is an embedded browser that allows display of a contextual application with a Lync 2010 conversation. The Extensibility window provides a hosting environment that supports traditional and rich Internet applications. To display a Microsoft Silverlight application in the CWE, embed the application in an HTML page. For more information, see Walkthrough: Write a Silverlight Application for the Conversation Window Extension. Silverlight contextual applications that run in the CWE have programmatic access to the Lync 2010 API.
The Lync 2010 Managed API replaces two existing APIs: the Office Communicator Automation API, and the Microsoft Unified Communications Client API 1.0. Lync Server 2010 still supports the Office Communicator Automation API, but developers should prepare for support ending beyond Lync Server 2010. The Unified Communications Client API 1.0 is a low level API that lets developers build compatible client applications from the ground up. Apart from minor interoperability fixes the Unified Communications Client API 1.0 has not been updated since its initial release with Office Communications Server 2007. It requires developers to build their own business logic. Lync Server 2010 still supports the Unified Communications Client API 1.0, but developers should prepare for support ending beyond Lync Server 2010.
Figure 3. Unified Communications Client API 1.0 application architecture
Unified Communications Managed API 3.0 Core SDK
Use Microsoft Unified Communications Managed API (UCMA) 3.0 Core SDK to build either multichannel (IM, Voice, video, and desktop sharing) applications for Lync Server 2010 or for voice-only applications connecting to supported SIP-based IP gateways or IP PBXs. See the MSDN article Telephony Advisor for Exchange 2010. The UCMA 3.0 API is released and supported as 64-bit only and is therefore used mostly to build middle-tier applications. UCMA 3.0 provides a C# API that includes development and runtime components. Runtime components contain commonly used pre-compiled functions and methods, and have distinct advantages such as speed and application size.
Applications built on UCMA 3.0 can incorporate Unified Communications concepts such as contacts, extensibility, presence, calls, conversations, and conferences.
UCMA Classes and Namespaces
Additionally, the UCMA 3.0 Core SDK includes the Microsoft Speech Platform SDK (x64) v10.2, and a 2.x compatible VoiceXML browser that supports the building of speech-enabled interactive voice response (IVR) applications. The VoiceXML browser available in UCMA 3.0 is based on the VoiceXML browser in Microsoft Office Communications Server 2007 Speech Server. UCMA 3.0 also adds improved support for customer care, contact center, or helpdesk scenarios such as automatic call distribution (ACD), music-on-hold, call recording and supervisory features such as silent mentoring and interventions.
If you are looking for a web service that provides functionality similar to Microsoft Office Communicator Web Access (2007), build it on top of UCMA 3.0. UCMA 3.0 supports creating a web client for conferencing and presence, and also enables web chat applications that resemble Communicator Web Access.
Additional APIs support single logon via the voice channel (protected by a PIN) to Active Directory-controlled resources, such as the ability to join online meetings scheduled in Exchange, triaging SharePoint-based tasks, or listening to Exchange voice mail.
For more information, see Unified Communications Managed API 3.0 Core SDK Documentation.
UCMA 3.0 replaces two earlier APIs: the Microsoft Unified Communications Managed API 2.0 Core SDK, and Office Communications Server 2007 Speech Server. UCMA 3.0 coverage of speech features is not as extensive as with Office Communications Server 2007 Speech Server. Documentation for the Unified Communications Managed API 2.0 Speech Class Library is available on MSDN.
Figure 4. UCMA 3.0 Core SDK hierarchy
Unified Communications Managed API 3.0 Workflow SDK
Workflow activities in the UCMA 3.0 Workflow SDK are based on the Microsoft .NET Framework 3.5 Service Pack 1 version of Windows Workflow Foundation. Use these workflow activities to build bots, applications for IM, and simple IVR applications. The UCMA 3.0 Workflow API contains 41 activities, listed in the MSDN Library article Workflow.Activities Namespace.
The UCMA 3.0 Workflow API succeeds the UCMA 2.0 Workflow API and contains a subset of the activities provided by Office Communications Server 2007 Speech Server. A major difference between the UCMA Workflow API and Office Communications Server 2007 Speech Server is that the UCMA Workflow activities are hosted in the Windows Workflow Foundation runtime of .NET Framework 3.5 Service Pack 1, whereas Office Communications Server 2007 Speech Server used a proprietary instance of the workflow engine. Therefore, the Office Communications Server 2007 Speech Server workflows and the UCMA Workflow APIs are incompatible.
Windows Workflow Foundation 4 requires .NET Framework 4. UCMA 3.0 workflows are only supported under .NET Framework 3.5 Service Pack 1. The next version of UCMA will be based on .NET Framework 4.0 and will not be compatible with earlier versions of .NET Framework. There is no plan to upgrade the UCMA Workflow API to .NET Framework 4.0. Compiled UCMA 3.0 workflows will run in the .NET 4.0 compatibility mode, but there will be no Visual Studio workflow designer support for UCMA 3.0 Workflow activities. Because the UCMA 3.0 Core API has a migration path to UCMA 4.0, developers are encouraged to choose UCMA 3.0 Core as their preferred platform to ease future upgrades.
Figure 5. UCMA 3.0 Workflow API application architecture
Lync Server 2010 SDK
Use Microsoft Lync Server 2010 SDK to create server applications that use Session Initiation Protocol (SIP), or SIP for Instant Messaging and Presence Leveraging Extensions (SIMPLE) with Microsoft Lync Server 2010. Lync Server 2010 SDK is designed for the following audiences:
Developers who want to use application manifests and Microsoft SIP Processing Language (MSPL) scripts to implement simple custom SIP message filtering and routing on computers in a Lync Server 2010 deployment.
Experienced SIP developers who want to create SIP-based managed-code server applications that implement real-time content delivery or an instant messaging infrastructure. This scenario includes applications that work directly with SIP transaction objects or support multithreaded transactions.
The Lync Server 2010 MSPL and managed API is largely the same as the MSPL and managed API included with Microsoft Office Communications Server 2007 R2, except for a few new features. For more information, see Lync Server 2010 SDK Documentation.
Lync Server 2010 Group Chat SDK
Use Microsoft Lync Server 2010 Group Chat SDK to programmatically search for and manage chat rooms, and interact with other users in conversations.
Lync Server 2010 Group Chat API provides a managed-code platform for implementing group chat enabled applications that run on Lync Server 2010. The platform is multilayered, and can be used for both administration and management of group chat services, and for applications that participate directly in group chat conversations. The Group Chat API is built on top of UCMA, and is best described as an UCMA API that lets other applications to programmatically interact with it.
The classes are organized in two namespaces:
The Microsoft.Rtc.Collaboration.GroupChat namespace provides basic functionality for group chat applications that includes the ability to send and receive chat messages, browse the chat room directory, and query chat history.
The Microsoft.Rtc.Collaboration.GroupChat.Management namespace provides advanced features that are used to manage chat rooms and to administer groups of chat users.
For more information, see Lync Server 2010 Group Chat SDK Documentation.
Unified Communications Enhanced Presence Schemas for Lync Server 2010
Use Microsoft Unified Communications Enhanced Presence Schemas for Microsoft Lync Server 2010 to publish or subscribe to enhanced presence in a Lync Server 2010 deployment with or without interoperability with Microsoft Lync 2010. The documentation discusses the following enhanced presence topics.
Lync Server 2010 presence infrastructure and the XML-based data type system that represents enhanced presence data.
Adding enhanced presence features to an application.
The enhanced presence data that is defined and used by Lync 2010.
Application behavior for each enhanced presence feature that is supported by Lync 2010.
Unified Communications Enhanced Presence Schema includes the XML Schema Definition (XSD) files for the category schemas that are defined and used by Lync 2010.
For more information, see Unified Communications Enhanced Presence Schemas for Lync Server 2010 Documentation.
For more information, see the following resources:
About the Author
John Clarkson is a programming writer with the Microsoft Lync product team.