コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: ipc57/LyncUtility
        /// <summary>
        /// Gets the contact's current availability value from Lync and updates the corresponding elements in the user interface
        /// </summary>
        private void GetAvailability()
        {
            //Get the current availability value from Lync
            try
            {
                currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);
            }
            catch (LyncClientException e)
            {
                Trace.WriteLine(e);
            }
            catch (SystemException systemException)
            {
                if (IsLyncException(systemException))
                {
                    // Log the exception thrown by the Lync Model API.
                    Trace.WriteLine("Error: " + systemException);
                }
                else
                {
                    // Rethrow the SystemException which did not come from the Lync Model API.
                    throw;
                }
            }


            if (currentAvailability != 0)
            {
                //React to changed availability
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: redmondgeek/beakn
        private static void SetAvailability()
        {
            //Get the current availability value from Lync
            ContactAvailability currentAvailability = 0;

            try
            {
                currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);
                Console.WriteLine("Availability changed: " + currentAvailability);
                arduinoSerial.Set(currentAvailability);
            }
            catch (LyncClientException e)
            {
                Console.WriteLine(e);
            }
            catch (SystemException systemException)
            {
                if (IsLyncException(systemException))
                {
                    // Log the exception thrown by the Lync Model API.
                    Console.WriteLine("Error: " + systemException);
                }
                else
                {
                    // Rethrow the SystemException which did not come from the Lync Model API.
                    throw;
                }
            }
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: ipc57/LyncUtility
        private void SetAvailability(ContactAvailability NewAvailability)
        {
            Trace.WriteLine("SetAvailability(" + NewAvailability.ToString() + ")");
            //Add the availability to the contact information items to be published
            Dictionary <PublishableContactInformationType, object> newInformation =
                new Dictionary <PublishableContactInformationType, object>();

            newInformation.Add(PublishableContactInformationType.Availability, NewAvailability);

            //Publish the new availability value
            try
            {
                lyncClient.Self.BeginPublishContactInformation(newInformation, PublishContactInformationCallback, null);
            }
            catch (LyncClientException lyncClientException)
            {
                Trace.WriteLine(lyncClientException);
            }
            catch (SystemException systemException)
            {
                if (IsLyncException(systemException))
                {
                    // Log the exception thrown by the Lync Model API.
                    Trace.WriteLine("Lync Exception: " + systemException);
                }
                else
                {
                    // Rethrow the SystemException which did not come from the Lync Model API.
                    throw;
                }
            }
        }
コード例 #4
0
        void Contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
        {
            string        returnValue = string.Empty;
            StringBuilder sb          = new StringBuilder();
            Boolean       raiseUpdate = false;

            if (e.ChangedContactInformation.Contains(ContactInformationType.Availability))
            {
                //get actual contactModel availability (Will be int value within OCOM availaiblity ranges)
                ContactAvailability availEnum = (ContactAvailability)((Contact)sender).GetContactInformation(ContactInformationType.Availability);
                string activityString         = (string)((Contact)sender).GetContactInformation(ContactInformationType.Activity);
                sb.Append(availEnum.ToString() + " " + activityString);
                raiseUpdate = true;
            }

            if (raiseUpdate)
            {
                returnValue = "Updated availability for "
                              + ((Contact)sender).GetContactInformation(ContactInformationType.DisplayName).ToString()
                              + System.Environment.NewLine
                              + sb.ToString();
            }

            Dictionary <PublishableContactInformationType, object> publishState = new Dictionary <PublishableContactInformationType, object>();

            publishState.Add(PublishableContactInformationType.Availability, ContactAvailability.Free);

            writeMessage("simulate mouse click" + DateTime.Now.ToString());
            DoMouseClick();

            //_lyncClient.Self.BeginPublishContactInformation(publishState, publishState_callback, null);
        }
コード例 #5
0
        public void setClient(ContactAvailability pres)
        {
            //$pres = new PresenceStateExtensions();

            Dictionary <PublishableContactInformationType, object> newInformation =
                new Dictionary <PublishableContactInformationType, object>();

            newInformation.Add(PublishableContactInformationType.Availability, pres);

            //Publish the new availability value
            try
            {
                lyncClient.Self.BeginPublishContactInformation(newInformation, PublishContactInformationCallback, null);
            }
            catch (LyncClientException lyncClientException)
            {
                Console.WriteLine(lyncClientException);
            }
            catch (SystemException systemException)
            {
                if (IsLyncException(systemException))
                {
                    // Log the exception thrown by the Lync Model API.
                    Console.WriteLine("Error: " + systemException);
                }
                else
                {
                    // Rethrow the SystemException which did not come from the Lync Model API.
                    throw;
                }
            }
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: cohoe/LyncLights
        private static char GetAvailabilityChar(ContactAvailability currentAvailability)
        {
            switch (currentAvailability)
            {
            case ContactAvailability.Free:
                return('a');

            case ContactAvailability.Away:
                return('w');

            case ContactAvailability.Busy:
                return('b');

            case ContactAvailability.BusyIdle:
                return('b');

            case ContactAvailability.DoNotDisturb:
                return('d');

            case ContactAvailability.FreeIdle:
                return('a');

            case ContactAvailability.TemporarilyAway:
                return('w');

            case ContactAvailability.Offline:
                return('r');

            default:
                return('r');
            }
        }
コード例 #7
0
 private void Contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
 {
     Debug.WriteLine("Contact information changed");
     if (e.ChangedContactInformation.Contains(ContactInformationType.Activity) || e.ChangedContactInformation.Contains(ContactInformationType.Availability))
     {
         var activity = _client.Self.Contact.GetContactInformation(ContactInformationType.ActivityId);
         ContactAvailability availability = (ContactAvailability)_client.Self.Contact.GetContactInformation(ContactInformationType.Availability);
         if (availability == ContactAvailability.Busy && activity.ToString().ToLower() == "on-the-phone")
         {
             if (!_pauseEnabled)
             {
                 TriggerPauseButton(activity.ToString());
                 _pauseEnabled = true;
                 UpdateStatus();
             }
         }
         else
         {
             if (_pauseEnabled)
             {
                 TriggerPauseButton(activity.ToString());
                 _pauseEnabled = false;
                 UpdateStatus();
             }
         }
     }
 }
コード例 #8
0
        private void SetupLyncLogitechLED()
        {
            try
            {
                if (lc == null)
                {
                    lc = Microsoft.Lync.Model.LyncClient.GetClient();
                    lc.StateChanged += Lc_StateChanged;
                }
            }
            catch (ClientNotFoundException ex)
            {
                MessageBox.Show("Skype for business is not running", "Program Terminated Unexpectedly",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);

                WaitTillLyncUp();
            }

            if (lc.State == Microsoft.Lync.Model.ClientState.SignedIn)
            {
                lc.Self.Contact.ContactInformationChanged += Contact_ContactInformationChanged;

                ContactAvailability availability = (ContactAvailability)lc.Self.Contact.GetContactInformation(ContactInformationType.Availability);
                ChangeColor(availability);
            }
        }
コード例 #9
0
        private void SetAvailability()
        {
            //Get the current availability value from Lync
            ContactAvailability currentAvailability = 0;

            currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);
            if (currentAvailability != 0)
            {
                switch (currentAvailability)
                {
                case ContactAvailability.Away:
                    // do something when away
                    Console.WriteLine("I am Away...");
                    break;

                case ContactAvailability.Busy:
                    // do something when busy
                    Console.WriteLine("I am Busy!");
                    break;

                case ContactAvailability.DoNotDisturb:
                    // do something when DND
                    Console.WriteLine("Please DND");
                    break;

                case ContactAvailability.Free:
                    // do something when FREE
                    Console.WriteLine("I am Free!");
                    break;
                }
            }
        }
コード例 #10
0
        private void SetAvailability()
        {
            //Get the current availability value from Lync
            ContactAvailability currentAvailability = 0;

            try
            {
                currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);
                string currentAvailabilityName = Enum.GetName(typeof(ContactAvailability), currentAvailability);

                OnAvailabilityChanged(new AvailabilityChangedEventArgs(currentAvailability, currentAvailabilityName));
                ChangeStatus(currentAvailability);
            }
            catch (LyncClientException e)
            {
                Console.WriteLine(e);
            }
            catch (SystemException systemException)
            {
                if (IsLyncException(systemException))
                {
                    // Log the exception thrown by the Lync Model API.
                    Console.WriteLine("Error: " + systemException);
                }
                else
                {
                    // Rethrow the SystemException which did not come from the Lync Model API.
                    throw;
                }
            }
        }
