簡體   English   中英

在Lync中檢測來電

[英]Detecting an incoming call in Lync

我正在嘗試檢測Lync客戶端中的傳入呼叫。 這是通過在描述訂閱的Lync客戶端ConversationManager.ConversationAdded事件做這個職位

但是,通過使用此方法,如果在調用者調用之前與調用者的對話窗口已打開,則無法檢測傳入呼叫。 例如,如果我正在和朋友聊天,因此有一個打開的對話窗口,而這位朋友決定給我打電話,則不會觸發ConversationAdded事件。

當我與呼叫者進行了有效對話時,如何檢測來電?

謝謝,尼克拉斯

您需要監控對話模式的狀態。 兩種可用的模式是IM和AV,因此您需要注意這些狀態的變化,如下所示:

void ConversationManager_ConversationAdded(object sender, Microsoft.Lync.Model.Conversation.ConversationManagerEventArgs e)
{
    e.Conversation.Modalities[ModalityTypes.InstantMessage].ModalityStateChanged += IMModalityStateChanged;
    e.Conversation.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += AVModalityStateChanged;
}

void IMModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
{
    if (e.NewState == ModalityState.Connected)
        MessageBox.Show("IM Modality Connected");
}

void AVModalityStateChanged(object sender, ModalityStateChangedEventArgs e)
{
    if (e.NewState == ModalityState.Connected)
        MessageBox.Show("AV Modality Connected");
}

此示例使用ConversationAdded事件來連接事件處理程序以進行模態更改,因此這僅適用於在應用程序運行時啟動的對話。 要對應用程序啟動前已處於活動狀態的會話執行相同操作,可以將此代碼添加到應用程序的啟動例程中:

foreach (var conv in _lync.ConversationManager.Conversations)
{
    conv.Modalities[ModalityTypes.InstantMessage].ModalityStateChanged += new EventHandler<ModalityStateChangedEventArgs>(IMModalityStateChanged);
    conv.Modalities[ModalityTypes.AudioVideo].ModalityStateChanged += new EventHandler<ModalityStateChangedEventArgs>(AVModalityStateChanged);
}

您應該訂閱Conversation.Modalities [ModalityTypes.AudioVideo]上的ModalityStateChanged事件,這將在創建AV模態或更改狀態時為您提供事件。

暫無
暫無

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

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