Lync 2013 客户端,扩展性窗口在 2 个传入 AV 呼叫时不会打开



我在使用 Lync2013 客户端 SDK 时遇到一些问题。这是一件小事,但在我看来,它应该可以正常工作。

我正在创建一个应用程序,该应用程序使用扩展性窗口显示调用方的一些数据。在应用程序启动时,我注册应用程序等,在接受的调用中,程序在对话窗口上调用BeginOpenExtensibilityWindow。这在几乎所有情况下都工作正常。但是,正如我现在可以知道的那样,有一种特定情况不起作用:当出现新的传入 AV 呼叫时,同时有一个活动(保持与否无关紧要)来电。

(所以呼叫者A打电话给我,

我接听,在通话中,呼叫者B打电话给我。然后函数 BeginOpenExtensibilityWindow 什么都不做)

如果其中一个是出站的,则没有问题,但是当两个都是入站时,对 BeginOpenExtensibilityWindow 的调用将传递而不执行任何操作。EndOpenExtensibilityWindow不会引发任何错误,它只是通过。

为了找出问题可能是什么,我尝试了以下方法:

  • 没有缓存检索到的对话窗口:每次我需要它时,我都会调用自动化.GetConversationWindow(对话)

  • 延迟调用 BeginOpenExtensibilityWindow:启动后台线程,连接后等待 5 秒,然后调用它。

  • 在开始之前调用关闭扩展性窗口打开扩展性窗口

我发现的是:在BeginOpenExtensibilityWindow之前调用CloseExtensibilityWindow时,第一个对话会引发错误。但是,第二个不会,而是调用 CloseExtensibilityWindow 会关闭第一个会话的扩展性窗口!!我绝对 100% 确定我正在通过调用自动化来检索对第二个窗口的引用。GetConversationWindow(_conversation),其中"_conversation"是第二个调用!

所以为了绝对确定,我将每次调用都记录到窗口,如下所示:

 internal ConversationWindow ConversationWindow
    {
        get
        {
            _window = _automation.GetConversationWindow(_conversation);
            debugA.Add(string.Format("ConvId: {0}, WinHandle: {1}", _conversation.Properties[Microsoft.Lync.Model.Conversation.ConversationProperty.Id], _window.Handle));
            return _window;
        }
}

调试 A 是一个静态列表,

当然,叹气...,对话ID一直都是空的(问题的根源??所以我把它换成了_conversation。GetHashCode(),那么debugA的内容是:

卷积面:21950498,WinHandle:1902160

。再说一些...

卷积面:13391695,WinHandle:1902160

。再说一些...

显然,自动化正在为不同的对话返回相同的句柄!同样,这只是在两个传入的AV呼叫上,IM工作正常,没有混淆的引用。

在我看来,这就像一个错误...但我不是专家。

任何帮助,非常感谢!

了提,这是一个错误,Microsoft修复了它:9 月 8,2015 年安全更新 (KB3085500) Lync 2013 (Skype for Business)

最新更新