我有一个应用程序,它依赖于位于服务器上的专用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
,因为它使用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会议室中显示的实际消息(即使它显示的是所有应用用户的名称)。
有什么想法吗?
答案 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小时不活动后,这也会让你的谈话保持活力。