通过客户端 SDK 使 Lync MeetNow 对话保持活跃
Posted
技术标签:
【中文标题】通过客户端 SDK 使 Lync MeetNow 对话保持活跃【英文标题】:Keep Lync MeetNow conversation alive from Client SDK 【发布时间】:2014-11-06 11:02:35 【问题描述】:我有一个应用程序,它依赖于服务器上的专用 Lync 客户端来管理临时 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 客户端 SDK 的工作方式并不完全相同。
我需要使用对话模式来发送消息,并且我无法将内容类型设置为text/x-msmsgsinvite
,因为它使用InstantMessageContentType
,Enum
,其中唯一可用的内容类型是: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 会议室中显示的实际消息(即使它显示的只是应用用户的姓名)。
有什么想法吗?
【问题讨论】:
【参考方案1】:&tldr; :将AutoTerminateOnIdle
属性设置为true
。这将使对话不会终止!
全面披露: 似乎答案完全隐藏在其他地方。 我在 Google Books 的一本名为 "Professional Unified Communications Development with Microsoft Lync Server 2010" By George Durzi, Michael Greenlee 的书中发现了一些有趣的信息。
关于Conversation
的属性AutoTerminateOnIdle
的主题是:
[...] 设置对话的
AutoTerminateOnIdle
属性false
在 UI 抑制模式下确保应用程序 音频后仍然可以访问对话及其属性 视频模式不再有效。这允许应用程序 重新启动模态的音频或视频通道,因为 对话 i 未处于终止状态。如果对话包含 即时消息和音频视频模式,它只会 当两种模式都变为非活动状态时终止。 设置AutoTerminateOnIdle
属性到true
确保底层 对话永远不会进入终止状态,允许应用程序 根据需要再次连接到任一模式。 [...]
只是我还是用粗体标记的部分与物业名称的期望完全相反?!?!如果true
,从不进入终止状态?!什么鬼?
无论哪种方式,我都对其进行了测试 - 离开一个房间只是坐在那里半个小时,什么都不做。客户甚至进入“离开”状态 => 对话保持开放。呵呵!
【讨论】:
你能澄清一下吗?将 AutoTerminateOnIdle 设置为 true 将使对话保持活跃,而不是超时? Lync SDK 文档是热垃圾,但这尤其令人困惑 @EricRRichards 没错!完全不直观地向后设置 AutoTerminateOnIdle 将使 MeetNow 对话保持活跃!【参考方案2】:按照上述答案中的建议将其添加到您的 ConversationAdded 事件中。
e.Conversation.BeginSetProperty(ConversationProperty.AutoTerminateOnIdle, true, null, null);
即使在 1 2 小时不活动之后,这也将始终让您的对话保持活跃。
Click to view Google Book Reference
【讨论】:
以上是关于通过客户端 SDK 使 Lync MeetNow 对话保持活跃的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Lync SDK 通过电子邮件确定是不是存在有效的 Lync 用户?
关闭 Lync 客户端(并排)与 Lync SDK 2013 留下孤立的进程