Think of the Lync client as being built out of LEGO blocks, each providing a specifi c piece of functionality such as showing the presence of contacts, organizing contacts into groups, and interacting with contacts by starting instant message or phone conversations. The Lync controls separate the functionality in Lync clients into individual controls that developers can drag and drop into their Windows Presentation Foundation (WPF) or Silverlight applications.
The Lync controls include a control to show the presence of a contact; for example, the presence of a project manager in a CRM system. Controls are also available to easily start an instant message or audio conversation with that contact at the click of a button. with no additional code required.
A set of other controls provides functionality for managing contact lists; for example, to integrate the user’s Lync contact list into an application. You can also use custom contact lists to create and display an ad-hoc list of contacts, such as the account team for a client in a CRM application. Additional controls are available to search for contacts and display the results. Controls are also available to set the current user’s presence, personal note, and location.
Due to their obvious dependence on user interface elements of the Lync client, the Lync controls are not available in UI Suppression mode.
Integrating Lync functionality into applications using the Lync controls allows users to launch communications directly from the application that they are working in without needing to switch to the Lync client. The Lync controls are available in WPF and Silverlight and are extremely easy to use; you only need to drag and drop the appropriate controls into the application, and they work
without the need for any additional code.
The Lync API object model exposes extensibility points that allow developers to build applications that interact with the running instance of the Lync client. You can use the Lync API to programmatically sign a user into the Lync client and handle events for changes in its state. You can also start a conversation, add participants, handle conversation and participant events, and add contextual data to the conversation.
You can use the Lync API to create subscriptions on attributes of contacts in your contact list; for example, to track when the availability of a particular contact changes. The Lync API also provides functionality to modify attributes of users signed in to Lync, such as changing their presence or publishing a personal note or location.
Like the IMessenger API, the Lync API includes automation: the ability to start conversations in different modalities (such as instant message or audio/video) with a very small amount of code. The functionality in automation simply invokes the necessary Lync user interface elements, such as a Lync conversation that includes the Application Sharing modality so that a user can share her desktop with another user. Because it is dependent on Lync user interface elements, the functionality in automation is not available when the Lync client is running in UI Suppression mode.
In conjunction with the Lync controls, you can use the Lync API to easily add communications functionality into Silverlight, WPF, and Windows Forms applications. For example, you can spruce up a customer relationship management (CRM) application by integrating presence and click-to-call functionality, allowing users to accomplish their work without needing to switch back and forth between the application and the Lync client.
When the Lync client is configured to run in UI Suppression mode, its interface is completely hidden from the user. Applications that use Lync UI Suppression are responsible for recreating those user interface elements from scratch. The Lync API with Lync running in UI Suppression mode is the recommended development pattern for applications you would have previously built with the UCC API.
Lync UI Suppression requires that the Lync client is installed on the user ’ s machine; this eliminates the complexity of managing the connectivity of the application back to the Lync server infrastructure. In UI Suppression, you use the Lync API to replicate some of the functionality available in the Lync client, such as signing users into Lync, retrieving their contact list, and starting and responding to conversations in different modalities.
When working with UI Suppression, you interact with conversations at the modality level—activating individual modalities manually, creating conversations, adding participants, and disconnecting the modalities when the conversation is completed. For example, you can build a Silverlight instant messaging client that provides a completely customized user interface for instant message conversations. In this case, you would be responsible for recreating application functionality and user interface elements such as a contact list and conversation window. You would work directly with the instant message modality, creating a conversation, connecting the modality, sending instant message text to participants, notifying participants when someone is typing, and delivering the instant message text to the participants in the conversation.
Using the Lync API with Lync running in UI Suppression mode, you can build compelling Lync-replacement solutions such as a custom instant messaging client, or a dedicated audio/video conferencing solution.