Package com.avaya.clientservices.call.feature

## Interface CallFeatureService

-     public interface CallFeatureService

  The CallFeatureService object is accessible from the User object, providing access to additional business communication features. The CallFeatureService object provides a set of APIs that allow application developers to implement advanced SIP telephony features. In general, administered features can be invoked depending upon the current state of the system. The client application is notified about status updates on features reported by the call feature service through handlers that the application has registered on the CallFeatureService object. These updates may be the result of local operations on the CallFeatureService object as well as remote changes initiated by either the service/server or other end users.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `activateMaliciousCallTrace​(FeatureCompletionHandler completionHandler)` | Activate Malicious Call Trace feature for incoming active call.
    `void` | `addListener​(CallFeatureServiceListener listener)` | Adds a listener.
    `void` | `blockCallingPartyNumber​(java.lang.String destination, FeatureCompletionHandler completionHandler)` | Starts a call to the specified destination with the user's calling party number information blocked if the call is made over a trunk.
    `void` | `cancelExtendCall​(FeatureCompletionHandler completionHandler)` | Cancels a pending extension of the active call to the off-pbx destinations configured for the user's extension.
    `void` | `cancelNoHoldConference​(FeatureCompletionHandler completionHandler)` | Cancels the No Hold Conference invocation.
    `boolean` | `canInvokeFeature​(FeatureType featureType)` | Determine if a specific feature can be invoked at this time.
    `void` | `changeServiceObservingMode​(ServiceObservingMode mode, FeatureCompletionHandler handler)` | Deprecated. Use `changeServiceObservingMode(ServiceObservingMode,ServiceObservingCompletionHandler)` instead.
    `void` | `changeServiceObservingMode​(ServiceObservingMode mode, ServiceObservingCompletionHandler handler)` | Change the mode of service observing session.
    `void` | `completeCallPreemption​(Call preemptedCall, FeatureCompletionHandler completionHandler)` | Completes call preemption after user acknowledges the continuous preemption tone.
    `void` | `directedCallPickup​(java.lang.String extension, FeatureCompletionHandler completionHandler)` | Picks up a call ringing at the specified extension.
    `void` | `extendCall​(FeatureCompletionHandler completionHandler)` | Extends the active call to the off-pbx destinations configured for the user's extension, namely EC500.
    `void` | `extendedGroupCallPickup​(int groupNumber, FeatureCompletionHandler completionHandler)` | Picks up a call for the specified pickup group.
    `Capability` | `getAutoCallbackCapability()` |
    `java.util.List<java.lang.String>` | `getAutoCallbackList()` | Returns the list of outstanding auto-callback destinations.
    `java.util.List<Autodial>` | `getAvailableAutodials()` | Gets a list of available autodials.
    `java.util.List<BusyIndicator>` | `getAvailableBusyIndicators()` | Gets a list of available busy indicators.
    `java.util.List<FeatureStatusParameters>` | `getAvailableFeatures()` | Gets a list of available features.
    `java.util.List<FeatureStatusParameters>` | `getAvailableHuntGroupBusyPositionFeatures()` | Gets a list of configured hunt-group-busy-position feature buttons for the user.
    `Capability` | `getBlockCallingPartyNumberCapability()` |
    `Capability` | `getCallbackCallCapability()` |
    `Capability` | `getCallForwardingBusyNoAnswerCapability()` |
    `Capability` | `getCallForwardingBusyNoAnswerCapability​(java.lang.String extension)` |
    `java.lang.String` | `getCallForwardingBusyNoAnswerDestination()` |
    `java.lang.String` | `getCallForwardingBusyNoAnswerDestination​(java.lang.String extension)` |
    `Capability` | `getCallForwardingCapability()` |
    `Capability` | `getCallForwardingCapability​(java.lang.String extension)` |
    `java.lang.String` | `getCallForwardingDestination()` |
    `java.lang.String` | `getCallForwardingDestination​(java.lang.String extension)` |
    `Capability` | `getCallRecordingCapabilityForActionType​(CallRecordingActionType type)` | Returns a capability object indicating whether a specific call recording action is allowed.
    `Capability` | `getDirectedCallPickupCapability()` |
    `Capability` | `getEC500Capability()` |
    `Capability` | `getEnhancedCallForwardingCapability()` |
    `Capability` | `getEnhancedCallForwardingCapability​(java.lang.String extension)` |
    `EnhancedCallForwardingStatus` | `getEnhancedCallForwardingStatus()` |
    `EnhancedCallForwardingStatus` | `getEnhancedCallForwardingStatus​(java.lang.String extension)` |
    `Capability` | `getExclusionCapability()` |
    `Capability` | `getExtendCallCapability()` |
    `Capability` | `getExtendedGroupCallPickupCapability()` |
    `Capability` | `getFeatureCapability​(FeatureType featureType)` | Gets Capability object indicating whether a specific feature can be invoked.
    `FeatureStatusParameters` | `getFeatureStatus​(FeatureType featureType, java.lang.String ownerExtension)` | Deprecated. THIS METHOD WILL BE REMOVED.
    `FeatureStatusParameters` | `getFeatureStatusForFeatureParams​(FeatureParameters featureParameters)` | Gets the status of a specific feature for a specified FeatureQueryParameters object.
    `Capability` | `getGroupCallPickupCapability()` |
    `Capability` | `getHuntGroupBusyPositionCapability​(int huntGroupNumber)` |
    `Capability` | `getLimitCallsCapability()` |
    `Capability` | `getMaliciousCallTraceCapability()` | Returns a capability object indicating whether Malicious Call Trace feature is available for incoming active call.
    `Capability` | `getNoHoldConferenceCancelCapability()` | Returns a capability object indicating whether No Hold Conference feature can be canceled.
    `Capability` | `getNoHoldConferenceCapability()` | Returns a capability object indicating whether No Hold Conference feature is available for active call.
    `java.lang.String` | `getNoHoldConferenceDestination()` | Returns the destination extension for No Hold Conference feature button.
    `Capability` | `getParkCallCapability()` |
    `Capability` | `getParkCallWithSlotCapability()` |
    `Capability` | `getPriorityCallCapability()` |
    `Capability` | `getSendAllCallsCapability()` |
    `Capability` | `getSendAllCallsCapability​(java.lang.String extension)` |
    `Capability` | `getSendNNCapability()` |
    `Capability` | `getServiceObservingCapability()` | Returns an indication as to whether the service observing is available.
    `ServiceObservingStatusParameters` | `getServiceObservingStatusParameters()` | If service observing feature is enabled then `ServiceObservingStatusParameters` contains details of service observing feature.
    `Capability` | `getSimRingCallbackCapability()` |
    `SimRingCallbackStatusParameters` | `getSimRingCallbackStatusParameters()` |
    `java.util.List<TeamButton>` | `getTeamButtons()` |
    `Capability` | `getUnblockCallingPartyNumberCapability()` |
    `Capability` | `getUnparkCallCapability()` |
    `Capability` | `getUnparkCallWithSlotCapability()` |
    `Capability` | `getWhisperPageCapability()` |
    `void` | `groupCallPickup​(FeatureCompletionHandler completionHandler)` | Picks up a call for the user's pickup group.
    `void` | `invokeCallbackCall​(java.lang.String remoteAddress, CallbackCallCompletionHandler completionHandler)` | Initiates/places a callback call to the remote address.
    `void` | `invokeCallbackCall​(java.lang.String callbackDestination, java.lang.String remoteAddress, CallbackCallCompletionHandler completionHandler)` | Initiates/places a call from the callback destination to the remote address.
    `void` | `invokeFeature​(FeatureType featureType, FeatureCompletionHandler completionHandler)` | Invoke a feature.
    `void` | `invokeFeature​(FeatureType featureType, FeatureInvocationParameters featureParams, FeatureCompletionHandler completionHandler)` |
    `void` | `invokeSendNNCallWithExtension​(java.lang.String extension, java.lang.String remoteAddress, FeatureCompletionHandler completionHandler)` | Initiates/places a call to the remote address with send-nn.
    `boolean` | `isAutoCallbackEnabled()` |
    `boolean` | `isAutoCallbackEnabled​(java.lang.String destination)` | Returns a Boolean value indicating whether the auto callback feature is enabled for the specified destination.
    `boolean` | `isCallForwardingBusyNoAnswerEnabled()` |
    `boolean` | `isCallForwardingBusyNoAnswerEnabled​(java.lang.String extension)` |
    `boolean` | `isCallForwardingEnabled()` |
    `boolean` | `isCallForwardingEnabled​(java.lang.String extension)` |
    `boolean` | `isEC500Enabled()` |
    `boolean` | `isFeatureAvailable​(FeatureType featureType)` | Determine if a specific feature is available.
    `boolean` | `isInternalTwinningEnabled()` |
    `boolean` | `isMaliciousCallTraceActive()` | Returns a Boolean value indicating whether Malicious Call Trace feature is activated.
    `boolean` | `isSendAllCallsEnabled()` |
    `boolean` | `isSendAllCallsEnabled​(java.lang.String extension)` |
    `boolean` | `isServiceAvailable()` | A Boolean value indicating whether the Call Feature Service is available.
    `boolean` | `isSimRingCallbackEnabled()` |
    `void` | `limitCalls​(boolean enabled, FeatureCompletionHandler completionHandler)` | Enables or disables the Limit Number of Concurrent Calls feature.
    `void` | `makeNoHoldConference​(java.lang.String destination, FeatureCompletionHandler completionHandler)` | Start No Hold Conference for active call, or add new participant to existing conference.
    `void` | `moveCall​(FeatureCompletionHandler completionHandler)` | Call Handover to move a call to user's simultaneous/twin clients.
    `void` | `parkCall​(FeatureCompletionHandler completionHandler)` | Parks the active call.
    `void` | `parkCallToSlot​(java.lang.String parkSlot, FeatureCompletionHandler completionHandler)` | Parks the active call to a park slot.
    `void` | `performCallRecordingWithActionType​(CallRecordingActionType type, FeatureCompletionHandler handler)` | Perform call recording operation with specific action type.
    `void` | `priorityCall​(java.lang.String destination, FeatureCompletionHandler completionHandler)` | Starts a priority call to the specified destination.
    `void` | `removeListener​(CallFeatureServiceListener listener)` | Removes a listener.
    `void` | `retrieveCall​(FeatureCompletionHandler completionHandler)` | Call Handover to retrieve a call from user's simultaneous/twin clients.
    `void` | `setAutoCallbackEnabled​(boolean enabled, FeatureCompletionHandler completionHandler)` | Enables an automatic callback for the last call if it received a busy signal or was unanswered.
    `void` | `setAutoCallbackEnabled​(boolean enabled, java.lang.String destination, FeatureCompletionHandler completionHandler)` | Enables or disables automatic callback for the specified destination.
    `void` | `setCallForwardingBusyNoAnswerEnabled​(boolean enabled, java.lang.String destination, FeatureCompletionHandler completionHandler)` | Enables or disables forwarding of calls that receive a busy signal or are not answered to the specified destination.
    `void` | `setCallForwardingBusyNoAnswerEnabled​(java.lang.String extension, boolean enabled, java.lang.String destination, FeatureCompletionHandler completionHandler)` | Enables or disables forwarding of calls that receive a busy signal or are not answered to the specified destination for another extension.
    `void` | `setCallForwardingEnabled​(boolean enabled, java.lang.String destination, FeatureCompletionHandler completionHandler)` | Enables or disables forwarding of all calls to the specified destination.
    `void` | `setCallForwardingEnabled​(java.lang.String extension, boolean enabled, java.lang.String destination, FeatureCompletionHandler completionHandler)` | Enables or disables forwarding of all calls to the specified destination for another extension.
    `void` | `setEC500Enabled​(boolean enabled, FeatureCompletionHandler completionHandler)` | Enables or disables EC500.
    `void` | `setEC500Enabled​(boolean enabled, java.lang.String ec500Destination, FeatureCompletionHandler completionHandler)` | Enables EC500 with the mobile phone number provided or disables EC500.
    `void` | `setEnhancedCallForwardingStatus​(EnhancedCallForwardingStatus enhancedCallForwardingStatus, FeatureCompletionHandler completionHandler)` | Enables or disables enhanced call forwarding for unconditional, busy or no reply for internal or external calls to the specified destination.
    `void` | `setEnhancedCallForwardingStatus​(java.lang.String extension, EnhancedCallForwardingStatus enhancedCallForwardingStatus, FeatureCompletionHandler completionHandler)` | Enables or disables enhanced call forwarding for unconditional, busy or no reply for internal or external calls to the specified destination for another extension.
    `void` | `setExclusionEnabled​(boolean enabled, FeatureCompletionHandler completionHandler)` | Enables or disables exclusion for the active call.
    `void` | `setHuntGroupBusyPositionEnabled​(boolean enabled, int huntGroupNumber, FeatureCompletionHandler completionHandler)` | Enables or disables Hunt Group Busy Position feature for a specified hunt group number.
    `void` | `setPersonalizedLabelForFeature​(java.lang.String featureLabel, FeatureParameters featureParams, FeatureLabelCompletionHandler completionHandler)` | Updates the feature button with personalized label given by user.
    `void` | `setSendAllCallsEnabled​(boolean enabled, FeatureCompletionHandler completionHandler)` | Enables or disables sending all calls to coverage.
    `void` | `setSendAllCallsEnabled​(java.lang.String extension, boolean enabled, FeatureCompletionHandler completionHandler)` | Enables or disables sending all calls to coverage for another extension.
    `void` | `setSendNNEnabled​(boolean enabled, java.lang.String extension, FeatureCompletionHandler completionHandler)` | Enables or disables send-nn for the specified extension.
    `void` | `setSimRingCallbackStatusParameters​(SimRingCallbackStatusParameters simRingCallbackStatusParameters, FeatureCompletionHandler completionHandler)` | Enables or disables the callback / simultaneous ring feature with the specified parameters.
    `void` | `startServiceObserving​(java.lang.String entity, ServiceObservingType type, int location, FeatureCompletionHandler handler)` | Deprecated. Use `startServiceObserving(String,ServiceObservingType,int,ServiceObservingCompletionHandler)` instead.
    `void` | `startServiceObserving​(java.lang.String entity, ServiceObservingType type, int location, ServiceObservingCompletionHandler handler)` | Starts service observing.
    `void` | `stopCoachingSession​(FeatureCompletionHandler handler)` | Deprecated. Use `stopCoachingSession(ServiceObservingCompletionHandler)` instead.
    `void` | `stopCoachingSession​(ServiceObservingCompletionHandler handler)` | Stop coaching and move the service observing session to previous mode.
    `void` | `stopServiceObserving​(FeatureCompletionHandler handler)` | Deprecated. Use `stopServiceObserving(ServiceObservingCompletionHandler)` instead.
    `void` | `stopServiceObserving​(ServiceObservingCompletionHandler handler)` | Stops service observing.
    `void` | `unblockCallingPartyNumber​(java.lang.String destination, FeatureCompletionHandler completionHandler)` | Starts a call to the specified destination with the user's calling party number information unblocked if it would normally be blocked.
    `void` | `unparkCall​(FeatureCompletionHandler completionHandler)` | Unparks a call previously parked at the user's extension.
    `void` | `unparkCall​(java.lang.String extension, FeatureCompletionHandler completionHandler)` | Unparks a call previously parked at the specified extension.
    `void` | `unparkCallFromSlot​(java.lang.String parkSlot, FeatureCompletionHandler completionHandler)` | Unparks the call from a park slot.
    `void` | `updateAutodial​(Autodial updatedAutodial, UpdateAutodialCompletionHandler handler)` | Sends out a request in the network to update a configured Autodial button
    `void` | `whisperPage​(java.lang.String extension, FeatureCompletionHandler completionHandler)` | Starts a whisper page to another user that is on an active call.

