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

时间:2013-08-27 09:48:07

标签: lync lync-client-sdk

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

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

我做错了吗?我如何获得这些信息?


(我确实看到了一种方法,建议有一个跟踪Lync打开窗口的Windows服务,后来知道将hWnd映射到对话。 我真的不想去那里。这是复杂的方式,对我的需求来说太大了。 此外,我不确定它是否适用于Lync 2013,因为所有对话都在同一个标​​签中)


我也尝试使用对话窗口扩展,但它似乎有同样的问题。 我以为我能够将上下文数据发送到当前对话的其他联系人,但我找不到获取当前对话的方法,因此我无法使用{{1 }}


更新: 我设法使用LyncClient.GetHostingConversation()

进行上下文对话

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

1 个答案:

答案 0 :(得分:0)

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

这使您可以选择以编程方式检测当前对话。不幸的是,似乎没有明显的方法来可靠地检测当前显示的对话。您可以尝试检查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

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