/// <summary> /// Send state to callback /// </summary> private void SendState() { if (callback == null) { return; } if (!sendEvent) { return; } if (lyncClient == null) { callback.WriteState("not-running", ""); return; } if (lyncClient.State != ClientState.SignedIn) { callback.WriteState("signed-out", ""); return; } foreach (var conv in lyncClient.ConversationManager.Conversations) { ModalityState state = conv.Modalities[ModalityTypes.AudioVideo].State; if (state == ModalityState.Notified) { callback.WriteState("call-calling", ""); return; } if (state == ModalityState.Connecting || state == ModalityState.Connected || state == ModalityState.Joining || state == ModalityState.ConnectingToCaller) { callback.WriteState("call-connected", ""); return; } } ContactAvailability currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability); // Busy, BusyIdle, Free, FreeIdle, Away, TemporarilyAway, DoNotDisturb, Offline callback.WriteState(currentAvailability.ToString(), ""); }