コード例 #11
0
        //https://blog.thoughtstuff.co.uk/2016/06/skypedevq-updating-skype-for-business-presence-client-sdk/
        private void SkypeUpdateAvailability(ContactAvailability availability)
        {
            Dictionary <PublishableContactInformationType, object> newStatus = new Dictionary <PublishableContactInformationType, object>();

            newStatus.Add(PublishableContactInformationType.Availability, availability);
            skypeClient.Self.BeginPublishContactInformation(newStatus, skypeEndUpdate, skypeClient.Self);
        }
コード例 #12
0
ファイル: StatusInfo.cs プロジェクト: cbadke/punchy-lync
        public static string HumanReadable(this ContactAvailability c)
        {
            switch (c)
            {
            case ContactAvailability.Away:
                return("Away");

            case ContactAvailability.Busy:
                return("Busy");

            case ContactAvailability.BusyIdle:
                return("Busy");

            case ContactAvailability.DoNotDisturb:
                return("Do Not Disturb");

            case ContactAvailability.Free:
                return("Available");

            case ContactAvailability.FreeIdle:
                return("Idle");

            case ContactAvailability.None:
            case ContactAvailability.Invalid:
            case ContactAvailability.Offline:
                return("Offline");

            case ContactAvailability.TemporarilyAway:
                return("Be Right Back");

            default:
                return("");
            }
        }
