Definitely the awesome stuff is Unified Communication Managed API 3.0 (UCMA 3.0) which comes as a power tool for Lync server 2010 development.
Just to note, I’ve read George’s and Michael’s book about Lync development couple of times, and I can say that it is a ‘Lync bible’ and you should definitely read it through. Here is the link:
Inside, you can find UCMA very good explained and it will make you a jump start into this topic…
If you found Lync Client API not enough to cover your business scenario, especially if you want to customize or enhance Lync on a server-side, UCMA 3.0 comes in a rescue. It is both client-side and server-side API which lets you use special set of objects (just like the Lync API, but slightly different) to be able to communicate with the Lync server. Typical scenarios are when you want to monitor calls or create some automated ‘bots’ which mimic lync users (for both testing or production purposes). For start, you should be aware of two different kinds of UCMA applications, because although are very similar, they are quite different especially in terms of installation and configuration. They are application endpoints and user endpoints.
UCMA Application Model
From the developer’s perspective, you will use UCMA starting from CollaborationPlatform class. This class manages connections to Lync server, you should supply connection settings (either client settings or server settings, depending from where you are connecting). For client-side settings (and in general for client-side usage) is quite easy – you just provide user’s credentials (and optionally presence state and capabilites) and you are good to go. For server-side connection, things are getting bigger, as you have to ‘provision’ (i.e. register or install) your application inside Lync server. The procedure will be explained in one of incoming posts.
For server-side development you can use both application and user endpoints, and for client-side development you can use only user endpoint application. The choice which application type you will choose depends on what you want to do. Since application endpoint represents ‘Lync application’, i.e. an endpoint with which Lync server can communicate (therefore, as a service), and user endpoint represents an actual Lync user, and with it, all the actions it can do (such as publishing its presence, make calls, etc.). Application endpoints are therefore more powerful than user endpoints, as they can service many simultaneous users, acting as a ‘bridge’ to calls (e.g. back-to-back call), etc.
Well, I advise you to follow my blog to read more about UCMA 3.0 development platform. I will explain the next steps required to effectively work with the UCMA, such as:
- Provisioning UCMA applications,
- Creating UCMA application shell classes,
- Handling incoming and outgoing calls,
- Creating user endpoints on the client,
- and any additional theme I found useful…