1. Overview
When it comes to extensibility, there is so much
that Lync can do that at first it can be overwhelming to consider all
the possibilities. Imagine being able to enable your whole enterprise
for VoIP. Think of the savings you can get by replacing all the
telephony hardware with a software solution. The capability to have
instant communications with employees, vendors, and customers worldwide
using a single Lync client is powerful. Think of the travel expenses
you can save by using the same client instead of having to gather your
far-flung team together in one city for meetings.
Think about your company help desk and your customer
support individuals being able to share desktops to resolve problems.
What could be done to decrease the time it takes to deal with support
issues? What would it do for employee morale or for customer
satisfaction? All this functionality is available right out of the box.
But there comes a time when the “wow” starts to wear
off and you begin asking the what-if questions. What if Lync could do
this? Or what if it could do that? How can Lync help me conduct my
business better? After using Lync for a while, you begin to see not
limitations in Lync but rather possibilities. You start seeing areas of
your business that could benefit from the features of Lync. You begin
to see how it can integrate and become an integral part of your
business processes.
At
this point, you might ask how Lync can do the things you need.
Microsoft has thought of you and provided application programming
interfaces (APIs) that enable you to tap into the power and
functionality of Lync.
2. Server APIs
The server-side API is UCMA 3.0, which is a managed
code API for building communications solutions that run against Lync
Server—though in some cases the applications run under the UCMA Runtime
without Communications Server. This API is highly scalable, very
extensible, and is made up of multiple modalities (for example, Core,
UCMA Runtime, and so on).
It allows for application provisioning and
management as well as handling publishing of endpoints and subscribing
to events. It enables you to create endpoints for audio, video, and
messaging and can even serve as a back-to-back user agent. So, what
kind of applications can you create with UCMA 3.0?
It can be used in a help desk or contact center/call
center environment for enabling supervisors to monitor IM chats or
voice calls, whisper instructions to an agent, or enable the supervisor
to take over the conversation if needed.
One popular use is for Interactive Voice Response
(IVR) or personal virtual assistants. Think what it would be like if
your customers started a voice call or an IM chat with an application
that prompted the user for information and provided the caller with
needed information or directed the call/chat to the correct agent to
handle the customer’s request. You can even enable your customers to do
all this from your website without requiring the Lync client to be
installed on its local PC.
Have you ever received automated phone calls around
election time or had an automated call from your doctor’s office or the
kid’s school? UCMA 3.0 can do these tasks, too. Imagine what it would
do for your business if you called your customers telling them about a
new product in your line.
There are two basic modalities that you can use to
achieve all this functionality. The Core API enables you full access to
Lync Server and lets you get down and dirty by wiring up your event
handlers to respond and add functionality to audio, video, and IM
streams.
My favorite modality, and the one that most
people start out with, is the UCMA 3.0 Workflow API. The Workflow API
abstracts a subset of the functionality found in the UCMA 3.0 SDK. You
can call the UCMA 3.0 SDK code directly from your Workflow activities.
It is also built on top of Microsoft Speech, which means it gives you
text-to-speech (TTS), speech recognition, and speech synthesis
capabilities. It leverages the communications features of the UCMA SDK,
but does so using an easy-to-read visual development model.
3. Client APIs
On
the client side, the Lync Server API enables you to add Lync client
functionality and features to your own line-of-business applications.
Imagine being able to view and display presence in your custom
inventory control software. What if, while running your custom
inventory application, you could open an IM chat window and chat with
the supply room clerk to verify that you have enough inventories or
start a chat with your counterpart at another store to ask a question
about a product? And pass your current context to the remote party so
that they will know exactly what you want to chat about?
The Communicator API enables you to do all these
things. You can use it to automate the Lync client or build custom Lync
clients (imagine what a round version of the Lync client would look
like). You get to define what the UI of your application looks like.
The API does this by reusing the Lync client connection, which means
that you need the Lync client running on your client PC. Sometimes, as
in the case of a lobby kiosk, you might not want the user to know that
the Lync client is running. You can hide it so that your application is
all the user sees.
API Objects and Methods
Let’s look at some of these features starting with an overview of some of the objects and methods that make up the API.
The UIAutomation object starts conversations (IM and
voice) as well as enabling you to join a conference or add contacts.
The UIAutomation class enables you to start instant messaging or audio
conversations, share the desktop, or transfer a file. In other words,
it enables you to automate the Lync client and is used for common UI
scenarios.
The UCClient object represents the instance
of the Lync client belonging to the currently logged-in Lync user. This
object gives you full access to the object model and lets you create
your own UI in your applications. You have access to Lync contacts
lists, contact presence, and contact card info.
4. PowerShell
For Lync, Microsoft has changed the way that Lync is
administered. There is a new browser-based management interface called
the Lync Server Control Panel (LCSP) that you can use for all your
administration tasks. If you are an administrator type that prefers a
command line–type interface, there is something for you, too. Microsoft
has also included the Lync Server Management Shell. Both these
administration tools have one big thing in common: They both run on
PowerShell. This means that anything you can do from the browser-based
LSCP, you can do from the command prompt.
There are more than 500 new Lync PowerShell cmdlets
to enable users for Lync, set up SIP domains, set up routing, and a
host of other tasks.
Let’s start with the basics. To get started, go to the Windows Start menu, expand the Microsoft Lync Server 2010 menu item, and then click Lync Server management Shell. This starts a PowerShell session and loads the Lync Server module.
Now that you have the management shell running,
let’s make the assumption that you want to do something with a user
such as enable a user for Lync. Well, how do you go about finding which
cmdlet to use? You can use the Get-Command to get a list of Lync-related commands by typing the following command:
This command gives some extraneous information, but
it includes all the Lync cmdlets and you will see that they follow the
normal PowerShell methodology of verb-noun. Quickly skimming through
the list, notice some cmdlets with CsUser in the name columns so that
you can modify your command to look for just the user-related cmdlets. Figure 1 shows the results of running the command looking for CsUser-related cmdlets.
Notice that we now have a list of the Lync cmdlets that deal with Lync users, and you can quickly determine that Enable-CsUser is probably the one that you need. But, to be sure, you can use the Get-Help to check that assumption. Figure 2 shows the results of that command.
We now have all the information we need to enable a user for Lync. The following command enables the user for Lync:
Enable-CsUser –Identity "[email protected]" –RegistrarPool
"Lyncfe2.companyabc.com" –SipAddress "sip:[email protected]"
As you can see, you need to tell the cmdlet what
user to enable, which pool to register the user with, and what the SIP
address of the user will be. That is all there is to it. If you were to
look at the users in the Lync Server Control Panel, you would see that
the user is now enabled for Lync.
Tip
There are more steps, such as enabling the
user for enterprise voice (Set-CsUser) and setting up the user for
voicemail (Set-CsUser again), but you get the idea. As mentioned
previously, the Lync PowerShell blog on Microsoft TechNet is an
excellent start for learning more about administering Lync using the
PowerShell command-line interface.