簡體   English   中英

Lync 2013客戶端,當有2個傳入的AV調用時,ExtensibilityWindow無法打開

[英]Lync 2013 client, ExtensibilityWindow does not open when 2 incoming AV calls

使用Lync2013 Client SDK時遇到一些麻煩。 這是一件小事,但在我看來應該可以。

我正在使用ExtensibilityWindow創建一個顯示呼叫者一些數據的應用程序。 在應用程序啟動時,我注冊了應用程序等,並在被接受的調用中,程序在ConversationWindow上調用了BeginOpenExtensibilityWindow。 在幾乎所有情況下,這都可以正常工作。 但是,正如我現在可以說的那樣,有一種特定的情況無法解決該問題:當出現新的傳入AV呼叫時,同時有一個活動的呼叫(是否處於onHold狀態無關緊要)。

(因此,呼叫者A給我打電話,我接受,而在呼叫過程中,呼叫者B給我打電話。然后,函數BeginOpenExtensibilityWindow根本不執行任何操作)

如果它們之一是出站的,那沒有問題,但是當兩者都入站時,對BeginOpenExExibilityibilityWindow的調用將不執行任何操作。 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的內容為:

轉換:21950498,WinHandle:1902160

...更多...

轉換:13391695,WinHandle:1902160

...更多...

顯然,自動化將為不同的對話返回相同的句柄! 同樣,這僅適用於兩個傳入的AV呼叫,IM可以正常工作,並且沒有混淆的引用。

在我看來,這就像個蟲子...但是我不是專家。

任何幫助,不勝感激!

忘記提及了,它是一個錯誤,Microsoft已修復它:Lync 2013(Skype for Business)2015年9月8日安全更新(KB3085500)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM