会話のモダリティの状態を監視する必要があります。利用可能な 2 つのモダリティは 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);
}