首页 文章

获取Lync 2013自定义命令(Lync SDK)的上下文联系人

提问于
浏览
1

我正在基于自定义命令为Lync 2013开发一个小型解决方案 .
简而言之:我为Lync添加了一个按钮 . 右键单击联系人和对话窗口时,可以看到该按钮 .

我希望能够在单击按钮时获得相关联系人\对话 .
%contact-id% 适用于右键单击联系人 . 我的EXE推出了,一切都很顺利 .
但是,在打开的对话中使用它会阻止EXE启动 .
如果我删除了 %contact-id% ,我的EXE就会启动,但是我没有相关的联系人 .

难道我做错了什么?我如何获得这些信息?

(我确实看到了一种方法,建议有一个跟踪Lync打开窗口的Windows服务,后来知道将hWnd映射到会话 . 我真的不喜欢复杂而且太大而无法满足我的需求 . 而且,我在Lync中工作了--1226194 2013年,因为所有对话都在同一个标签中)

我也尝试使用对话窗口扩展,但它似乎有同样的问题 .
我以为我找不到当前对话的方法,因此我无法使用 beginSendContextData .

Update
我设法使用LyncClient.GetHostingConversation()获取上下文对话

但是使用CWE会导致非常糟糕的用户体验 . 有没有办法在没有CWE的情况下获得主持人对话..?

1 回答

  • 0

    如果从对话窗口中触发自定义命令,我们可以确认不传输参数 %contact-id% . 在这种情况下,自定义命令不会被执行,它会被启动 .

    这使您可以选择以编程方式检测当前对话 . 不幸的是,似乎没有明显的方法来可靠地检测当前显示的对话 . 您可以尝试检查 ConversationManager 中的所有会话并使用一些提示:

    • ConversationManager.Conversations.Last() 上次创建的对话,不一定是用户用来单击自定义操作的对话 .

    • Conversation.State == ConversationState.Active 发送消息会将状态切换为“活动”,但可以激活多个会话 .

    • Conversation.Properties[ConversationProperty.Inviter] 邀请者是登录到本地lync客户端的用户,具有 %user-id% 的客户端 .

    • Conversation.Properties[ConversationProperty.LastActivityTimeStamp] 会话收到最后一条消息时的时间戳 .

    http://msdn.microsoft.com/en-us/library/microsoft.lync.model.conversation.conversationproperty_di_3_uc_ocs14mreflyncclnt.aspx

    但是这些信息仍然只是提示,并不足以可靠地检测显示给用户的当前会话 . 我们仍在寻找一种可靠的方法来检测它 .

相关问题