This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

The InstantMessagingMcuSession class represents the Instant Messaging specific implementation of the media-agnostic McuSession. The class encapsulates operations and events relevant to the Instant Messaging Multipoint Control Unit (MCU).

InstantMessagingMcuSession State Transitions

The InstantMessagingMcuSession state transitions are shown in the following illustration.


  1. The transition from Idle to Active occurs after ConferenceSession has joined a conference. An InstantMessagingMcuSession instance can become active either before or after the callback passed to BeginJoin() is called, depending on when the MCU is activated on the server.

  2. The transition from Idle to Terminated occurs when the parent ConferenceSession object joins a conference that does not support the same MCU type (for example, when an attempt is made to join an IM-only conference to an InstantMessagingMcuSession instance).

  3. The transition from Active to Retrying occurs when the Focus detects that the MCU is failing over. In this case, Unified Communications Managed API 2.0 Core SDK terminates the call with that MCU, provided that the call already exists. This transition also occurs when the ConferenceSession object reconnects to the Focus. Because the MCU is not known to be failing over, the call is not terminated in this case.

  4. The transition from Retrying to Active occurs when the failover process is complete, or when the ConferenceSession has reconnected to the Focus and the MCU is active. It is possible for the ConferenceSession to reconnect to the Focus, but the InstantMessagingMcuSession state does not change to Active if the MCU has not been activated on the server.

InstantMessagingMcuSession Constructors

The InstantMessagingMcuSession class has no public constructors.

InstantMessagingMcuSession Properties

The following are the public properties on the InstantMessagingMcuSession class.

// Gets the media types supported by the MCU.
public override IEnumerable<string> SupportedMediaTypes {get;}

InstantMessagingMcuSession Methods

The following are the public methods on the InstantMessagingMcuSession class.

// Requests that the MCU initiate a call to the entity.
public IAsyncResult BeginDialOut(
    string destinationUri,
    AsyncCallback userCallback,
    object state);

// Waits for the pending operation to complete.
public new ParticipantCommandResponse EndDialOut(
    IAsyncResult result);

// Gets the properties of the participant in this MCU.
public bool TryGetParticipantEndpointProperties(
    ParticipantEndpoint endpoint,
    out InstantMessagingMcuParticipantEndpointProperties properties);

// Processes added or removed participant endpoints to the MCU.
protected override void HandleParticipantEndpointAttendanceChanged(
    McuParticipantEndpointProperties>> addedEndpoints,
    McuParticipantEndpointProperties>> removedEndpoints);

// Processes updated session properties.
protected override void HandlePropertiesChanged(
    PropertyMergeInformation<McuSessionProperties> pmi);

// Processes updated MCU participant endpoint properties.
protected override void HandleParticipantEndpointPropertiesChanged(
    ParticipantEndpoint endpoint,
    PropertyMergeInformation<McuParticipantEndpointProperties> pmi);

// Recycles the InstantMessagingMcuSession for reuse.
protected override void ResetCore();

InstantMessagingMcuSession Events

The following are the public events on the InstantMessagingMcuSession class.

// Raised when endpoints join or leave the MCU.
public event EventHandler<ParticipantEndpointAttendanceChangedEventArgs<InstantMessagingMcuParticipantEndpointProperties>> ParticipantEndpointAttendanceChanged;

// Raised when a participant property changes.
public event EventHandler<ParticipantEndpointPropertiesChangedEventArgs<InstantMessagingMcuParticipantEndpointProperties>> ParticipantEndpointPropertiesChanged;