Lync2013的会话

加入Lync2013会话的流程图如下所示:

11111

流程如下:

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);

}
原文地址:https://www.cnblogs.com/poissonnotes/p/3024380.html