Debe supervisar los estados de las modalidades en la conversación. Las dos modalidades disponibles son la mensajería instantánea y AV, por lo que tendrá que observar los cambios del estado de estos, así:
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");
}
Esta muestra está utilizando el evento ConversationAdded que cablear los controladores de eventos para los cambios de modalidad, por lo esto solo funcionará para las conversaciones que se inician mientras se está ejecutando su aplicación. Para hacer lo mismo con las conversaciones que ya están activas antes de que se inicie la aplicación, puede agregar este código a la rutina de inicio de su aplicación:
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);
}