Conference Lobby

The conference lobby is a virtual room in which participants in a multi-party conversation (a conference session) wait until the presenters of in the meeting are ready to begin.

The lobby feature allows leaders to admit, deny, and eject participants from the lobby. Applications that are directed to the lobby can set a timeout value that indicates how long they are willing to wait before they exit automatically. When lobby participants are waiting in the lobby, they have no visibility into the meeting itself. This means that they cannot see who is attending the meeting and cannot monitor the media in the lobby. This gives leaders the ability choose who is allowed in to see the current presentation. Lobby participants waiting in the lobby cannot see one another or communicate in any way with each other.

Lobby behavior is based on the version of the server. For a Microsoft Office Communications Server 2007 server or a meeting created on an Office Communications Server 2007 server that was subsequently upgraded, applications emulate the behavior of Microsoft Office Communicator 2007. This is to leave the conference immediately and disconnect. Only on a Microsoft Lync Server 2010 server with a conference scheduled are all of the features available.

Leaders and trusted server applications have privileges and are admitted to the conference without first passing through the lobby. Participants calling in from a voice gateway might be placed into the lobby, depending on the current value of the LobbyBypass property in the active meeting.

Lobby Management Capability

The CanManageLobby property on the ConferenceJoinOptions class determines whether an application manages the conference lobby. For example, if an application joins the conference in the default mode but is unable to present enough user interface components to its users to manage the conference lobby (such as a phone), the application should set this property to false. The same guidance applies to applications that join in trusted mode. The default value of this property is true.

The BeginJoin(ConferenceJoinOptions, AsyncCallback, Object) method joins the application to an ad hoc conference organized under the application’s identity. However, if the application receives and accepted a conference invitation or received a conference MCU dial out, then calling this method will join the application to that specific conference.

Note

It is possible for an application to land in the conference lobby if it received a conference invitation.

The BeginJoin(String, ConferenceJoinOptions, AsyncCallback, Object) joins the application to the supplied conference URI.

Lobby Join

If an application is placed in the conference lobby, the callback passed in the BeginJoin method is not be invoked until the application is admitted into the conference, removed from of the lobby, or the lobby wait timer expires.

The following table shows the behaviors that are expressed when an application is placed in the lobby.

Scenario

EndJoin action

Conversation state

ConferenceSession state

Application admitted to conference.

Does not throw an exception.

InLobby changes to Conferenced

InLobby changes to Connected

Application removed from conference.

Throws ConferenceFailureException with appropriate Reason strings.

InLobby changes to Terminated

InLobby changes to Idle

Application leaves conference by calling BeginTerminate().

Throws OperationFailureException exception.

InLobby changes to Terminated

InLobby changes to Idle

Lobby wait timer expires.

Throws OperationTimeoutException exception.

InLobby changes to Terminated

InLobby changes to Idle

Conference Lobby API

The core APIs that can be used to work with the lobby are described here.

The LobbyManager class can be used by conference leaders to admit or deny entrance to participants who are in the lobby.

Conference leaders can use the BeginEject() overloaded methods to disconnect a lobby participant from the server.

The GetLobbyParticipants() method can be used by anyone in the conference to get a filtered list of participants who are in the lobby. The IsInLobby property can be used to determine whether a participant who joined or left did so coming in from the lobby or leaving the lobby. This can be used in the LobbyParticipantAttendanceChanged event handler to identify lobby participants as they enter the lobby.

Client applications can check the state of the ConferenceSession object to see if the value of the State property on the ConferenceSession object is equal to ConversationState.

Conferences can be scheduled and updated while they are active to allow calls coming from the voice gateway to bypass the lobby, or to force them to enter the lobby first. This can be done by using the LobbyBypass property on ConferenceScheduleInformation or one of the BeginModifyConferenceConfiguration() overloaded methods on the ConferenceSession instance.

LobbyManager Class

The LobbyManager class is new in UCMA 3.0 Core SDK. The methods and property on this class can be used to manage incoming participants in a conference.

LobbyManager member

Description

BeginAdmitLobbyParticipants(IEnumerable<ConversationParticipant>, AsyncCallback, Object)

Method. Admits lobby participants into the conference.

BeginAdmitLobbyParticipants(IEnumerable<ConversationParticipant>, AsyncCallback, object)

BeginAdmitLobbyParticipants(IEnumerable<ConversationParticipant>, LobbyAdmitOptions, AsyncCallback, Object)

Method. Admits lobby participants into the conference.

BeginAdmitLobbyParticipants(IEnumerable<ConversationParticipant>, LobbyAdmitOptions, AsyncCallback, object)

BeginDenyLobbyParticipants(IEnumerable<ConversationParticipant>, AsyncCallback, Object)

Method. Denies lobby participants admission into the conference and removes them from the lobby.

BeginDenyLobbyParticipants(IEnumerable<ConversationParticipant>, AsyncCallback, object)

BeginDenyLobbyParticipants(IEnumerable<ConversationParticipant>, LobbyDenyOptions, AsyncCallback, Object)

Method. Denies lobby participants admission into the conference and removes them from the lobby.

BeginDenyLobbyParticipants(IEnumerable<ConversationParticipant>, LobbyDenyOptions, AsyncCallback, object)

EndAdmitLobbyParticipants(IAsyncResult)

Method. Waits for the pending asynchronous operation to complete.

EndAdmitLobbyParticipants(IAsyncResult)

EndDenyLobbyParticipants(IAsyncResult)

Method. Waits for the pending asynchronous operation to complete.

EndDenyLobbyParticipants(IAsyncResult)

ConferenceSession

Property. Gets the conference session object that is associated with this LobbyManager instance.

ConferenceSession ConferenceSession {get;}