【问题标题】:Keep Lync MeetNow conversation alive from Client SDK通过客户端 SDK 使 Lync MeetNow 对话保持活跃
【发布时间】:2023-03-22 00:05:01
【问题描述】:

我有一个应用程序,它依赖于服务器上的专用 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,因为它使用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 会议室中显示的实际消息(即使它显示的只是应用用户的姓名)。

有什么想法吗?

【问题讨论】:

    标签: c# lync-client-sdk


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多