What's New in UCMA 3.0 Core
Microsoft Unified Communications Managed API (UCMA) 3.0 introduces a number of new concepts that are designed to simplify application development, and create new scenario and deployment options for the application developer. This section provides a brief overview of the principal new features.
Application activation is the process in which configuration data is written to the Central Management Store database, Active Directory forest, and local computer. UCMA 3.0 includes Windows PowerShell activation, which makes it simple to activate or deactivate an application. UCMA 3.0 also introduces automatic provisioning (auto-provisioning), to simplify the task of monitoring and reacting to changes in configuration data.
Activating a UCMA 3.0 application against Microsoft Lync Server 2010 typically involves setting a trust relationship between the application and Lync Server 2010, and setting up routing-specific configurations. PowerShell-based programmable activation enables application developers to easily integrate the details of UCMA 3.0 activation into their overall application activation.
Automatic provisioning provides an abstraction of Lync Server 2010 data sources, using an object model already familiar to developers. Using automatic provisioning, developers can create applications that monitor and react to Lync Server 2010-specific configuration changes that are detected by the UCMA 3.0 platform.
In addition to Lync Server 2010-specific trust and route settings, most applications will need to provision data that is specific to their application. Application developers are responsible for storing and managing any such data in their own application store, and to create the bindings between their application store and the Central Management Store so that the two data sets can be reconciled.
A number of features have been added in UCMA 3.0 that support voice applications in the enterprise.
See Bandwidth Management.
Back-to-Back User Agent
Call Parking and Retrieval
In UCMA 3.0, an application can park and retrieve calls if the infrastructure includes a call park server. Call parking and retrieval is supported only for audio calls, and will result in other modalities being terminated. When an endpoint decides to park a call, the call is parked at the call park server and is assigned an orbit number. The application is responsible for communicating the orbit number to other endpoints that potentially will retrieve the call. For more information, see Call Park.
PSTN User Authentication
See VoiceXML 2.0 Support.
UCMA 3.0 introduces two features that can help make applications more resilient: SIP Dialog Resiliency and DNS Load Balancing.
SIP Dialog Resiliency
Session Dialog Resiliency (SDR) refers to the ability of a call to resolve and repair route failures or the temporary inability to reach the remote endpoint. These problems are usually caused by temporary breaks in signaling paths due to intermediate server or temporary remote endpoint connectivity issues. After detecting a break, media normally locates a different path and then connects to an endpoint. The UCMA 3.0 platform uses periodic UPDATE messages to automatically fix broken signaling paths. An UPDATE message sent while the route is broken will establish new routes to reach the remote endpoint. Normally, both endpoints will try to repair the route when they detect a break in the route due to message routing failures.
While UCMA 2.0 supported SDR, in UCMA 3.0, an application can fully participate in the SDR process. In most cases, the application needs only to be aware of the fact that some operations can fail during the time the route recovery is in progress, and to post log entries as appropriate to the application’s usage model. When there is a break in the media path, the call might be terminated by the media provider in the event of a time-out. For more information, see Call Recovery.
DNS Load Balancing
In UCMA 2.0, the communications infrastructure had to deploy hardware-based load balancers to support multiple application instances or Communications Server front ends. In UCMA 3.0, there is now inherent support for DNS-based load balancing. When multiple connections are made to a pool that can resolve to multiple IP addresses, connections can be distributed across multiple available servers. If a server instance is offline, the platform can detect this state, and will disable attempts to connect to the offline server instance for ten minutes. This is assumed to be the approximate minimum amount of time required for a server (Lync Server 2010 or application) to stop and start, update, and be restored. The ability to perform DNS-based load balancing is helpful for building scalable applications. An application can take advantage of this functionality with no additional code. For more information, see General Application Activation.
UCMA 3.0 can now be used to communicate with endpoints that are not associated with Lync Server 2010, including IP-PBXs and other gateways. This support is focused on delivering audio calls to and from an application. Support for instant messaging or conferencing requires Communications Server. The UCMA 3.0 platform makes it possible for an application to specify the trusted remote entities by supplying a list of TrustedDomain instances. Each TrustedDomain instance captures the FQDN or domain of the remote entity and the TrustedDomainMode (either CommunicationsServer or Other).
The proxy host (next hop for the UCMA 3.0 platform) entity given to the endpoint defaults to CommunicationsServer mode. In addition to specifying the list of trusted remote domains, an application can also register for the optional ConnectionAuthorizationRequested event to monitor and control all connections established by the platform. This event is raised whenever a new connection must be authorized.
In UCMA 3.0, there is a new API that can be used to send conference invitations in a conversation that has joined a conference. In UCMA 2.0, this was accomplished through the BeginInviteRemoteParticipants method on the Conference class. Due to limitations in this API and inconsistencies in the way calls were used, this method has been made obsolete.
In UCMA 3.0, an application can create an instance of the ConferenceInvitation class that can be used to send a conference invitation to a new participant. Each ConferenceInvitation instance maps to one participant and provides the ability to track the progress of that invitation independent of the progress of other invitations. This independence makes it possible to customize the invitation for each participant. For more information, see Inviting a New Participant.
A common UCMA 3.0 task for a bot application is to ensure that users see its presence as online, thereby allowing communication with the bot. For this scenario to run successfully, an application sets the value of the AutomaticPresencePublicationEnabled property to true in the endpoint settings when the endpoint is created. The AutomaticPresencePublicationEnabled property is a member of the ApplicationEndpointSettings and UserEndpointSettings classes.
UCMA 3.0 adds new classes that support common presence state publications. For example, the PresenceState and ContactCard classes, which are first-class types derived from the PresenceCategory class, can simplify the most common presence publications.
For remote presence, the RemotePresence class is now obsolete, and is replaced by the RemotePresenceView class. Compared to RemotePresence, RemotePresenceView is a simplified option for the most common application-use cases, and is designed to support both persistent and polling-based presence. An application can create multiple RemotePresenceView instances to monitor the presence of other presentities. The RemotePresenceView() property on an endpoint provides access to the RemotePresenceView class to manage all presence views and issue custom presence query commands. For more information, see Presence Changes in UCMA 3.0.
UCMA 3.0 includes new conferencing features and improvements in conference scheduling and conference participation. One of the more important new features is the concept of the conference lobby. If a conference is locked, new participants are placed in the lobby, granting the presenter improved control in determining the participants who are allowed to enter the conference, and the ability to see those who are attempting to join the conference. The conference join operation for a lobby participant is not completed until the participant is either admitted to the conference or denied permission to enter it.
Another important feature is the concept of the Trusted Conference User. An application that joins a conference as a trusted user is able to create multiple audio calls in the conversation and use each call for a variety of purposes. For example, the RemoveFromDefaultRouting() property on the AudioVideoCallEstablishOptions class can be used to take the call out of the default conference mix to ensure that the media is isolated from the conference mixed media. When the call is established, the application can control the media routing using the AudioVideoRouting() property on the AudioVideoCall instance.
Also, an application can create an audio call for each telephone user in the conference so that dual-tone multifrequency (DTMF) commands from that device can be intercepted. The intercepted commands from that device can be used to perform conference commands on behalf of the user, thereby granting the telephone user advanced control of the conferencing. Another application can create an audio call to play messages to a selected list of participants in the conference. For more information about conference features, see Conferences.
UCMA 3.0 simplifies UCMA 3.0 Core SDK installation setup for end users. In addition to the ability to install the SDK for development, UCMA 3.0 introduces the concept of a Web-based run time that can be deployed on computers that run UCMA applications. The run time is responsible for installing the components in the global assembly cache so that applications can load them.
A number of additions have been made in audio devices and associated classes in UCMA 3.0.
A number of changes have been made in the Recorder and associated classes, to provide support for more complex scenarios. For more information, see Recorder.
In-band fax tone detection in the ToneController class
A new event and an associated class have been added to the ToneController class to enable an application to detect when a fax tone is received from a remote peer. For more information, see ToneController.
Sampling rate enhancements for send and receive streams.
New properties on the AudioChannelTemplate and AudioChannel classes allow an application to specify the sampling rate in either stream direction (send or receive). For more information, see AudioVideoFlow.