The ININ.IceLib.People namespace contains classes for accessing Interaction Center workgroups, status messages, users and users' statuses.

Attribute Watches. Some object classes get specific settings for the session user. These objects are watched, meaning that any time an attribute is changed, the internal cache of that object is kept up to date. Whenever that attribute's property is referenced the current value will be returned. An event notification is available when any of the attributes changes in value. Examples of watched attribute classes are:

Examples

The following example illustrates an attribute watch to watch attributes for user workgroup details.

CopyC#
public class WorkgroupDetailsWatcher
{
     PeopleManager _PeopleManager;
     WorkgroupDetails _WorkgroupDetails;
     string _WorkgroupName = "Marketing";
     //We are interested in watching the Members and Supervisors attributes of the Workgroup Details.
     string[] _WatchedAttributes = new string[] { WorkgroupAttributes.Members, WorkgroupAttributes.Supervisors };

     public WorkgroupDetailsWatcher(PeopleManager peopleManager)
     {
         _PeopleManager = peopleManager;
     }
      private void WorkgroupDetailsChanged(object sender, ININ.IceLib.People.WatchedAttributesEventArgs e)
     {
         DisplayAttributes();
     }
     private void DisplayAttributes()
     {
         ReadOnlyCollection<string> members = _WorkgroupDetails.Members;
         StringBuilder sb = new StringBuilder();

         sb.Append("The members of ").Append(_WorkgroupName).Append(" are ");

         foreach (string member in members)
         {
            sb.Append(member).Append("\n");  
         }

         MessageBox.Show(sb.ToString());
     }
     public override void StartWatch()
     {
         if( _WorkgroupDetails == null )
         {
             _WorkgroupDetails = new WorkgroupDetails(_PeopleManager, _WorkgroupName);
             _WorkgroupDetails.WatchedAttributesChanged += new EventHandler<WatchedAttributesEventArgs>(WorkgroupDetailsChanged);
             _WorkgroupDetails.StartWatchingCompleted += new AsyncCompletedEventHandler(_WorkgroupDetails_StartWatchingCompleted);
             _WorkgroupDetails.StopWatchingCompleted += new AsyncCompletedEventHandler(_WorkgroupDetails_StopWatchingCompleted);

         }
         _WorkgroupDetails.StartWatchingAsync(_WatchedAttributes, null);
     }
     void _WorkgroupDetails_StopWatchingCompleted(object sender, AsyncCompletedEventArgs e)
     {
         MessageBox.Show("WorkgroupDetails.StopWatchingAsync succeeded!");
     }

     void _WorkgroupDetails_StartWatchingCompleted(object sender, AsyncCompletedEventArgs e)
     {
         DisplayAttributes();  
     }
     public override void StopWatch()
     {
         if( _WorkgroupDetails == null )
         {
             MessageBox.Show("A start watch has not been called");
             return;
         }
         _WorkgroupDetails.StopWatchingAsync(null);
     }
 }

Object Watches. Some of these classes represent object watches. They are used to maintain a list of objects and watch for changes to those objects. The internal cache of these objects is kept up to data so anytime an object's property is referenced the current value will be returned. An event notification is available when a set of watched objects changes. Examples of watched object classes are: StatusMessageList watching StatusMessageDetails objects, UserStatusList watching UserStatus objects, UserWorkgroupActivationList watching UserWorkgroupActivation objects, and CustomButtonList watching CustomButton objects.

Examples

The following example illustrates an object watch on the list of custom buttons defined for the user in Interaction Administrator. When the list changes, this code is notified of the change.

