2012-02-09 11 views
6

着信コールをLyncクライアントで検出しようとしています。 this postLyncで着信を検出する

で説明されているように、LyncクライアントのConversationManager.ConversationAddedイベントを購読することによってこれを行います。ただし、このメソッドを使用すると、呼び出し元との会話ウィンドウが呼び出し元より前に開いている場合、呼んでいる。 たとえば、友達とチャットしているため、開いている会話ウィンドウがあり、この友だちから電話がかかった場合、会話追加イベントは発生しません。

すでに発信者と会話しているときに着信を検出するにはどうすればよいですか? AVモダリティが作成または状態が変化しているときは、Conversation.Modalities [ModalityTypes.AudioVideo]にModalityStateChangedイベントをサブスクライブする必要があります

おかげで、 ニクラス

答えて

5

が、これはあなたのイベントを提供します。

8

会話のモダリティの状態を監視する必要があります。 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); 
} 
関連する問題