È necessario monitorare gli stati delle modalità della conversazione. Le due modalità sono avaiable IM e AV, quindi avrai bisogno di guardare per cambiamenti di stato su questi, in questo modo:
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");
}
Questo esempio utilizza l'evento ConversationAdded per cablare i gestori di eventi per i cambiamenti di modalità, in modo questo funzionerà solo per le conversazioni avviate mentre l'applicazione è in esecuzione. Per fare lo stesso per le conversazioni che sono già attive prima dell'avvio dell'applicazione, è possibile aggiungere questo codice alla routine di avvio dell'applicazione:
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);
}
fonte
2012-02-09 10:05:28