Meeting dial-in access keys

Lync 2013

Beyond the basics topic

Learn about Lync 2013 meeting access keys for dialing in to an online Lync 2013 meeting that is started from an application by using Microsoft Lync 2013 SDK.

Last modified: January 11, 2013

Applies to: Lync 2013 | Lync Server 2013

Access to a Lync Server 2013 online meeting is obtained from an invitation from the meeting focus on the server, by getting a meeting access key and using it to call into the meeting, or clicking a meeting URL in a browser. The meeting invitation is generated when a meeting organizer adds a Lync 2013 user to a Microsoft.Lync.Model.Conversation.Conversation object. If the invited user is using the Lync 2013 client, the invitation is presented in a meeting ″toast″ that is generated by the client. If the invited user is running a custom Lync 2013 API-enabled application, the invitation arrives as a new Microsoft.Lync.Model.Conversation.Conversation in the ConversationManager.ConversationAdded event.

A meeting organizer might not choose to invite users individually. Instead, access to the meeting is made available to users by sending an email to a distribution group or sending the access key to a Persistent Chat room. In this case, an interested user dials one of the meeting attendant numbers from the access key or clicks a meeting URL in the key. If the meeting access type requires a meeting lobby, the organizer can admit users from the lobby.

The meeting organizer obtains the access key from the Conversation.Properties property by handling the Conversation.PropertyChanged event and getting the access key. This event is raised after the meeting is created and Lync Server 2013 has generated a meeting ID, access URLs, and auto-attendant telephone numbers.

The components of the meeting access key are encapsulated by the Microsoft.Lync.Model.Conversation.ConferenceAccessInformation class. Use the strings returned by reading these properties to form an email to a distribution group or a chat room message to send to a Persistent Chat room. The email recipients or chat room members then dial in to the meeting if they choose to.

Example

The following example builds a string by using conference access information properties. The string can be posted as a Story message to a persistent chat room or sent in an email message.

        /// <summary>
        /// Creates a string that can be posted as a story message to a persistent chat room 
        /// </summary>
        /// <returns></returns>
        private string CreateConferenceKey()
        {
            string returnValue = string.Empty;
            try
            {
                StringBuilder MeetingKey = new StringBuilder();

                //These properties are used to invite people by creating an email (or text message, or IM)
                //and adding the dial in number, external Url, internal Url, and conference Id
                ConferenceAccessInformation conferenceAccess = (ConferenceAccessInformation)_Conversation.Properties[ConversationProperty.ConferenceAccessInformation];

                if (conferenceAccess.Id.Length > 0)
                {
                    MeetingKey.Append("Meeting Id: " + conferenceAccess.Id);
                    MeetingKey.Append(System.Environment.NewLine);
                }

                if (conferenceAccess.AdmissionKey.Length > 0)
                {
                    MeetingKey.Append(conferenceAccess.AdmissionKey);
                    MeetingKey.Append(System.Environment.NewLine);
                }

                string[] attendantNumbers = (string[])conferenceAccess.AutoAttendantNumbers;

                StringBuilder sb2 = new StringBuilder();
                sb2.Append(System.Environment.NewLine);
                foreach (string aNumber in attendantNumbers)
                {
                    sb2.Append("\t\t" + aNumber);
                    sb2.Append(System.Environment.NewLine);
                }
                if (sb2.ToString().Trim().Length > 0)
                {
                    MeetingKey.Append("Auto attendant numbers:" + sb2.ToString());
                    MeetingKey.Append(System.Environment.NewLine);
                }

                if (conferenceAccess.ExternalUrl.Length > 0)
                {
                    MeetingKey.Append("External Url: " + conferenceAccess.ExternalUrl);
                    MeetingKey.Append(System.Environment.NewLine);
                }

                if (conferenceAccess.InternalUrl.Length > 0)
                {
                    MeetingKey.Append("Inner Url: " + conferenceAccess.InternalUrl);
                    MeetingKey.Append(System.Environment.NewLine);
                }

                returnValue = MeetingKey.ToString();

            }
            catch (System.NullReferenceException nr)
            {
                System.Diagnostics.Debug.WriteLine("Null ref Eception on ConferenceAccessInformation changed " + nr.Message);
            }
            catch (LyncClientException lce)
            {
                System.Diagnostics.Debug.WriteLine("Exception on ConferenceAccessInformation changed " + lce.Message);
            }
            return returnValue;
        }


Show: