(翻譯)derived conversation相關概念

如果你通過UCMA程序和別人在同一個會話裏同時使用了IM和語音,說不定有時候會遇見以下異常:

Microsoft.Rtc.Signaling.OperationFailureException: Application must register for ConversationChanged event when a call is moved to a derived conversation.

尤其是當你想要在只有IM或者應用共享的會話裏增加語音選項時異常總會發生,遠端會重定向語音給一個PSTN通話。也許是因爲對方沒有耳麥設備,或者是使用了無線設備導致通話質量太差,也可能他根本不能進行語音聊天。

這裏發生的就是會話裏的語音通話被通過Mediation服務器路由給了PSTN,而不是目標用戶。這樣語音呼叫就被從原始會話裏剝離出來到了一個新的,稱爲derived conversation的會話裏,並且這個會話有獨立的ID。你可以看一下這時候的原始Conversation對象,是沒有AudioVideoCall的,或者你可能看見多了一個PSTN與會者。你沒有辦法控制這個語音通話。基本上,UCMA爲了保護你會要求你綁定一個事件Call.ConversationChanged。

如果當derived conversation被創建時你希望收到通知,可以像這樣訂閱ConversationChanged事件:

avCall.ConversationChanged +=
    new EventHandler<ConversationChangedEventArgs>(OnAvCallConversationChanged);

 我希望它能把詳細信息輸出到控制檯,所以我這樣:

void OnAvCallConversationChanged(object sender,
    ConversationChangedEventArgs e)
{
    Console.WriteLine("Call moved to derived conversation! Old ID: {0}. New ID: {1}. Reason: {2}.",
        e.PreviousConversation.Id, e.NewConversation.Id, e.Reason);
}

 這樣異常就被控制了。

發佈了42 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章