加入Lync2013会话的流程图如下所示:
流程如下:
1. 首先通过 LyncClient.GetClient() 来获取 lyncClient 的实例
2. 给lyncClient.ConversationManager.ConversationAdded 注册委托事件,使lync应用程序发生 加入会话事件 时就会执行此委托事件。
3. 用LyncClient.ConversationManager.AddConversation()创建一个会话。
4. 在lyncClient.ConversationManager.ConversationAdded 的委托事件中,给e.Conversation.ParticipantAdded 【会话参与者加入事件】注册委托事件
5. 在lyncClient.ConversationManager.ConversationAdded的委托事件中,给e.Conversation.StateChanged【会话状态改变事件】注册委托事件。
6. 在lyncClient.ConversationManager.ConversationAdded的委托事件中,给在第三步已经创建好的一个会话实例用Conversation.AddParticipant(Contact)函数添加一个参与者。
7. 在给会话添加参与者时,由于已经在第4步给 【会话参与者加入事件】 注册了委托事件,所以会触发e.Conversation.ParticipantAdded的委托事件。
8. 在【会话参与者加入事件】的委托事件中,
i. 检查创建的会话中 是否包括 ModalityTypes.InstantMessage【即时消息会话】 模式,用Conversation.Modalities.ContainsKey(ModalityTypes.InstantMessage)来判断。
ii. 如果包括的话,给会话中的每个远程用户绑定【即时消息接收】委托事件,
((InstantMessageModality)e.Participant.Modalities[ModalityTypes.InstantMessage]).InstantMessageReceived += new EventHandler<MessageSentEventArgs>(InstantMessageReceived);
iii. 并且给每个远程用户发送即时消息。先获取 InstantMessageModality 实例,此实例通过第3步创建的会话来获取,如下列代码来获取:
InstantMessageModality imModality = (InstantMessageModality)Conversation.Modalities[ModalityTypes.InstantMessage];
如果获取的InstantMessageModality实例中包含了发送即时消息的方法,即调用实例中的发送消息方法。代码如下所示:
if (imModality.CanInvoke(ModalityAction.SendInstantMessage)) { IAsyncResult asyncResult = imModality.BeginSendMessage( textMessage, SendMessageCallback, imModality); }