コード例 #13
0
        /// <summary>
        /// Updates the user interface
        /// </summary>
        /// <param name="currentState"></param>
        private void UpdateUserInterface(ClientState currentState)
        {
            //Update the client state in the user interface
            clientStateTextBox.Text = currentState.ToString();

            if (currentState == ClientState.SignedIn)
            {
                //Listen for events of changes of the contact's information
                lyncClient.Self.Contact.ContactInformationChanged +=
                    new EventHandler<ContactInformationChangedEventArgs>(SelfContact_ContactInformationChanged);

                //put email address who you want to monitor in format like sip:[email protected]
                peer = lyncClient.ContactManager.GetContactByUri("");
                peer.ContactInformationChanged += new EventHandler<ContactInformationChangedEventArgs>(PeerContact_ContactInformationChanged);
                ContactAvailability pca = (ContactAvailability)peer.GetContactInformation(ContactInformationType.Availability);
                if (pca == ContactAvailability.Away ||pca == ContactAvailability.Offline) { isAwayS = true; }
                Console.WriteLine("S: " + pca + ",isAwayS: " + isAwayS);
                
                 //put email address who you want to monitor in format like sip:[email protected]
                peer2 = lyncClient.ContactManager.GetContactByUri("");
                peer2.ContactInformationChanged += new EventHandler<ContactInformationChangedEventArgs>(Peer2Contact_ContactInformationChanged);
                pca = (ContactAvailability)peer2.GetContactInformation(ContactInformationType.Availability);
                if (pca == ContactAvailability.Away) { isAwayM = true; }
                Console.WriteLine("M: " + pca + ",isAwayM: " + isAwayM);
                if (isAwayM && isAwayS)
                {
                    Console.WriteLine("Both are away");
                    isAwayBoth = true;
                    //SendSMS("Both are away");
                }

                //Get the contact's information from Lync and update with it the corresponding elements of the user interface.
                SetName();
                SetAvailability();
                SetPersonalNote();
                SetContactPhoto();

                //Update the SignInOut button content
                signInOutButton.Content = "Sign Out";

                //Enable elements in the user interface
                personalNoteTextBox.IsEnabled = true;
                availabilityComboBox.IsEnabled = true;
                setNoteButton.IsEnabled = true;
            }
            else
            {
                //Update the SignInOut button content
                signInOutButton.Content = "Sign In";

                //Disable elements in the user interface
                personalNoteTextBox.IsEnabled = false;
                availabilityComboBox.IsEnabled = false;
                setNoteButton.IsEnabled = false;

                //Change the color of the border containing the contact's photo to match the contact's offline status
                availabilityBorder.Background = Brushes.LightSlateGray;
            }
        }
コード例 #14
0
        private void Contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
        {
            //Set LED matching Lync/SfB state
            Console.WriteLine("Lync/SfB state changed!");
            ContactAvailability myAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);

            controlBusylight(string.Format("kSetLed,{0};", myAvailability.ToString()));
        }
