通过Client SDK保持Lync MeetNow会话的活动状态

时间:2014-11-06 11:02:35

标签: c# lync-client-sdk

我有一个应用程序,它依赖于位于服务器上的专用Lync客户端来管理ad-hoc MeetNow会议室。

Lync在闲置15分钟后自动关闭对话。我通过发送"取消转移"找到a blog describing a way to surreptitiously keep the conversation alive消息,但该解决方案使用UCMA,我只提供2013 Lync Client SDK 它在那里完成的方式是(基本上):

var contentType = new System.Net.Mime.ContentType("text/x-msmsgsinvite");
var s = @"Application-Name: File Transfer\r\nInvitation-Command: CANCEL\r\nInvitation-Cookie: 12345\r\n");
byte[] htmlBytes = Encoding.UTF8.GetBytes(s);
Flow.BeginSendInstantMessage(contentType, htmlBytes, EndSendInstantMessage, Flow);

但是,再次,这是使用UCMA。 Lync Client SDK的工作原理完全相同 我需要使用对话的形式来发送消息,而我无法将内容类型设置为text/x-msmsgsinvite,因为它使用InstantMessageContentTypeEnum其中唯一的内容可用的类型有:Invalid, PlainText, Html, RichText, Gif, Ink, Unknown

尝试使用2013 Client SDK进行尝试

(首先,我确保Modality.State已连接 - 它是。)

  • 我尝试发送一条空信息 - 收到一条说明Value does not fall within the expected range的异常。我可能误解了这一点,但我认为这意味着空字符串不会发出消息。

  • 我尝试发送内容类型设置为Invalid的随机消息 - 收到消息Unknown InstantMessageContentType. Type is Invalid的异常。 (实际上 希望这一个能够成功

  • 我尝试发送内容类型设置为Html的邮件,邮件中包含<div> style="display: none;" - 这可以保持对话的活跃,但是当然,这会显示来自“应用用户”的空信息

我非常希望避免发送在MeetNow会议室中显示的实际消息(即使它显示的是所有应用用户的名称)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

&amp; tldr; :将AutoTerminateOnIdle属性设置为true。这将使对话无法终止!


完全披露:
似乎答案完全隐藏在其他地方 我在一本名为"Professional Unified Communications Development with Microsoft Lync Server 2010" By George Durzi, Michael Greenlee的书中找到了Google图书中的一些有趣信息。

关于Conversation的属性AutoTerminateOnIdle的主题,它指出:

  

[...]设置对话的AutoTerminateOnIdle属性   在UI抑制模式下,false确保应用程序   仍然可以在音频后访问对话及其属性   视频模式不再有效。这允许应用程序   重新启动模态的音频或视频通道,因为   谈话我没有处于终止状态。如果对话包含   无论是InstantMessage还是Audio Video模式,它都只会   两种方式都变为非活动状态时终止。 设置   AutoTerminateOnIdle属性true确保底层证券   对话永远不会进入终止状态,允许应用程序   根据需要再次连接到任何一种模态。 [...]

仅仅是我还是标记为粗体的部分从属性名称中得到的确切意见?!?!如果true永远不会进入终止状态?! WTF?

无论哪种方式,我测试了它 - 离开一个房间只是坐在那里,就像半小时没有做任何事情。客户甚至进入“离开”状态=&gt;谈话保持开放。好哇!

答案 1 :(得分:0)

ConversationAdded 事件中添加此内容,如上面的回答中所述。

            e.Conversation.BeginSetProperty(ConversationProperty.AutoTerminateOnIdle, true, null, null);

即使在1小时不活动后,这也会让你的谈话保持活力。

Click to view Google Book Reference