在 UI 抑制模式下向对话 Lync 2013 SDK 中的特定用户发送 IM 消息

Posted

技术标签:

【中文标题】在 UI 抑制模式下向对话 Lync 2013 SDK 中的特定用户发送 IM 消息【英文标题】:Send IM message to specific user in the conversation Lync 2013 SDK in UI suppression mode 【发布时间】:2014-03-06 15:57:34 【问题描述】:

我正在尝试在 UI 抑制模式下使用 Lync 2013 sdk 创建一个消息传递应用程序,我正在使用以下代码向对话中的所有参与者发送消息,但我找不到向特定对象发送消息的方法其中之一,有人知道怎么做吗?

我的代码:

public void StartIMConversation(string participantUri)
                 
            _Conversation.PropertyChanged += _Conversation_PropertyChanged;
            _Conversation = _LyncClient.ConversationManager.AddConversation();
        

void ConversationsManager_ConversationAdded(Object source, ConversationManagerEventArgs data)
        
            data.Conversation.ParticipantAdded += Conversation_ParticipantAdded;
            data.Conversation.StateChanged += Conversation_StateChanged; 
data.Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(this.myRemoteParticipantUri));
data.Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(this.myRemoteParticipantUri2));
data.Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(this.myRemoteParticipantUri3));


    InstantMessageModality imModality = (InstantMessageModality)participant.Conversation.Modalities[ModalityTypes.InstantMessage];
                            imModality.BeginSendMessage(message, SendMessageCallback, imModality);

        
    private void SendMessageCallback(IAsyncResult ar)
        
            InstantMessageModality imModality = (InstantMessageModality)ar.AsyncState;

            try
            
                imModality.EndSendMessage(ar);
            
            catch (LyncClientException lce)
            
                MessageBox.Show("Lync Client Exception on EndSendMessage " + lce.Message);
            

        

如果使用对话无法做到这一点,请指导我以正确的方式,感谢任何帮助。

【问题讨论】:

【参考方案1】:

没有办法在给定对话中选择 IM 的接收者。您最好的选择可能是只与您需要的参与者开始单独的对话。

【讨论】:

我认为这不是性能优化,我将使用它作为最后的解决方案(如果我没有找到其他方法来解决它),谢谢@Paul。 我了解您对性能的担忧,但是 Lync 服务器将在数千个打开的对话中保持高性能,并且客户端上的对话开销很小。我认为即使这是一个功能(它不是),它也可能通过开始另一个对话来起作用,因为这基本上就是你想要做的。【参考方案2】:

我同意所选答案...但是...当您编写 UI 抑制应用程序时,您可以使用单独的 IM 对话(根据答案),然后将其内联显示。当您控制会议的显示时,您可以随意显示它,如果这确实是您想要做的。

【讨论】:

以上是关于在 UI 抑制模式下向对话 Lync 2013 SDK 中的特定用户发送 IM 消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 UI 抑制的 Lync 2013 自定义客户端的视频质量

为啥我们需要 Lync SDK 控件,如果它们不能在 UI 抑制模式下使用?

当 Lync 应用程序运行 UI 抑制时,GetAutomation() 不起作用

Lync 2013,接受传入的 InstantMessage 呼叫

对话窗口中的 MonitorID 参数。lync 2013 sdk 中的 ShowFullScreenMethod

我可以将键盘快捷键转发到停靠在 WPF 窗口中的 lync 对话窗口吗