Package com.avaya.clientservices.agent

## Interface AgentService

-     public interface AgentService

  The AgentService object is accessible from the User object, providing access to agent features.
  The AgentService operations shall be used post successful agent login except view status (VuStats) and queue status (QStats) monitoring operation which can be used without agent login.
  The client application is notified about status updates on agent features reported by the agent service through handlers that the application has registered on the AgentService object. These updates may be the result of local operations on the AgentService object as well as remote changes initiated by either the service/server or other end users.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addListener​(AgentServiceListener listener)` | Adds a agent service listener to service instance.
    `void` | `addSkill​(AgentSkill skill, java.lang.String agentId, AgentFeatureButtonLampCompletionHandler completionHandler)` | Request to add a skill to the skills assigned to an agent.
    `void` | `callSupervisor​(int skillId, SupervisorAssistCompletionHandler handler)` | Requests for supervisor assistance based on skill.
    `void` | `consultSupervisor​(SupervisorAssistCompletionHandler handler)` | Requests for supervisor assistance.
    `AgentInformation` | `getAgentInformation()` | Returns current agent information.
    `AgentState` | `getAgentState()` | Returns current state of the agent.
    `AgentWorkMode` | `getAgentWorkMode()` | Returns current work mode of the agent.
    `java.util.List<java.lang.Integer>` | `getAllowedAuxiliaryWorkModeReasonCodes()` | Returns list of administered auxiliary work mode reason codes available for an agent to change in to auxiliary work mode.
    `int` | `getAutoLogoutReasonCode()` | Get logout reason code for automatic agent logout.
    `java.util.List<AgentFeature>` | `getAvailableAgentFeatures()` | Returns list of available agent features or feature buttons administered on signaling server for registered SIP user.
    `Capability` | `getCallSupervisorCapability​(int skillId)` | Returns an indication as to whether the supervisor assistance is available based on skill.
    `Capability` | `getChangeSkillCapability()` | Returns an indication as to whether the change skill is available.
    `Capability` | `getConsultSupervisorCapability()` | Returns an indication as to whether the supervisor assistance is available for active call.
    `Capability` | `getForcedLogoutOverrideCapability()` | Returns an indication as to whether the forced logout override is available.
    `java.util.List<QueueStatistics>` | `getQueueStatisticsList()` | Returns a queue statistics collection that is available for the user, this information can be used by the agent to monitor skill based queue statistics using method `AgentServiceImpl.startQueueStatisticsMonitoring(QueueStatistics, AgentServiceCompletionHandler)`.
    `Capability` | `getQueueStatisticsMonitoringCapability​(int skillId)` | Returns an indication whether queue statistics monitor feature is available for particular skill or not.
    `Capability` | `getSendCallWorkCodeCapability()` | Returns an indication as to whether the work code can be sent over the existing call.
    `boolean` | `isAgentFeatureAvailable​(AgentFeatureType featureType)` | Returns whether the agent feature indicated by featureType is available for the application.
    `boolean` | `isAgentServiceAvailable()` | Returns a boolean value indicating whether agent feature service is available or not
    `boolean` | `isAgentWorkModeAvailable​(AgentWorkMode agentWorkMode)` | Returns A boolean value indicating whether the agent work mode indicated by workModeType is available for use.
    `void` | `login​(AgentServiceCompletionHandler handler)` | Starts agent login process with the communications servers.
    `void` | `logout​(int reasonCode, AgentServiceCompletionHandler handler)` | Stops agent services including logout with reason code from the communications servers.
    `void` | `removeListener​(AgentServiceListener listener)` | Removes a agent service listener from service instance.
    `void` | `removeSkill​(AgentSkill skill, java.lang.String agentId, AgentFeatureButtonLampCompletionHandler completionHandler)` | Request to remove (unassign) a skill that is assigned to an agent.
    `void` | `sendCallWorkCode​(java.lang.String callWorkCode, AgentServiceCompletionHandler handler)` | Sends the specified call work code.
    `void` | `setAgentWorkMode​(AgentWorkMode newAgentWorkMode, int reasonCode, AgentServiceCompletionHandler handler)` | Sets agent work mode.
    `void` | `setAutoLogoutReasonCode​(int autoLogoutReasonCode)` | Set logout reason code for automatic agent logout.
    `void` | `setLabelForAgentFeature​(AgentFeature agentFeature, java.lang.String featureLabel, AgentServiceCompletionHandler handler)` | Updates agent feature with a personalized label given by user.
    `void` | `setOverrideForcedLogout​(AgentServiceCompletionHandler handler)` | Enables or disables agent's forced logout override operation.
    `void` | `setQueueStatisticsRefreshInterval​(int refreshInterval, AgentServiceCompletionHandler completionHandler)` | Sets refresh interval for queue statistics.
    `void` | `startQueueStatisticsMonitoring​(QueueStatistics queueStatistics, AgentServiceCompletionHandler completionHandler)` | Starts queue statistics monitoring.
    `void` | `stopQueueStatisticsMonitoring​(QueueStatistics queueStatistics, AgentServiceCompletionHandler completionHandler)` | Stops queue statistics monitoring operation.

- - ### Method Detail

    - #### addListener

          void addListener​(AgentServiceListener listener)

      Adds a agent service listener to service instance.
      Parameters:
        `listener` - Listener instance to be added.

    - #### removeListener

          void removeListener​(AgentServiceListener listener)

      Removes a agent service listener from service instance.
      Parameters:
        `listener` - Listener instance to be removed.

    - #### isAgentServiceAvailable

          boolean isAgentServiceAvailable()

      Returns a boolean value indicating whether agent feature service is available or not
      Returns:
        a boolean value indicating whether agent feature service is available or not

    - #### getAvailableAgentFeatures

          java.util.List<AgentFeature> getAvailableAgentFeatures()

      Returns list of available agent features or feature buttons administered on signaling server for registered SIP user.
      Returns:
        list of available agent features or feature buttons

    - #### setLabelForAgentFeature

          void setLabelForAgentFeature​(AgentFeature agentFeature,
                                       java.lang.String featureLabel,
                                       AgentServiceCompletionHandler handler)

      Updates agent feature with a personalized label given by user.
      Parameters:
        `agentFeature` - The feature.
        `featureLabel` - The personalized label to be set.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### isAgentFeatureAvailable

          boolean isAgentFeatureAvailable​(AgentFeatureType featureType)

      Returns whether the agent feature indicated by featureType is available for the application.
      Parameters:
        `featureType` - Type of agent feature.
      Returns:
        whether the agent feature indicated by featureType is available for the application.

    - #### login

          void login​(AgentServiceCompletionHandler handler)

      Starts agent login process with the communications servers.

      Feedback is provided via the AgentServiceCompletionHandler object.

      Parameters:
        `handler` - Completion handler instance that receives the result of the operation.

    - #### logout

          void logout​(int reasonCode,
                      AgentServiceCompletionHandler handler)

      Stops agent services including logout with reason code from the communications servers. Use '0' as default reason code if reason code is not available. Feedback is provided via the AgentServiceCompletionHandler object.
      With reason codes, staffed agents can enter a numeric 1-digit or 2-digit code that describes the reason for logging out of the system. Reason codes give call center managers information about how agents spend time.
      Parameters:
        `reasonCode` - Reason code for agent logout. Minimum value-0, Maximum value-9, Default value-0 Reason code policy is administered on CM. The provisioning of these reason codes are not passed down to the clients. The agents are told by their supervisor what these codes are, and the agentd are used to enter these integer numbers.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### getAutoLogoutReasonCode

          int getAutoLogoutReasonCode()

      Get logout reason code for automatic agent logout.
      Returns:
        Reason code for automatic agent logout.

    - #### setAutoLogoutReasonCode

          void setAutoLogoutReasonCode​(int autoLogoutReasonCode)

      Set logout reason code for automatic agent logout. This method allows to override the auto logout reason code provided within AgentConfiguration.
      Parameters:
        `autoLogoutReasonCode` - Reason code for automatic agent logout.

    - #### getAgentInformation

          AgentInformation getAgentInformation()

      Returns current agent information. Whenever agent state, work mode or configuration is changed new AgentInformation object is available through AgentServiceListener `AgentServiceListener.onAgentInformationUpdated(AgentService, AgentInformation)`} event.
      Returns:
        Throws Illegal state exception or null if it is called before the agent is successfully logged in.

    - #### getAgentState

          AgentState getAgentState()

      Returns current state of the agent. The agent state change is reported via `AgentServiceListener.onAgentStateChanged(AgentService, AgentState)`} event.
      Returns:
        current state of the agent

    - #### getAllowedAuxiliaryWorkModeReasonCodes

          java.util.List<java.lang.Integer> getAllowedAuxiliaryWorkModeReasonCodes()

      Returns list of administered auxiliary work mode reason codes available for an agent to change in to auxiliary work mode.
      Returns:
        list of administered auxiliary work mode reason codes

    - #### isAgentWorkModeAvailable

          boolean isAgentWorkModeAvailable​(AgentWorkMode agentWorkMode)

      Returns A boolean value indicating whether the agent work mode indicated by workModeType is available for use.
      Parameters:
        `agentWorkMode` - Type of agent work mode.
      Returns:
        whether the agent work mode indicated by workModeType is available for use.

    - #### setAgentWorkMode

          void setAgentWorkMode​(AgentWorkMode newAgentWorkMode,
                                int reasonCode,
                                AgentServiceCompletionHandler handler)

      Sets agent work mode. Result is notified by callbacks defined in AgentServiceCompletionHandler object. The updated work mode is notified by `AgentServiceListener.onAgentWorkModeChanged(AgentService, AgentWorkMode, int)`} callback.
      Parameters:
        `newAgentWorkMode` - New work mode for agent
        `reasonCode` - The reason code in case of changing to auxiliary work mode, for other modes use '0' as default code.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### getAgentWorkMode

          AgentWorkMode getAgentWorkMode()

      Returns current work mode of the agent.
      Returns:
        current work mode of the agent.

    - #### getQueueStatisticsMonitoringCapability

          Capability getQueueStatisticsMonitoringCapability​(int skillId)

      Returns an indication whether queue statistics monitor feature is available for particular skill or not.
      Parameters:
        `skillId` - The hunt group/skill number associated with the button.
      Returns:
        Capability object describing whether the queue statistics monitor feature is available.

    - #### getQueueStatisticsList

          java.util.List<QueueStatistics> getQueueStatisticsList()

      Returns a queue statistics collection that is available for the user, this information can be used by the agent to monitor skill based queue statistics using method `AgentServiceImpl.startQueueStatisticsMonitoring(QueueStatistics, AgentServiceCompletionHandler)`.
      Returns:
        a queue statistics collection that is available for the user

    - #### startQueueStatisticsMonitoring

          void startQueueStatisticsMonitoring​(QueueStatistics queueStatistics,
                                              AgentServiceCompletionHandler completionHandler)

      Starts queue statistics monitoring. It provides information about particular skill or queue for the agent as administered on signalling server.
      Parameters:
        `queueStatistics` - The QueueStatisticsImpl information object for which to start monitor operation.
        `completionHandler` - Completion handler instance that receives the result of the operation.

    - #### stopQueueStatisticsMonitoring

          void stopQueueStatisticsMonitoring​(QueueStatistics queueStatistics,
                                             AgentServiceCompletionHandler completionHandler)

      Stops queue statistics monitoring operation.
      Parameters:
        `queueStatistics` - The QueueStatisticsImpl information object for which to stop monitor operation.
        `completionHandler` - Completion handler instance that receives the result of the operation.

    - #### setQueueStatisticsRefreshInterval

          void setQueueStatisticsRefreshInterval​(int refreshInterval,
                                                 AgentServiceCompletionHandler completionHandler)

      Sets refresh interval for queue statistics.
      Parameters:
        `refreshInterval` - The refresh interval in seconds. Minimum value: 0 (i.e. no refresh), maximum value: 3600 (i.e. 1 hour).
        `completionHandler` - Completion handler instance that receives the result of the operation.

    - #### getSendCallWorkCodeCapability

          Capability getSendCallWorkCodeCapability()

      Returns an indication as to whether the work code can be sent over the existing call.
      Returns:
        Capability object describing whether the work code can be sent over the existing call.

    - #### sendCallWorkCode

          void sendCallWorkCode​(java.lang.String callWorkCode,
                                AgentServiceCompletionHandler handler)

      Sends the specified call work code. Result is notified via callbacks defined in AgentServiceCompletionHandler object.

      When the agent is on an ACD call, at any time he or she can invoke the work code feature and enter the digits (max 16 digits) for the code.
      Example: The agent is on a call and half way through he or she realize that the call is a sales call. Agent would invoke work-code feature and enter 10 (if this is the number for the code). This will register in the Call Management System (CMS) and record the data.

      Parameters:
        `callWorkCode` - The work code to send.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### callSupervisor

          void callSupervisor​(int skillId,
                              SupervisorAssistCompletionHandler handler)

      Requests for supervisor assistance based on skill.

      If supervisor assistance is requested based on skill id then new call will be placed for supervisor.

      Parameters:
        `skillId` - The skill id for which supervisor assistance is required.
        `handler` - Completion handler instance that receives the result of the operation. If not provided, failure feedback cannot be provided.

    - #### getCallSupervisorCapability

          Capability getCallSupervisorCapability​(int skillId)

      Returns an indication as to whether the supervisor assistance is available based on skill.

      Parameters:
        `skillId` - The skill id for which supervisor assistance is required.
      Returns:
        Capability object describing whether the supervisor assistance is available.

    - #### consultSupervisor

          void consultSupervisor​(SupervisorAssistCompletionHandler handler)

      Requests for supervisor assistance.
      If active call is in progress then existing call will go in hold state and the agent connects to the skill supervisor. The caller hears nothing or music on hold but the agent and the supervisor can talk with each other. After speaking with the supervisor, the agent can drop the call with supervisor and return to the ACD call, set up a conference call with the supervisor and the calling party, or transfer the call to the supervisor.
      Result is notified via callbacks defined in SupervisorAssistCompletionHandler object. This completion handler is invoked as soon as call with supervisor has been successfully initiated, not when the call is established with the supervisor.

      Parameters:
        `handler` - Completion handler instance that receives the result of the operation. If not provided, failure feedback cannot be provided.

    - #### getConsultSupervisorCapability

          Capability getConsultSupervisorCapability()

      Returns an indication as to whether the supervisor assistance is available for active call.

      Returns:
        Capability object describing whether the supervisor assistance is available.

    - #### getChangeSkillCapability

          Capability getChangeSkillCapability()

      Returns an indication as to whether the change skill is available.

      Returns:
        Capability object describing whether the change skill is available.

    - #### addSkill

          void addSkill​(AgentSkill skill,
                        java.lang.String agentId,
                        AgentFeatureButtonLampCompletionHandler completionHandler)

      Request to add a skill to the skills assigned to an agent.
      Parameters:
        `skill` - The skill to be added.
        `agentId` - The extension of the agent the change applies to.
        `completionHandler` - Completion handler instance that receives the result of the operation. If not provided, failure feedback cannot be provided.

    - #### removeSkill

          void removeSkill​(AgentSkill skill,
                           java.lang.String agentId,
                           AgentFeatureButtonLampCompletionHandler completionHandler)

      Request to remove (unassign) a skill that is assigned to an agent.
      Parameters:
        `skill` - The skill to be removed.
        `agentId` - The extension of the agent the change applies to.
        `completionHandler` - Completion handler instance that receives the result of the operation. If not provided, failure feedback cannot be provided.

    - #### setOverrideForcedLogout

          void setOverrideForcedLogout​(AgentServiceCompletionHandler handler)

      Enables or disables agent's forced logout override operation. Result is notified via callbacks defined in AgentServiceCompletionHandler object.
      Parameters:
        `handler` - Completion handler instance that receives the result of the operation. If not provided, failure feedback cannot be provided.

    - #### getForcedLogoutOverrideCapability

          Capability getForcedLogoutOverrideCapability()

      Returns an indication as to whether the forced logout override is available.
      Returns:
        Capability object describing whether the forced logout override is available.