![](/img/trans.png)
[英]Lync (2013) Client SDK does not work with Skype for Business Online
[英]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.