CopyC#
  public class CustomButtonListWatcher
  {
     private CustomButtonList _CustomButtonList;
     private PeopleManager _PeopleManager = PeopleManager.GetInstance(_Session);

     public void StartWatch()
     {
       // Create the call back and send the asynchronous query
       if( _CustomButtonList == null )
       {
            _CustomButtonList = new CustomButtonList(_PeopleManager);

            _CustomButtonList.WatchedObjectsChanged += new EventHandler<WatchedObjectsEventArgs>(CustomButtonListChanged);
            _CustomButtonList.StartWatchingCompleted += new AsyncCompletedEventHandler(_CustomButtonList_StartWatchingCompleted);
            _CustomButtonList.StopWatchingCompleted += new AsyncCompletedEventHandler(_CustomButtonList_StopWatchingCompleted);
       }
       _CustomButtonList.StartWatchingAsync(null);
  }         

   void _CustomButtonList_StartWatchingCompleted(object sender, AsyncCompletedEventArgs e)
   {
       ReadOnlyCollection<CustomButton> buttonList = _CustomButtonList.GetList();

       foreach(CustomButton button in buttonList)
       {
          //Display the text of the button
          MessageBox.Show(button.Text);
       }
   }

  void _CustomButtonList_StopWatchingCompleted(object sender, AsyncCompletedEventArgs e)
  {
      MessageBox.Show("No longer watching the Custom Button List");
  }
  private void CustomButtonListChanged(object sender, WatchedObjectsEventArgs e)
  {
      //The custom button list has changed, display the list again showing the updates 
      ReadOnlyCollection<CustomButton> buttonList = _CustomButtonList.GetList();

      foreach(CustomButton button in buttonList)
      {
          MessageBox.Show(button.Text);
      }
  }
}

Examples

The IceLib SDK includes example application references to the ININ.IceLib.People namespace. Some examples are listed below.
ProjectLocation
TutorialExampleSystemStatisticsViewModel.cs, line 57, in SystemStatisticsViewModel.SessionConnectionStateChanged
StatisticCatalogViewModel.cs, line 144, in StatisticCatalogViewModel.SessionConnectionStateChanged

Classes

  ClassDescription
Public classAccountCode
Represents an account code.
Public classACDRoutingOutboundMailbox
Represents an ACD Routing mailbox for sending outbound e-mail interactions on behalf of a workgroup.
Public classCustomButton
Represents a custom button watched object.

Object instances of this class are managed by the CustomButtonList class.

Public classCustomButtonList
Represents a watched list of custom buttons (CustomButton).
Public classExternalSystemConfiguration
Represents external system configuration information for a user.
Public classExternalSystemConfigurations
Provides a list of ExternalSystemConfigurations.
Public classFilteredStatusMessageChangedEventArgs
Provides data for the filtered status message list changed event.
Public classFilteredStatusMessageList
Represents a watched list of (StatusMessageDetails) available for a set of users.
Public classGetLookupEntriesCompletedEventArgs
Provides data for asynchronous completed events of GetLookupEntriesAsync or GetLookupEntriesAsync.
Public classGetPreviousStatusInfoCompletedEventArgs
Provides data for asynchronous completed events of UserStatusList.
Public classGetUserActivationListCompletedEventArgs
Provides data for asynchronous completed events of GetUserActivationList(String).
Public classGetUserStatusCompletedEventArgs
Provides data for asynchronous completed events of UserStatusList.
Public classLicenseManagement
This class provides support for performing license operations for the session user.
Public classLicenseNameAttributes
Static constants for common IC license names used in the LicenseRequest class.
Public classLicenseOperationCompletedEventArgs
Arguments returned by the asynchronous license operation request.
Public classLicenseRequest
This class implements a license request operation.
Public classLicensesEventArgs
Provides data for the LicensesChanged event of a LicenseManagement.
Public classLookupEntriesDetails
Represents the return value for GetLookupEntries and GetLookupEntries or the corresponding asynchronous variants GetLookupEntriesAsync and GetLookupEntriesAsync.
Public classLookupEntry
Represents a lookup entry.
Public classLookupParameters
Represents the input for GetLookupEntriesAsync or GetLookupEntries.
Public classPeopleManager
Provides access to all watched attribute and object classes in the People namespace.
Public classPerformLicenseOperationCompletedEventArgs
Arguments returned by the asynchronous perform license operation request.
Public classPerformLicenseOperationResult
Public classStatusMessageChangedEventArgs
Provides data for the filtered status message list changed event for status message attributes.
Public classStatusMessageDetails
Represents the details for a status message watched object. Object instances of this class are managed by the StatusMessageList class.
Public classStatusMessageList
Represents a watched list of status messages. Use StatusMessageDetails to get the details of a status message watched object.
Public classUserAccessListsAttributes
Attribute strings for the UserAccessListsSettings watched class.

Remarks