コード例 #15
0
ファイル: Program.cs プロジェクト: cohoe/LyncLights
 private static void DisplayContactPresence()
 {
     ContactAvailability myStatus = GetLyncAvailability();
     Char myStatusChar = GetAvailabilityChar(myStatus);
     Console.WriteLine("Status: " + myStatusChar);
     SendSerialData(myStatusChar);
     currentPresence = myStatus;
 }
コード例 #16
0
        private void SetStatus(ContactAvailability availability, string personalNote)
        {
            var parameters = new Dictionary <PublishableContactInformationType, object>();

            parameters.Add(PublishableContactInformationType.Availability, availability);
            parameters.Add(PublishableContactInformationType.PersonalNote, personalNote);
            _client.Self.BeginPublishContactInformation(parameters, BeginPublishContactInformationCallback, _client.Self);
        }
コード例 #17
0
ファイル: Program.cs プロジェクト: cohoe/LyncLights
        private static void DisplayContactPresence()
        {
            ContactAvailability myStatus = GetLyncAvailability();
            Char myStatusChar            = GetAvailabilityChar(myStatus);

            Console.WriteLine("Status: " + myStatusChar);
            SendSerialData(myStatusChar);
            currentPresence = myStatus;
        }
コード例 #18
0
        /// <summary>
        /// Read the current Availability Information from Lync/Skype for Business and set the color
        /// </summary>
        void SetCurrentContactState()
        {
            Rgb blinkColor = blinkColorOff;

            byte[] arduinoLeds = arduinoColorOff;

            if (lyncClient.State == ClientState.SignedIn)
            {
                ContactAvailability currentAvailability = (ContactAvailability)lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);
                switch (currentAvailability)
                {
                case ContactAvailability.Busy:                  // Busy
                    blinkColor  = blinkColorBusy;
                    arduinoLeds = arduinoColorBusy;
                    break;

                case ContactAvailability.BusyIdle:              // Busy and idle
                    blinkColor  = blinkColorBusyIdle;
                    arduinoLeds = arduinoColorBusyIdle;
                    break;

                case ContactAvailability.Free:                  // Available
                    blinkColor  = blinkColorAvailable;
                    arduinoLeds = arduinoColorAvailable;
                    break;

                case ContactAvailability.FreeIdle:              // Available and idle
                    blinkColor  = blinkColorAvailableIdle;
                    arduinoLeds = arduinoColorAvailableIdle;
                    break;

                case ContactAvailability.Away:                  // Inactive/away, off work, appear away
                case ContactAvailability.TemporarilyAway:       // Be right back
                    blinkColor  = blinkColorAway;
                    arduinoLeds = arduinoColorAway;
                    break;

                case ContactAvailability.DoNotDisturb:          // Do not disturb
                    blinkColor  = blinkColorBusy;
                    arduinoLeds = arduinoColorBusy;
                    break;

                case ContactAvailability.Offline:               // Offline
                    blinkColor  = blinkColorOff;
                    arduinoLeds = arduinoColorOff;
                    break;

                default:
                    break;
                }

                SetBlink1State(blinkColor);
                arduino.SetLEDs(arduinoLeds);

                Debug.WriteLine(currentAvailability.ToString());
            }
        }
コード例 #19
0
        private void Lc_StateChanged(object sender, ClientStateChangedEventArgs e)
        {
            if (e.NewState == ClientState.SignedIn)
            {
                lc.Self.Contact.ContactInformationChanged += Contact_ContactInformationChanged;

                ContactAvailability availability = (ContactAvailability)lc.Self.Contact.GetContactInformation(ContactInformationType.Availability);
                ChangeColor(availability);
            }
        }