- - ### Method Detail

    - #### addListener

          void addListener​(CallFeatureServiceListener listener)

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

    - #### removeListener

          void removeListener​(CallFeatureServiceListener listener)

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

    - #### isServiceAvailable

          boolean isServiceAvailable()

      A Boolean value indicating whether the Call Feature Service is available.
      Returns:
        true if the Call Feature Service is available, false otherwise.

    - #### getAvailableFeatures

          java.util.List<FeatureStatusParameters> getAvailableFeatures()

      Gets a list of available features.
      Returns:
        A list of FeatureStatusParameters or null otherwise.

    - #### getAvailableBusyIndicators

          java.util.List<BusyIndicator> getAvailableBusyIndicators()

      Gets a list of available busy indicators.
      Returns:
        A list of BusyIndicators or null otherwise.

    - #### getAvailableAutodials

          java.util.List<Autodial> getAvailableAutodials()

      Gets a list of available autodials.
      Returns:
        A list of Autodials or null otherwise.

    - #### getTeamButtons

          java.util.List<TeamButton> getTeamButtons()

      Returns:
        the list of available team buttons.
      See Also:
        `CallFeatureServiceListener.onTeamButtonBusyStatusChanged(CallFeatureService, TeamButton)`

    - #### updateAutodial

          void updateAutodial​(Autodial updatedAutodial,
                              UpdateAutodialCompletionHandler handler)

      Sends out a request in the network to update a configured Autodial button
      Parameters:
        `updatedAutodial` - User modified autodial button
        `handler` - The completion handler associated with this request.

    - #### isFeatureAvailable

          boolean isFeatureAvailable​(FeatureType featureType)

      Determine if a specific feature is available.
      Parameters:
        `featureType` - Type of feature
      Returns:
        Whether the feature indicated by featureType is available for use.

    - #### canInvokeFeature

          boolean canInvokeFeature​(FeatureType featureType)

      Determine if a specific feature can be invoked at this time. This is deprecated
      Parameters:
        `featureType` - Type of feature
      Returns:
        Whether the feature indicated by featureType can be invoked at this time.

    - #### getFeatureCapability

          Capability getFeatureCapability​(FeatureType featureType)

      Gets Capability object indicating whether a specific feature can be invoked.
      Parameters:
        `featureType` - Type of feature.
      Returns:
        Capability object indicating whether a specific feature can be invoked.

    - #### getFeatureStatus

          @Deprecated
          FeatureStatusParameters getFeatureStatus​(FeatureType featureType,
                                                   java.lang.String ownerExtension)

      Deprecated.
      THIS METHOD WILL BE REMOVED. Use getFeatureStatusForFeatureParams(FeatureParameters featureParameters) instead.
      Gets the status of a specific feature.
      Parameters:
        `featureType` - Type of feature
        `ownerExtension` - The owner extension
      Returns:
        The feature status. Not all feature types are toggle features that have status (can be on, off, or alerting). The returned status will be "undefined" for such features. If feature type is not configured for specified extension, this API will return empty object of type FeatureStatusParameters with UNDEFINED status in it. Other status are ON/OFF/ALERTING.

    - #### getFeatureStatusForFeatureParams

          FeatureStatusParameters getFeatureStatusForFeatureParams​(FeatureParameters featureParameters)

      Gets the status of a specific feature for a specified FeatureQueryParameters object.
      Parameters:
        `featureParameters` - The FeatureParameters object to query feature status.
      Returns:
        The feature status. Not all feature types are toggle features that have status (can be on, off or alerting). The returned status will be "undefined" for such features. If feature type is not configured for specified extension, this API will return empty object of type FeatureStatusParameters with UNDEFINED status in it. Other status are ON/OFF/ALERTING.

    - #### invokeFeature

          void invokeFeature​(FeatureType featureType,
                             FeatureCompletionHandler completionHandler)

      Invoke a feature.

             Feature                       Parameters
             ------------------------------------------------------
             SEND_ALL_CALLS                [action] [owner-extension]
             FORWARD_ALL_CALLS             [action] [destination] [owner-extension]
             FORWARD_BUSY_NO_ANSWER_CALLS  [action] [destination] [owner-extension]
             EXCLUSION                     [action]
             EC500                         [action]
             EXTEND_CALL
             CALL_PARK
             CALL_UNPARK                   [extension]
             AUTO_CALLBACK                 [action]
             WHISPER_PAGE                  [extension]
             GROUP_CALL_PICKUP
             EXTENDED_GROUP_CALL_PICKUP    [pickup-number]
             CALLING_PARTY_NUMBER_BLOCK    [destination]
             CALLING_PARTY_NUMBER_UNBLOCK  [destination]
             ONE_TOUCH_RECORDING           [action] [extension]
             DIRECTED_CALL_PICKUP          [extension]
             PRIORITY_CALL                 [destination]
             MALICIOUS_CALL_TRACE
             SIM_RING_CALLBACK             [sim-ring-callback-parameters]
             CALLBACK_CALL                 [extension] [destination]

      A callback method defined in CallFeatureServiceListener reports feature status for those features that have status.

      Parameters:
        `featureType` - The feature to invoke.
        `completionHandler` - The completion handler for this (asynchronous) request, used to determine if invocation is successful or not. Note, the completion handler is associated with this specific invocation and can use variables from the local scope.

    - #### invokeFeature

          void invokeFeature​(FeatureType featureType,
                             FeatureInvocationParameters featureParams,
                             FeatureCompletionHandler completionHandler)

      Parameters:
        `featureType` - The feature to invoke.
        `featureParams` - The parameters supporting this feature invocation.
        `completionHandler` - The completion handler for this (asynchronous) request, used to determine if invocation is successful or not. Note, the completion handler is associated with this specific invocation and can use variables from the local scope.
      See Also:
        `invokeFeature(FeatureType featureType, FeatureCompletionHandler completionHandler)`

    - #### getSendAllCallsCapability

          Capability getSendAllCallsCapability()

      Returns:
        a capability object indicating whether the send all calls feature is available for the user's local extension.

    - #### isSendAllCallsEnabled

          boolean isSendAllCallsEnabled()

      Returns:
        a Boolean value indicating whether the send all calls feature is enabled for the user's local extension.

    - #### setSendAllCallsEnabled

          void setSendAllCallsEnabled​(boolean enabled,
                                      FeatureCompletionHandler completionHandler)

      Enables or disables sending all calls to coverage.
      Parameters:
        `enabled` - If true send all calls is enabled. If false send all calls is disabled.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getSendAllCallsCapability

          Capability getSendAllCallsCapability​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the availability of the feature. Pass null to query the availability of the feature for the user's local extension.
      Returns:
        a capability object indicating whether the send all calls feature is available for the specified extension.

    - #### isSendAllCallsEnabled

          boolean isSendAllCallsEnabled​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature. Pass null to query the status of the feature for the user's local extension.
      Returns:
        a Boolean value indicating whether the send all calls feature is enabled for the specified extension.

    - #### setSendAllCallsEnabled

          void setSendAllCallsEnabled​(java.lang.String extension,
                                      boolean enabled,
                                      FeatureCompletionHandler completionHandler)

      Enables or disables sending all calls to coverage for another extension.
      Parameters:
        `extension` - The extension to enable or disable send all calls for.
        `enabled` - If true send all calls is enabled. If false send all calls is disabled.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getCallForwardingCapability

          Capability getCallForwardingCapability()

      Returns:
        a capability object indicating whether the call forwarding feature is available for the user's local extension.

    - #### isCallForwardingEnabled

          boolean isCallForwardingEnabled()

      Returns:
        a Boolean value indicating whether the call forwarding feature is enabled for the user's local extension.

    - #### getCallForwardingDestination

          java.lang.String getCallForwardingDestination()

      Returns:
        the call forwarding destination for the user's local extension.

    - #### setCallForwardingEnabled

          void setCallForwardingEnabled​(boolean enabled,
                                        java.lang.String destination,
                                        FeatureCompletionHandler completionHandler)

      Enables or disables forwarding of all calls to the specified destination.
      Parameters:
        `enabled` - If true forwarding is enabled. If false forwarding is disabled.
        `destination` - The destination number to forward calls to.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getCallForwardingCapability

          Capability getCallForwardingCapability​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the availability of the feature. Pass null to query the availability of the feature for the user's local extension.
      Returns:
        a capability object indicating whether the call forwarding feature is available for the specified extension.

    - #### isCallForwardingEnabled

          boolean isCallForwardingEnabled​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature. Pass null to query the status of the feature for the user's local extension.
      Returns:
        a Boolean value indicating whether the call forwarding feature is enabled for the specified extension.

    - #### getCallForwardingDestination

          java.lang.String getCallForwardingDestination​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature. Pass null to query the status of the feature for the user's local extension.
      Returns:
        the call forwarding destination for the specified extension.

    - #### setCallForwardingEnabled

          void setCallForwardingEnabled​(java.lang.String extension,
                                        boolean enabled,
                                        java.lang.String destination,
                                        FeatureCompletionHandler completionHandler)

      Enables or disables forwarding of all calls to the specified destination for another extension.
      Parameters:
        `extension` - The extension to enable or disable forwarding for.
        `enabled` - If true forwarding is enabled. If false forwarding is disabled.
        `destination` - The destination number to forward calls to.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getCallForwardingBusyNoAnswerCapability

          Capability getCallForwardingBusyNoAnswerCapability()

      Returns:
        a capability object indicating whether the call forwarding busy-no-answer feature is available for the user's local extension.

    - #### isCallForwardingBusyNoAnswerEnabled

          boolean isCallForwardingBusyNoAnswerEnabled()

      Returns:
        a Boolean value indicating whether the call forwarding busy-no-answer feature is enabled for the user's local extension.

    - #### getCallForwardingBusyNoAnswerDestination

          java.lang.String getCallForwardingBusyNoAnswerDestination()

      Returns:
        the call forwarding busy-no-answer destination for the user's local extension.

    - #### setCallForwardingBusyNoAnswerEnabled

          void setCallForwardingBusyNoAnswerEnabled​(boolean enabled,
                                                    java.lang.String destination,
                                                    FeatureCompletionHandler completionHandler)

      Enables or disables forwarding of calls that receive a busy signal or are not answered to the specified destination.
      Parameters:
        `enabled` - If true forwarding is enabled. If false forwarding is disabled.
        `destination` - The destination number to forward calls to.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getCallForwardingBusyNoAnswerCapability

          Capability getCallForwardingBusyNoAnswerCapability​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the availability of the feature. Pass null to query the availability of the feature for the user's local extension.
      Returns:
        a capability object indicating whether the call forwarding busy-no-answer feature is available for the specified extension.

    - #### isCallForwardingBusyNoAnswerEnabled

          boolean isCallForwardingBusyNoAnswerEnabled​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature. Pass null to query the status of the feature for the user's local extension.
      Returns:
        a Boolean value indicating whether the call forwarding busy-no-answer feature is enabled for the specified extension.

    - #### getCallForwardingBusyNoAnswerDestination

          java.lang.String getCallForwardingBusyNoAnswerDestination​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature. Pass null to query the status of the feature for the user's local extension.
      Returns:
        the call forwarding busy-no-answer destination for the specified extension.

    - #### setCallForwardingBusyNoAnswerEnabled

          void setCallForwardingBusyNoAnswerEnabled​(java.lang.String extension,
                                                    boolean enabled,
                                                    java.lang.String destination,
                                                    FeatureCompletionHandler completionHandler)

      Enables or disables forwarding of calls that receive a busy signal or are not answered to the specified destination for another extension.
      Parameters:
        `extension` - The extension to enable or disable forwarding for.
        `enabled` - If true forwarding is enabled. If false forwarding is disabled.
        `destination` - The destination number to forward calls to.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getEnhancedCallForwardingCapability

          Capability getEnhancedCallForwardingCapability()

      Returns:
        a capability object indicating whether the enhanced call forwarding feature is available for the user's local extension.

    - #### getEnhancedCallForwardingCapability

          Capability getEnhancedCallForwardingCapability​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the availability of the feature. Pass null to query the availability of the feature for the user's local extension.
      Returns:
        a capability object indicating whether the enhanced call forwarding feature is available for the specified extension.

    - #### getEnhancedCallForwardingStatus

          EnhancedCallForwardingStatus getEnhancedCallForwardingStatus()

      Returns:
        the enhanced call forwarding status for the user's local extension.

    - #### getEnhancedCallForwardingStatus

          EnhancedCallForwardingStatus getEnhancedCallForwardingStatus​(java.lang.String extension)

      Parameters:
        `extension` - The extension for which to query the status of the feature.
      Returns:
        the call forwarding destination for the specified extension.

    - #### setEnhancedCallForwardingStatus

          void setEnhancedCallForwardingStatus​(EnhancedCallForwardingStatus enhancedCallForwardingStatus,
                                               FeatureCompletionHandler completionHandler)

      Enables or disables enhanced call forwarding for unconditional, busy or no reply for internal or external calls to the specified destination.
      Parameters:
        `enhancedCallForwardingStatus` - The new call forwarding status. It can be unconditional, busy or no reply for internal or external calls. For IP Office, the same destination number should be provided for call forward busy and no reply.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### setEnhancedCallForwardingStatus

          void setEnhancedCallForwardingStatus​(java.lang.String extension,
                                               EnhancedCallForwardingStatus enhancedCallForwardingStatus,
                                               FeatureCompletionHandler completionHandler)

      Enables or disables enhanced call forwarding for unconditional, busy or no reply for internal or external calls to the specified destination for another extension.
      Parameters:
        `extension` - The extension to enable or disable forwarding for.
        `enhancedCallForwardingStatus` - The new call forwarding status. It can be unconditional, busy or no reply for internal or external calls. For IP Office, the same destination number should be provided for call forward busy and no reply.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getExclusionCapability

          Capability getExclusionCapability()

      Returns:
        a capability object indicating whether the exclusion feature is available.

    - #### setExclusionEnabled

          void setExclusionEnabled​(boolean enabled,
                                   FeatureCompletionHandler completionHandler)

      Enables or disables exclusion for the active call.

      Exclusion prevents any other users from bridging onto the call, and drops any other users who are already bridged onto the call.

      Parameters:
        `enabled` - If true exclusion is enabled. If false exclusion is is disabled.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getLimitCallsCapability

          Capability getLimitCallsCapability()

      Returns:
        a capability object indicating whether the Limit Number of Concurrent Calls feature is available.

    - #### limitCalls

          void limitCalls​(boolean enabled,
                          FeatureCompletionHandler completionHandler)

      Enables or disables the Limit Number of Concurrent Calls feature.

      Limit Number of Concurrent Calls feature: Users can use this to limit the number of concurrent calls at a station to one call, where normally multiple call appearances can terminate at the station.

      Parameters:
        `enabled` - If true Limit Number of Concurrent Calls is enabled. If false Limit Number of Concurrent Calls is disabled.
        `completionHandler` - A completion handler to call when the operation has completed or null if no completion callback is desired.

    - #### getEC500Capability

          Capability getEC500Capability()

      Returns:
        a capability object indicating whether the EC500 feature is available.

    - #### isEC500Enabled

          boolean isEC500Enabled()

      Returns:
        a Boolean value indicating whether the EC500 feature is enabled.

    - #### setEC500Enabled

          void setEC500Enabled​(boolean enabled,
                               FeatureCompletionHandler completionHandler)

      Enables or disables EC500.
      Parameters:
        `enabled` - If true EC500 is enabled. If false EC500 is is disabled.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### setEC500Enabled

          void setEC500Enabled​(boolean enabled,
                               java.lang.String ec500Destination,
                               FeatureCompletionHandler completionHandler)

      Enables EC500 with the mobile phone number provided or disables EC500. Use this method only if EC500 destination is editable, otherwise use `setEC500Enabled(boolean, FeatureCompletionHandler)` method.
      Parameters:
        `enabled` - If true EC500 is enabled. If false EC500 is disabled.
        `ec500Destination` - A mobile phone number. The destination can be any external number the user is able to dial normally. It should include any prefix if necessary. The number is not relevant if enabled=false.
        `completionHandler` - A completion handler that receives the result of the operation.
      See Also:
        `FeatureStatusParameters.isDestinationExtensionEditable()`

    - #### getExtendCallCapability

          Capability getExtendCallCapability()

      Returns:
        a capability object indicating whether the extend call feature is available.

    - #### extendCall

          void extendCall​(FeatureCompletionHandler completionHandler)

      Extends the active call to the off-pbx destinations configured for the user's extension, namely EC500.

      An invocation of extendCall() is not considered successful until the call has been answered on one of the user's off-pbx destinations. Until this occurs cancelExtendCall() may be used to cancel the pending extension of the active call.

      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### cancelExtendCall

          void cancelExtendCall​(FeatureCompletionHandler completionHandler)

      Cancels a pending extension of the active call to the off-pbx destinations configured for the user's extension.

      An invocation of extendCall() is not considered successful until the call has been answered on one of the user's off-pbx destinations. Until this occurs cancelExtendCall() may be used to cancel the pending extension of the active call.

      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getParkCallCapability

          Capability getParkCallCapability()

      Returns:
        a capability object indicating whether the call park feature is available.

    - #### parkCall

          void parkCall​(FeatureCompletionHandler completionHandler)

      Parks the active call.

      A parked call may later be unparked from another extension.

      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getParkCallWithSlotCapability

          Capability getParkCallWithSlotCapability()

      Returns:
        a capability object indicating whether the call park feature with park slot is available.

    - #### parkCallToSlot

          void parkCallToSlot​(java.lang.String parkSlot,
                              FeatureCompletionHandler completionHandler)

      Parks the active call to a park slot.

      A parked call may later be unparked from another extension using the park slot.

      Parameters:
        `parkSlot` - A park slot where the call should be parked. The minimum length of the park slot is 1, and the maximum length is 9. Characters in this field would normally be 0-9, ‘#’ ‘*’.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getUnparkCallCapability

          Capability getUnparkCallCapability()

      Returns:
        a capability object indicating whether the call unpark feature is available.

    - #### unparkCall

          void unparkCall​(FeatureCompletionHandler completionHandler)

      Unparks a call previously parked at the user's extension.
      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### unparkCall

          void unparkCall​(java.lang.String extension,
                          FeatureCompletionHandler completionHandler)

      Unparks a call previously parked at the specified extension.
      Parameters:
        `extension` - The extension from which to retrieve the parked call.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getUnparkCallWithSlotCapability

          Capability getUnparkCallWithSlotCapability()

      Returns:
        a capability object indicating whether the call unpark feature with park slot is available.

    - #### unparkCallFromSlot

          void unparkCallFromSlot​(java.lang.String parkSlot,
                                  FeatureCompletionHandler completionHandler)

      Unparks the call from a park slot.
      Parameters:
        `parkSlot` - A park slot from where the call should be unparked. The minimum length of the park slot is 1, and the maximum length is 9. Characters in this field would normally be 0-9, ‘#’ ‘*’.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getAutoCallbackCapability

          Capability getAutoCallbackCapability()

      Returns:
        a capability object indicating whether the auto callback feature is available.

    - #### isAutoCallbackEnabled

          boolean isAutoCallbackEnabled()

      Returns:
        a Boolean value indicating whether the auto callback feature is enabled.

    - #### setAutoCallbackEnabled

          void setAutoCallbackEnabled​(boolean enabled,
                                      FeatureCompletionHandler completionHandler)

      Enables an automatic callback for the last call if it received a busy signal or was unanswered.
      Parameters:
        `enabled` - If true automatic callback is enabled. If false automatic callback is is disabled.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### isAutoCallbackEnabled

          boolean isAutoCallbackEnabled​(java.lang.String destination)

      Returns a Boolean value indicating whether the auto callback feature is enabled for the specified destination. Use this method only if AutoCallback destination is editable, otherwise use `isAutoCallbackEnabled()` method.
      Parameters:
        `destination` - The destination to query auto-callback enablement for.
      Returns:
        a Boolean value indicating whether the auto callback feature is enabled.
      See Also:
        `FeatureStatusParameters.isDestinationExtensionEditable()`

    - #### getAutoCallbackList

          java.util.List<java.lang.String> getAutoCallbackList()

      Returns the list of outstanding auto-callback destinations.
      Returns:
        the list of outstanding auto-callback destinations in case AutoCallback destination is editable, empty list otherwise.
      See Also:
        `FeatureStatusParameters.isDestinationExtensionEditable()`, `CallFeatureServiceListener.onAutoCallbackListChanged(CallFeatureService, List)`

    - #### setAutoCallbackEnabled

          void setAutoCallbackEnabled​(boolean enabled,
                                      java.lang.String destination,
                                      FeatureCompletionHandler completionHandler)

      Enables or disables automatic callback for the specified destination. Use this method only if AutoCallback destination is editable, otherwise use `setAutoCallbackEnabled(boolean, FeatureCompletionHandler)` method.
      Parameters:
        `enabled` - If true automatic callback is enabled for the specified destination. If false automatic callback is disabled for the specified destination.
        `destination` - The destination to enable or disable auto-callback for.
        `completionHandler` - A completion handler that receives the result of the operation.
      See Also:
        `FeatureStatusParameters.isDestinationExtensionEditable()`

    - #### getWhisperPageCapability

          Capability getWhisperPageCapability()

      Returns:
        a capability object indicating whether the whisper page feature is available.

    - #### whisperPage

          void whisperPage​(java.lang.String extension,
                           FeatureCompletionHandler completionHandler)

      Starts a whisper page to another user that is on an active call.
      Parameters:
        `extension` - The extension to start a whisper page to.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getDirectedCallPickupCapability

          Capability getDirectedCallPickupCapability()

      Returns:
        a capability object indicating whether the directed call pickup feature is available.

    - #### directedCallPickup

          void directedCallPickup​(java.lang.String extension,
                                  FeatureCompletionHandler completionHandler)

      Picks up a call ringing at the specified extension.
      Parameters:
        `extension` - The extension to pick up the call from.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getGroupCallPickupCapability

          Capability getGroupCallPickupCapability()

      Returns:
        a capability object indicating whether the group call pickup feature is available.

    - #### groupCallPickup

          void groupCallPickup​(FeatureCompletionHandler completionHandler)

      Picks up a call for the user's pickup group.
      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getExtendedGroupCallPickupCapability

          Capability getExtendedGroupCallPickupCapability()

      Returns:
        a capability object indicating whether the extended group call pickup feature is available.

    - #### extendedGroupCallPickup

          void extendedGroupCallPickup​(int groupNumber,
                                       FeatureCompletionHandler completionHandler)

      Picks up a call for the specified pickup group.
      Parameters:
        `groupNumber` - The group number to pick up the call from.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getBlockCallingPartyNumberCapability

          Capability getBlockCallingPartyNumberCapability()

      Returns:
        a capability object indicating whether the block calling party number feature is available.

    - #### blockCallingPartyNumber

          void blockCallingPartyNumber​(java.lang.String destination,
                                       FeatureCompletionHandler completionHandler)

      Starts a call to the specified destination with the user's calling party number information blocked if the call is made over a trunk.
      Parameters:
        `destination` - The destination to call.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getUnblockCallingPartyNumberCapability

          Capability getUnblockCallingPartyNumberCapability()

      Returns:
        a capability object indicating whether the unblock calling party number feature is available.

    - #### unblockCallingPartyNumber

          void unblockCallingPartyNumber​(java.lang.String destination,
                                         FeatureCompletionHandler completionHandler)

      Starts a call to the specified destination with the user's calling party number information unblocked if it would normally be blocked.
      Parameters:
        `destination` - The destination to call.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getPriorityCallCapability

          Capability getPriorityCallCapability()

      Returns:
        a capability object indicating whether the priority call feature is available.

    - #### priorityCall

          void priorityCall​(java.lang.String destination,
                            FeatureCompletionHandler completionHandler)

      Starts a priority call to the specified destination.

      Priority calls have distinct alerting and typically do not go to coverage.

      Parameters:
        `destination` - The destination to call.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### completeCallPreemption

          void completeCallPreemption​(Call preemptedCall,
                                      FeatureCompletionHandler completionHandler)

      Completes call preemption after user acknowledges the continuous preemption tone. Call preemption occurs when a precedence call is sent to a preemptable endpoint that is busy with a call of lower precedence and has no idle appearances. This causes the lower precedence call to be preempted, regardless of whether the lower precedence call and the new higher precedence call are of the same media type. When preemption occurs, the active busy user receive a continuous preemption tone until user acknowledges the preemption by invoking complete preemption method and the other party receives a preemption tone for a minimum of 3 seconds. After acknowledging the preemption, the extension to which the precedence call is directed will be provided with precedence ringing and the calling party will receive an audible ring-back precedence tone. Application must start playing preemption tone upon receipt of event `CallListener.onCallPreempted(Call, CallPreemptionReason, boolean)` and stop preemption tone before calling completeCallPreemption when user acknowledges the preemption. However when other end receives preemption application must stop tone after 3 seconds and `CallListener.onCallPreempted(Call, CallPreemptionReason, boolean)` is NOT needed since there is no precedence call is directed at this end, other end is free and ready to receive any other new call while tone is being played.
      Parameters:
        `preemptedCall` - call which was preempted and received onCallPreempted event.
        `completionHandler` - A completion handler that receives the result of the operation.
      See Also:
        `CallListener.onCallPreempted(Call, CallPreemptionReason, boolean)`

    - #### setHuntGroupBusyPositionEnabled

          void setHuntGroupBusyPositionEnabled​(boolean enabled,
                                               int huntGroupNumber,
                                               FeatureCompletionHandler completionHandler)

      Enables or disables Hunt Group Busy Position feature for a specified hunt group number. When enabled, user will not receive any calls targeted for that hunt group. In order to receive calls on that hunt group, feature needs to be disabled.
      Parameters:
        `enabled` - If true, hunt group busy position is enabled. If false, hunt group busy position is disabled.
        `huntGroupNumber` - The hunt group number for which feature is enabled or disabled.
        `completionHandler` - A completion handler that received the result of the operation

    - #### getAvailableHuntGroupBusyPositionFeatures

          java.util.List<FeatureStatusParameters> getAvailableHuntGroupBusyPositionFeatures()

      Gets a list of configured hunt-group-busy-position feature buttons for the user.
      Returns:
        A list of FeatureStatusParameters objects describing the available hunt-group-busy-position features.

    - #### setPersonalizedLabelForFeature

          void setPersonalizedLabelForFeature​(java.lang.String featureLabel,
                                              FeatureParameters featureParams,
                                              FeatureLabelCompletionHandler completionHandler)

      Updates the feature button with personalized label given by user.
      Parameters:
        `featureLabel` - The personalized label to be set
        `featureParams` - The FeatureParameters object providing details of feature to update.
        `completionHandler` - A completion handler that received the result of the operation

    - #### getHuntGroupBusyPositionCapability

          Capability getHuntGroupBusyPositionCapability​(int huntGroupNumber)

      Parameters:
        `huntGroupNumber` - The hunt group number for which to query the availability of the feature.
      Returns:
        a capability object indicating whether the hunt-group-busy-position feature is available for the specified hunt group number.

    - #### getMaliciousCallTraceCapability

          Capability getMaliciousCallTraceCapability()

      Returns a capability object indicating whether Malicious Call Trace feature is available for incoming active call.
      Returns:
        a capability object indicating whether Malicious Call Trace feature is available for incoming active call.

    - #### isMaliciousCallTraceActive

          boolean isMaliciousCallTraceActive()

      Returns a Boolean value indicating whether Malicious Call Trace feature is activated.
      Returns:
        True if feature is activated, or False if feature is not activated.

    - #### activateMaliciousCallTrace

          void activateMaliciousCallTrace​(FeatureCompletionHandler completionHandler)

      Activate Malicious Call Trace feature for incoming active call. Successful completionHandler indicates that Malicious Call Trace feature is activated. When malicious call trace controller (human) presses "mct-contr" button, callback CallFeatureServiceListener.onMaliciousCallTraceStatusChanged(true) is invoked. When the controller deactivates a malicious call trace, callback CallFeatureServiceListener.onMaliciousCallTraceStatusChanged(false) is invoked. Feature is deactivated by pressing the feature deactivation code by same client, which pressed "mct-contr" button. "mct-contr" button is implemented in CM for h.323 only.
      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getNoHoldConferenceCapability

          Capability getNoHoldConferenceCapability()

      Returns a capability object indicating whether No Hold Conference feature is available for active call.
      Returns:
        a capability object indicating whether No Hold Conference feature is available for active call.

    - #### getNoHoldConferenceCancelCapability

          Capability getNoHoldConferenceCancelCapability()

      Returns a capability object indicating whether No Hold Conference feature can be canceled.
      Returns:
        a capability object indicating whether No Hold Conference feature can be canceled.

    - #### getNoHoldConferenceDestination

          java.lang.String getNoHoldConferenceDestination()

      Returns the destination extension for No Hold Conference feature button.
      Returns:
        the destination extension for No Hold Conference feature button.

    - #### makeNoHoldConference

          void makeNoHoldConference​(java.lang.String destination,
                                    FeatureCompletionHandler completionHandler)

      Start No Hold Conference for active call, or add new participant to existing conference. No Hold Conference feature button allows a user to set up a conference call without interrupting the current conversation. The called party is automatically added to the conference as soon as they answer. Successful completionHandler is invoked after invited party answered, or the feature was canceled. Current active call will be transformed into the conference. The number dialed by the user is sent as a message and not as tone so that the digits are not heard by any party on the call. So No Hold Conference button should be used if it's important that no tones are heard by participants, and/or remote user should not be held. In other cases AddParticipantFromCall/AddParticipant methods of Conference interface should be used. No Hold Conference is Avaya Communication Manager feature, which is not available in other environments.
      Parameters:
        `destination` - Network address of the person who is being added to the conference call.
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### cancelNoHoldConference

          void cancelNoHoldConference​(FeatureCompletionHandler completionHandler)

      Cancels the No Hold Conference invocation. The feature can be canceled after invocation of No Hold Conference and during the time it's ringing on the party that is to be added to the No Hold Conference.
      Parameters:
        `completionHandler` - A completion handler that receives the result of the operation.

    - #### getServiceObservingCapability

          Capability getServiceObservingCapability()

      Returns an indication as to whether the service observing is available.
      Returns:
        Capability object describing whether the service observing is available.

    - #### startServiceObserving

          @Deprecated
          void startServiceObserving​(java.lang.String entity,
                                     ServiceObservingType type,
                                     int location,
                                     FeatureCompletionHandler handler)

      Deprecated.
      Use `startServiceObserving(String,ServiceObservingType,int,ServiceObservingCompletionHandler)` instead.
      Starts service observing. Service observing feature allows supervisors to monitor calls to extensions, agents or VDNs.
      Parameters:
        `entity` - The extension of the endpoint to be observed.
        `type` - The Service Observing type.
        `location` - The location number associated with the observed VDN. The valid range is 0-2000. The value 0 means that the soType is not "By Location". If the location number is outside the valid range, an error will be reported to the application via the supplied completion handler.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### startServiceObserving

          void startServiceObserving​(java.lang.String entity,
                                     ServiceObservingType type,
                                     int location,
                                     ServiceObservingCompletionHandler handler)

      Starts service observing. Service observing feature allows supervisors to monitor calls to extensions, agents or VDNs.
      Parameters:
        `entity` - The extension of the endpoint to be observed.
        `type` - The Service Observing type.
        `location` - The location number associated with the observed VDN. The valid range is 0-2000. The value 0 means that the soType is not "By Location". If the location number is outside the valid range, an error will be reported to the application via the supplied completion handler.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### changeServiceObservingMode

          @Deprecated
          void changeServiceObservingMode​(ServiceObservingMode mode,
                                          FeatureCompletionHandler handler)

      Deprecated.
      Use `changeServiceObservingMode(ServiceObservingMode,ServiceObservingCompletionHandler)` instead.
      Change the mode of service observing session.
      Parameters:
        `mode` - The Service Observing mode.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### changeServiceObservingMode

          void changeServiceObservingMode​(ServiceObservingMode mode,
                                          ServiceObservingCompletionHandler handler)

      Change the mode of service observing session.
      Parameters:
        `mode` - The Service Observing mode.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### stopCoachingSession

          @Deprecated
          void stopCoachingSession​(FeatureCompletionHandler handler)

      Deprecated.
      Use `stopCoachingSession(ServiceObservingCompletionHandler)` instead.
      Stop coaching and move the service observing session to previous mode. If the service observing session is not in coaching mode, an error will be reported to the application via the supplied completion handler.
      Parameters:
        `handler` - Completion handler instance that receives the result of the operation.

    - #### stopCoachingSession

          void stopCoachingSession​(ServiceObservingCompletionHandler handler)

      Stop coaching and move the service observing session to previous mode. If the service observing session is not in coaching mode, an error will be reported to the application via the supplied completion handler.
      Parameters:
        `handler` - Completion handler instance that receives the result of the operation.

    - #### stopServiceObserving

          @Deprecated
          void stopServiceObserving​(FeatureCompletionHandler handler)

      Deprecated.
      Use `stopServiceObserving(ServiceObservingCompletionHandler)` instead.
      Stops service observing.
      Parameters:
        `handler` - Completion handler instance that receives the result of the operation.

    - #### stopServiceObserving

          void stopServiceObserving​(ServiceObservingCompletionHandler handler)

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

    - #### getServiceObservingStatusParameters

          ServiceObservingStatusParameters getServiceObservingStatusParameters()

      If service observing feature is enabled then `ServiceObservingStatusParameters` contains details of service observing feature.
      Returns:
        ServiceObservingStatusParameters specifying details of service observing feature.

    - #### getCallRecordingCapabilityForActionType

          Capability getCallRecordingCapabilityForActionType​(CallRecordingActionType type)

      Returns a capability object indicating whether a specific call recording action is allowed.
      Parameters:
        `type` - The call recording action type.
      Returns:
        Capability object describing whether a specific call recording action is allowed.

    - #### performCallRecordingWithActionType

          void performCallRecordingWithActionType​(CallRecordingActionType type,
                                                  FeatureCompletionHandler handler)

      Perform call recording operation with specific action type.
      Parameters:
        `type` - The call recording action type.
        `handler` - Completion handler instance that receives the result of the operation.

    - #### moveCall

          void moveCall​(FeatureCompletionHandler completionHandler)

      Call Handover to move a call to user's simultaneous/twin clients.
      Parameters:
        `completionHandler` - Completion handler instance that receives the result of the operation.

    - #### retrieveCall

          void retrieveCall​(FeatureCompletionHandler completionHandler)

      Call Handover to retrieve a call from user's simultaneous/twin clients.
      Parameters:
        `completionHandler` - Completion handler instance that receives the result of the operation.

    - #### isInternalTwinningEnabled

          boolean isInternalTwinningEnabled()

      Returns:
        a Boolean value indicating whether the internal twinning feature is enabled.

    - #### isSimRingCallbackEnabled

          boolean isSimRingCallbackEnabled()

      Returns:
        a Boolean value indicating whether the callback / simultaneous ring feature is enabled.

    - #### getSimRingCallbackCapability

          Capability getSimRingCallbackCapability()

      Returns:
        a capability object indicating whether the user is able to configure callback / simultaneous ring destinations and their parameters.

    - #### getSimRingCallbackStatusParameters

          SimRingCallbackStatusParameters getSimRingCallbackStatusParameters()

      Returns:
        the callback / simultaneous ring feature parameters for the user's local extension.

    - #### setSimRingCallbackStatusParameters

          void setSimRingCallbackStatusParameters​(SimRingCallbackStatusParameters simRingCallbackStatusParameters,
                                                  FeatureCompletionHandler completionHandler)

      Enables or disables the callback / simultaneous ring feature with the specified parameters.
      Parameters:
        `simRingCallbackStatusParameters` - The callback / simultaneous ring feature status parameters. To enable the feature at least 1 destination should be configured. All of the configured destinations must be unique. To disable the feature all of the destinations must be empty ("" or null). The configured default callback destination in these parameters may also be overridden by the callback call feature invocation (@see #invokeCallbackCall(String callbackDestination, String remoteAddress, CallbackCallCompletionHandler completionHandler))
        `completionHandler` - A completion handler that received the result of the operation.

    - #### getCallbackCallCapability

          Capability getCallbackCallCapability()

      Returns:
        a capability object indicating whether the user is able to invoke callback calls.

    - #### invokeCallbackCall

          void invokeCallbackCall​(java.lang.String callbackDestination,
                                  java.lang.String remoteAddress,
                                  CallbackCallCompletionHandler completionHandler)

      Initiates/places a call from the callback destination to the remote address.
      Parameters:
        `callbackDestination` - The destination from where the call should be initiated. This must be one of the destinations configured via
        `remoteAddress` - The destination that the call should be addressed to.
        `completionHandler` - A completion handler that received the result of the operation.
      See Also:
        `can be used if you don't want to specify the callback destination.`, `If not specified, the call will be placed from the default callback destination configured via`, `or saved from the last callback call invocation. The specified callback destination is saved as the default callback destination automatically after placing a callback call. It will override previously configured default callback destination if any.`

    - #### invokeCallbackCall

          void invokeCallbackCall​(java.lang.String remoteAddress,
                                  CallbackCallCompletionHandler completionHandler)

      Initiates/places a callback call to the remote address. The call will be placed from the default callback destination configured via
      Parameters:
        `remoteAddress` - The destination that the call should be addressed to.
        `completionHandler` - A completion handler that received the result of the operation.
      See Also:
        `or saved from the last callback call invocation (@see #invokeCallbackCall(String callbackDestination, String remoteAddress, CallbackCallCompletionHandler completionHandler)) If the default callback destination is not specified, an error will be returned.`

    - #### getSendNNCapability

          Capability getSendNNCapability()

      Returns:
        a capability object indicating whether the user is able to invoke send-nn feature.

    - #### invokeSendNNCallWithExtension

          void invokeSendNNCallWithExtension​(java.lang.String extension,
                                             java.lang.String remoteAddress,
                                             FeatureCompletionHandler completionHandler)

      Initiates/places a call to the remote address with send-nn. The call will be placed with the specified extension as the caller's number. Use this method only if FeatureMode is transient. otherwise use `setSendNNEnabled(boolean, String, FeatureCompletionHandler)` method
      Parameters:
        `extension` - The number with which the call should be placed.
        `remoteAddress` - The destination that the call should be addressed to.
        `completionHandler` - A completion handler that receives the result of the operation.
      See Also:
        `FeatureMode`

    - #### setSendNNEnabled

          void setSendNNEnabled​(boolean enabled,
                                java.lang.String extension,
                                FeatureCompletionHandler completionHandler)

      Enables or disables send-nn for the specified extension. Calls will be placed with the specified extension as the caller's number. Use this method only if FeatureMode is permanent. otherwise use `invokeSendNNCallWithExtension(String, String, FeatureCompletionHandler)` method.
      Parameters:
        `enabled` - If true send-nn is enabled. If false send-nn is disabled.
        `extension` - The extension for which send-nn is enabled/disabled for.
        `completionHandler` - A completion handler that receives the result of the operation.
      See Also:
        `FeatureMode`