The attribute names specified in this class are used in conjunction with the synchronous and asynchronous StartWatching and ChangeWatchedAttributes methods in the UserAccessListsSettings class.
Public classUserAccessListsSettings
Represents the access control lists settings for an IC user. These settings are configured in the Access control section of the Security tab in Interaction Administrator.
Public classUserDataAttributes
Attribute strings for the UserDataSettings watched class.
Public classUserDataSettings
Represents miscellaneous data settings for an IC user, such as the user's workgroup membership, supervisory rights, and greeting preference. These settings are configured in Interaction Administrator.
Public classUserEntry
Represents a user entry watched object. For example, their display name, company, extension, etc. Object instances of this class are managed by the UserEntryList class.
Public classUserEntryList
Represents a list of watched user entries (UserEntry).
Public classUserRightsAttributes
Attribute strings for the UserRightsSettings watched class.
Public classUserRightsSettings
Represents the basic user rights settings for an IC user. User rights are set in Interaction Administrator at the Default User, User or Workgroup level.
Public classUserSettings
Represents the basic settings for an IC user.
Public classUserStatus
Represents a user's status watched object. For example, Available, Do Not Disturb and so on. Object instances of this class are managed by the UserStatusList class.
Public classUserStatusList
Represents a list of watched user statuses (UserStatus).
Public classUserStatusPreviousInfo
Represents a user's previous status settings for a particular status.
Public classUserStatusUpdate
This object is used to change a user's status.
Public classUserWorkgroupActivation
Represents the status of a user's activation in a workgroup. When a user is activated in a workgroup, then the user is eligible to handle ACD interactions.
Public classUserWorkgroupActivationList
Class to implement a list of UserWorkgroupActivation objects.
Public classUserWorkgroupActivationUpdate
This object is used to update a user's workgroup activation.
Public classVoicePrompts
Manages user voice prompts by starting actions for a voice prompt type.
Public classWatchedAttributesEventArgs
Provides data for the WatchedAttributesChangedEvent event of a WorkgroupDetails class or UserSettings derived classes.
Public classWatchedObjectsEventArgs<(Of <(<'TPropertyEnum>)>)>
Provides data for the watched objects changed event for a watched object.
Public classWorkgroupActivation
Represents a users workgroup activation as used in batch processing.
Public classWorkgroupActivationChangedEventArgs
Provides data for the workgroup activation list changed event.
Public classWorkgroupActivationList
Represents a list of user workgroup activations. This class allows for bulk access to user workgroup activations.
Public classWorkgroupAttributes
Attribute strings for the WorkgroupDetails watched class.
Public classWorkgroupDetails
Represents the common details for an IC workgroup.
Public classWrapUpCode
Represents a wrap-up code definition. Wrap-up codes are provided for agents to submit the resolution of an ACD interaction.

Enumerations

  EnumerationDescription
Public enumerationCustomButtonAction
Action to perform when button is pressed.
Public enumerationCustomButtonAvailability
When is the button available to be selected.
Public enumerationCustomButtonLocations
Specifies locations that custom buttons can occupy.
Public enumerationCustomButtonProperty
Each value in this enumeration represents a property in CustomButton.
Public enumerationLicenseRequestType
Enumeration for the type of operation requested for a license.
Public enumerationLicenseStatusType
Represents the license status.
Public enumerationLookupComparisonType
Represents the types of comparison for GetLookupEntries and GetLookupEntries or the corresponding asynchronous variants GetLookupEntriesAsync and GetLookupEntriesAsync.
Public enumerationLookupEntryProperty
Represents properties contained in a LookupEntry.
Public enumerationLookupEntryType
Represents different sources in which lookup entries can be searched.
Public enumerationStatusMessageProperty
Each value in this enumeration represents a property in StatusMessageDetails.
Public enumerationUserEntryProperty
Each value in this enumeration represents a property in UserEntry.
Public enumerationUserStatusProperty
Each value in this enumeration represents a property in UserStatus.
Public enumerationUserWorkgroupActivationProperty
Each value in this enumeration represents a property in UserWorkgroupActivation.
Public enumerationVoicePromptActionTypes
The set of actions that can be performed on a voice prompt. Voice prompts are handled via a VoicePrompts object.
Public enumerationVoicePromptType
Indicates the type of voice prompt. Voice prompts are handled via a VoicePrompts object.

Version Information

Supported for IC Server version 2015 R1 and beyond.
For 4.0, supported for IC Server version 4.0 GA and beyond.
For 3.0, supported for IC Server version 3.0 GA and beyond.