コード例 #20
0
        /// <summary>
        /// lync search callback to parse the results of the query
        /// </summary>
        /// <param name="r"></param>
        private void BeginSearchCallback(IAsyncResult r)
        {
            //Console.WriteLine("callback here");
            object[]       asyncState = (object[])r.AsyncState;
            ContactManager cm         = (ContactManager)asyncState[0];

            try
            {
                SearchResults results = cm.EndSearch(r);
                if (results.AllResults.Count == 0)
                {
                    Console.WriteLine(Resources.NoResults);
                    _done = true;
                }
                else if (results.AllResults.Count == 1)
                {
                    Contact contact = results.Contacts[0];

                    ContactAvailability availability = (ContactAvailability)contact.GetContactInformation(ContactInformationType.Availability);

                    //todo: check idle time without hanging
                    string timeElapsed        = GetElapsedIdleTime(contact);
                    string userStatus         = availability.ToString();
                    string statusCode         = contact.GetContactInformation(ContactInformationType.Availability).ToString();
                    string isOutOfOfficeCheck = contact.GetContactInformation(ContactInformationType.IsOutOfOffice).ToString();
                    Console.WriteLine(String.Format("Status: {0}, Code: {1}, Last seen: {2}, Is Out Of Office: {3}", userStatus, statusCode, timeElapsed, isOutOfOfficeCheck));

                    //http://rcosic.wordpress.com/2011/11/17/availability-presence-in-lync-client/
                    //Invalid (-1),
                    //None (0) – Do not use this enumerator. This flag indicates that the cotact state is unspecified.,
                    //Free (3500) – A flag indicating that the contact is available,
                    //FreeIdle (5000) – Contact is free but inactive,
                    //Busy (6500) – A flag indicating that the contact is busy and inactive,
                    //BusyIdle (7500) – Contact is busy but inactive,
                    //DoNotDisturb (9500) – A flag indicating that the contact does not want to be disturbed,
                    //TemporarilyAway (12500) – A flag indicating that the contact is temporarily away,
                    //Away (15500) – A flag indicating that the contact is away,
                    //Offline (18500) – A flag indicating that the contact is signed out.

                    _done = true;
                }
                else
                {
                    Console.WriteLine(Resources.MultipleResults);
                    _done = true;
                }
            }
            catch (SearchException se)
            {
                Console.WriteLine(Resources.SearchFailed + se.Reason.ToString());
                _done = true;
            }
            _client.ContactManager.EndSearch(r);
        }
コード例 #21
0
ファイル: Tracker.cs プロジェクト: wwls/LyncSpy
 private bool CheckStatus(ContactAvailability availEnum)
 {
     foreach (ContactAvailability ca in _statusList)
     {
         if (ca == availEnum)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #22
0
        private ActionCommand CreateShowLedPanelActionCommand(ContactAvailability av)
        {
            var mapper   = _ledPanelMapperFactory.Create(av);
            var ledPanel = mapper.CreateLedPanel();

            return(new ActionCommand()
            {
                WorkerMethodParameterValue = ledPanel,
                WorkerMethod = LedDisplayWorkerConstants.METHOD_SHOWLEDPANEL,
                WorkerName = LedDisplayWorkerConstants.NAME,
                WorkerMethodParameterTypeName = nameof(VisualLedPanel)
            });
        }
コード例 #23
0
        internal LedPanelMapper Create(ContactAvailability ca)
        {
            var type = Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(f => typeof(LedPanelMapper).IsAssignableFrom(f) && f.Name == ca.ToString());

            if (type == null)
            {
                throw new NotImplementedException(ca.ToString());
            }

            var result = (LedPanelMapper)Activator.CreateInstance(type);

            return(result);
        }
コード例 #24
0
        private static void SetPresence(ContactAvailability contactAvailability, string message = null)
        {
            try
            {
                lock (s_lyncClient_lock)
                {
                    s_previousPresence = s_currentPresence;
                    s_currentPresence  = contactAvailability;

                    //Check current Lync status
                    var lyncClientStatus =
                        (ContactAvailability)
                        s_lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability);

                    if (s_previousPresence == lyncClientStatus)
                    {
                        //Updating
                        var newInformation = new Dictionary <PublishableContactInformationType, object>()
                        {
                            { PublishableContactInformationType.Availability, contactAvailability },
                            { PublishableContactInformationType.PersonalNote, message ?? string.Empty }
                        };

                        s_lyncClient.Self.BeginPublishContactInformation(newInformation, null, null);
                    }
                    else
                    {
                        //Lync status was changed by user, set state to free, we will wait until the user goes back to free before continuing
                        s_previousPresence = ContactAvailability.Free;
                        s_currentPresence  = ContactAvailability.Free;
                    }
                }
            }
            catch (Exception ex)
            {
                try
                {
                    ShowWindow(s_handle, SW_SHOW);
                    Console.WriteLine(ex);
                }
                catch
                {
                    // ignored
                }
                finally
                {
                    //Deinitialize();
                    Initialize();
                }
            }
        }
コード例 #25
0
 private static void UpdateSkypeAvilability()
 {
     try
     {
         if ((_lyncClient?.State == ClientState.SignedIn))
         {
             Status = ((ContactAvailability)_lyncClient.Self.Contact.GetContactInformation(ContactInformationType.Availability));
         }
     }
     catch (Exception Ex)
     {
         Logger.Log(Ex.Message, Logger.LEVEL.ERROR);
     }
 }
コード例 #26
0
        /// <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(), "");
        }
