Hi all,
I am creating a UCMA 4.0 application should schedule a conference and invite a user to Lync This was achieved successfully only if the user is a UserEndPoint scheduler.
If I use a ApplicationEndpoint to schedule the conference ... The Lync user can not make video or audio conference only IM.
This is the partial code I have:
LocalEndpointState currentEndpointState = applicationEndpoint.State; if (currentEndpointState == LocalEndpointState.Established || currentEndpointState == LocalEndpointState.Reestablishing) { UserEndpoint operatorEndpoint = CreateOperatorUserEndPoint(ChoosenOperator(applicationEndpoint)); //UserEndpoint organizerEndpoint = CreateOperatorUserEndPoint(applicationEndpoint.OwnerUri); if (operatorEndpoint != null) { Dictionary<string, string> contexto = new Dictionary<string, string>(); contexto.Add("reason", reason); contexto.Add("userAgent", userAgent); // Schedule conference with Creator endpoint and invited operator. operatorEndpoint = ScheduleConference(applicationEndpoint, operatorEndpoint, userId); // Initialize a conversation of the Operator endpoint. Conversation operatorConversation = new Conversation(operatorEndpoint); operatorConversation.ApplicationContext = contexto; operatorConversation = JoinConferenceWithJoinModeExplicit(operatorConversation, JoinMode.Default); // Placing a call on the conference-connected conversation and // connects to the respective MCUs. PlaceCallToAVMcu(operatorConversation); #region Organizer Join //// Organizer join and let in everyone in Lobby. //// - //// Initialize a conversation of the Operator endpoint. Conversation organizerConversation = new Conversation(applicationEndpoint); organizerConversation.ApplicationContext = contexto; organizerConversation = JoinConferenceWithJoinModeExplicit(organizerConversation, JoinMode.TrustedParticipant); //// Placing a call on the conference-connected conversation and //// connects to the respective MCUs. PlaceOrganizerCallToAVMcu(organizerConversation); #endregion //send conf invite ConferenceInvitationDeliverOptions deliverOptions = new ConferenceInvitationDeliverOptions(); deliverOptions.ToastMessage = new ToastMessage("Hola un cliente desea tu atención"); ConferenceInvitation invitation = new ConferenceInvitation(organizerConversation); invitation.StateChanged += invitation_StateChanged; invitation.BeginDeliver(operatorEndpoint.OwnerUri, deliverOptions, EndDeliverInvitation, invitation); // Synchronize to ensure that invitation is complete _waitForConversationInviteRemoteParticipants.WaitOne();
Inside the ScheduleConference method i change between AplicationEndpoint and UserEndPoint for test purpose:
operatorEndpoint = ScheduleConference(applicationEndpoint, operatorEndpoint, userId);
inside the method:
operatorEndpoint.ConferenceServices.BeginScheduleConference(conferenceScheduleInformation,
EndScheduleConference, operatorEndpoint.ConferenceServices);
If you do not understand me try Spanish :)