Lync 2013 客户端,当 2 个传入 AV 呼叫时,ExtensibilityWindow 未打开

Posted

技术标签:

【中文标题】Lync 2013 客户端,当 2 个传入 AV 呼叫时,ExtensibilityWindow 未打开【英文标题】:Lync 2013 client, ExtensibilityWindow does not open when 2 incoming AV calls 【发布时间】:2015-03-16 16:56:06 【问题描述】:

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

我正在创建一个应用程序,它使用 ExtensibilityWindow 显示调用者的一些数据。在应用程序启动时,我注册应用程序等并在接受的呼叫时,程序在 ConversationWindow 上调用 BeginOpenExtensibilityWindow。这在几乎所有情况下都可以正常工作。但是,正如我现在所知道的那样,有一种特定情况下这不起作用:当一个新的传入 AV 呼叫出现时,同时有一个活动的(onHold 与否无关紧要)传入呼叫。

(所以调用者 A 给我打电话,我接听,在通话期间,调用者 B 给我打电话。然后函数 BeginOpenExtensibilityWindow 什么都不做)

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

为了找出问题所在,我尝试了以下方法:

没有缓存检索到的 ConversationWindow:每次我需要它时,我都会调用 Automation.GetConversationWindow(conversation)

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

在 BeginOpenExtensibilityWindow 之前调用 CloseExtensibilityWindow

我发现:在 BeginOpenExtensibilityWindow 之前调用 CloseExtensibilityWindow 时,第一次对话引发错误。然而,第二个不会,而是调用 CloseExtensibilityWindow 关闭第一个对话的可扩展性窗口!!!我绝对 100% 确定我正在通过调用automation.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;
        

debugA 是一个静态列表,

当然,唉...,conversationId一直是空的(问题的根源??)所以我把它切换到_conversation.GetHashCode(),然后debugA的内容是:

ConvId:21950498,WinHandle:1902160

...还有一些...

ConvId:13391695,WinHandle:1902160

...还有一些...

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

在我看来这像是一个错误……但我不是专家……

任何帮助,不胜感激!

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Lync 2013 客户端,当 2 个传入 AV 呼叫时,ExtensibilityWindow 未打开的主要内容,如果未能解决你的问题,请参考以下文章

Lync Server 2013 共享PPT经过一段时间报演示错误(ID3240261045)

尝试在 Lync 2013 中接受音频呼叫时出现 System.UnauthorizedAccessException

如何在使用 Lync Client API 2010 拒绝后接受传入的视频呼叫?

配置Lync 2013/Skype for Business 2015/Skype for Business 2019联盟用户模糊搜索

Lync 2013 即时消息字体和颜色

关闭 Lync 客户端(并排)与 Lync SDK 2013 留下孤立的进程