コード例 #27
0
        /// <inheritdoc />
        public void RunFor(ContactAvailability contactAvailability)
        {
            if (!Enum.IsDefined(typeof(ContactAvailability), contactAvailability))
            {
                throw new InvalidEnumArgumentException(nameof(contactAvailability), (int)contactAvailability, typeof(ContactAvailability));
            }

            _lyncClientInstance.Value.Self.BeginPublishContactInformation(new Dictionary <PublishableContactInformationType, object>
            {
                {
                    PublishableContactInformationType
                    .Availability,
                    contactAvailability
                }
            }, null, null);
        }
コード例 #28
0
        private void setStatus(ContactAvailability newStatus)
        {
            try
            {
                var infoToPublish = new Dictionary <PublishableContactInformationType, object>();
                infoToPublish.Add(PublishableContactInformationType.Availability, newStatus);

                var theClient = LyncClient.GetClient();
                var self      = theClient.Self;
                self.BeginPublishContactInformation(infoToPublish, EndPublishContactInformation, self);
            }
            catch
            {
                Console.WriteLine("Problem setting Skype for Business status. Is it running?");
            }
        }
コード例 #29
0
 public static void SetSelfAvailability(ContactAvailability availability, string activityId = null)
 {
     if (string.IsNullOrEmpty(activityId))
     {
         activityId = availability.ToString().ToLower();
     }
     try
     {
         var info = new Dictionary <PublishableContactInformationType, object> {
             { PublishableContactInformationType.Availability, availability },
             { PublishableContactInformationType.ActivityId, activityId }
         };
         LyncClient.GetClient().Self.BeginPublishContactInformation(info, null, null);
     }
     catch { }
 }
コード例 #30
0
        private void Contact_ContactInformationChanged(object sender, ContactInformationChangedEventArgs e)
        {
            if (lc.State == ClientState.SigningOut || lc.State == ClientState.SignedOut || lc.State == ClientState.SigningIn)
            {
                LogitechGSDK.LogiLedRestoreLighting();
                return;
            }

            Contact self = sender as Contact;

            if (e.ChangedContactInformation.Contains(ContactInformationType.Availability))
            {
                ContactAvailability availability = (ContactAvailability)self.GetContactInformation(ContactInformationType.Availability);

                ChangeColor(availability);
            }
        }
コード例 #31
0
ファイル: Extensions.cs プロジェクト: DrMueller/RaspberryOld
        internal static me.ContactAvailability ToContactAvaliability(this ContactAvailability ca)
        {
            var nativeIndex = (int)ca;

            var modelEnumType = typeof(me.ContactAvailability);

            foreach (Enum val in Enum.GetValues(modelEnumType))
            {
                var fi       = modelEnumType.GetField(val.ToString());
                var custAttr = (NativeContactAvailabilityIdAttribute)fi.GetCustomAttributes(typeof(NativeContactAvailabilityIdAttribute), false).FirstOrDefault();
                if (custAttr != null && custAttr.NativeIndex == nativeIndex)
                {
                    return((me.ContactAvailability)val);
                }
            }

            throw new NotImplementedException(ca.ToString());
        }
コード例 #32
0
ファイル: Program.cs プロジェクト: cohoe/LyncLights
 private static char GetAvailabilityChar(ContactAvailability currentAvailability)
 {
     switch (currentAvailability)
     {
         case ContactAvailability.Free:
             return 'a';
         case ContactAvailability.Away:
             return 'w';
         case ContactAvailability.Busy:
             return 'b';
         case ContactAvailability.BusyIdle:
             return 'b';
         case ContactAvailability.DoNotDisturb:
             return 'd';
         case ContactAvailability.FreeIdle:
             return 'a';
         case ContactAvailability.TemporarilyAway:
             return 'w';
         case ContactAvailability.Offline:
             return 'r';
         default:
             return 'r';
     }
 }
 internal PresenceInformationEventArgs(ContactAvailability pState)
 {
     Presence = pState;
 }
コード例 #34
0
ファイル: Serial.cs プロジェクト: grantckohler/RGbeakn
 public void Set(ContactAvailability avail)
 {
     _cmdMessenger.SendCommand(new SendCommand((int)Command.SetLed, avail.ToString()));
 }
コード例 #35
0
 private void OnPresenceChanged(ContactAvailability presence)
 {
     PresenceChanged(null, new PresenceInformationEventArgs(presence));
 }
コード例 #36
0
        private void SetLyncAvailability(ContactAvailability availability)
        {
            Dictionary<PublishableContactInformationType, object> newInformation = new Dictionary<PublishableContactInformationType, object>();
            newInformation.Add(PublishableContactInformationType.Availability, availability);

            try
            {
                lyncClient.Self.BeginPublishContactInformation(newInformation, PublishContactInformationCallback, null);
            }
            catch (Exception ex)
            {
                statusTextBlock.Text = "ERROR: " + ex.Message;
            }
        }
コード例 #37
0
 public AvailabilityChangedEventArgs(ContactAvailability availability, string availabilityName)
 {
     this.Availability = availability;
     this.AvailabilityName = availabilityName;
 }
コード例 #38
0
        /// <summary>
        /// 根据lync状态获取UC状态
        /// </summary>
        /// <param name="availability"></param>
        /// <returns></returns>
        UCContactAvailability GetUCState(ContactAvailability availability)
        {
            UCContactAvailability ucAvailability;
            switch (availability)
            {
                case ContactAvailability.Free:
                case ContactAvailability.FreeIdle:
                    ucAvailability = UCContactAvailability.Online;
                    break;
                case ContactAvailability.Busy:
                case ContactAvailability.BusyIdle:
                    ucAvailability = UCContactAvailability.Busy;
                    break;
                case ContactAvailability.DoNotDisturb:
                    ucAvailability = UCContactAvailability.NoDisturb;
                    break;
                case ContactAvailability.TemporarilyAway:
                case ContactAvailability.Away:
                    ucAvailability = UCContactAvailability.Leave;
                    break;
                default:
                    ucAvailability = UCContactAvailability.Offline;
                    break;

            }
            return ucAvailability;
        }
コード例 #39
0
 /// <summary>
 /// 获取lync状态
 /// </summary>
 public void GetLyncUserState()
 {
     if (_Client.Self.Contact == null)
     {
         userState = ContactAvailability.Free;
     }
     else
     {
         userState = (ContactAvailability)_Client.Self.Contact.GetContactInformation(ContactInformationType.Availability);//Get the current availability value from Lync
     }
 }
コード例 #40
0
        /// <summary>
        /// Set the contact's current availability value from Lync
        /// </summary>
        public void SetAvailability(ContactAvailability state)
        {
            try
            {
                LogManager.SystemLog.Debug(string.Format("SetAvailability state = {0}", state));
                //Add the availability to the contact information items to be published
                Dictionary<PublishableContactInformationType, object> newInformation =
                    new Dictionary<PublishableContactInformationType, object>();
                newInformation.Add(PublishableContactInformationType.Availability, state);
                _Client.Self.BeginPublishContactInformation(newInformation, PublishContactInformationCallback, null);

                UCContactAvailability ucAvailability = GetUCState(state);
                LogInBusiness log = new LogInBusiness();              
                log.PubSelfStatus((int)ucAvailability, new StringBuilder());
            }
            catch (Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }
        }
コード例 #41
0
ファイル: Availability.cs プロジェクト: robeat101/beakn
 public Availability(ContactAvailability contactAvailability, string availabilityName)
 {
     this.ContactAvailability = contactAvailability;
     this.AvailabilityName = availabilityName;
 }
コード例 #42
0
        /// <summary>
        /// Update Lync status with new info, App => Lync
        /// </summary>
        /// <param name="message"></param>
        /// <param name="location"></param>
        /// <param name="availability"></param>
        private void SetLyncStatus(string message, string location, ContactAvailability availability)
        {
            Dictionary<PublishableContactInformationType, object> newInformation = new Dictionary<PublishableContactInformationType, object>();

            if (location != String.Empty)
                newInformation.Add(PublishableContactInformationType.PersonalNote, message + " - " + location);
            else
                newInformation.Add(PublishableContactInformationType.PersonalNote, message);
            newInformation.Add(PublishableContactInformationType.Availability, availability);

            try
            {
                lyncClient.Self.BeginPublishContactInformation(newInformation, PublishContactInformationCallback, null);
            }
            catch (Exception ex)
            {
                statusTextBlock.Text = "ERROR: " + ex.Message;
            }
        }