com.avaya.ccs.api

## Interface InteractionI

-     public interface InteractionI

  The `InteractionI` object represents a user's interaction with a contact in the Contact Center from the perspective of a `UserI` and `ResourceI` that is associated with the current session.

  A contact in the Contact Center represents a logical call of a specified `ContactType` between one or more parties. The `InteractionI` object represents a view of this contact from this users perspective.

  Invoking the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method requests the server to begin sending notifications to the application for `InteractionI` objects within the `SessionI`.

  The methods available on `InteractionI` allow the application to retrieve all pertinent information related to this interaction as well as controlling the interaction by invoking operations (such as answer an incoming interaction or placing an interaction on hold). Many methods that allow the application to interact with the `InteractionI` object have corresponding capability methods to identify whether the operation can be invoked at this time (for example, the `canAnswer()` capability method identifies whether `answer()` can be invoked).

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAgentNote(java.lang.String note)` Requests that an agent note be added to the contact associated with this `InteractionI` within the campaign.
    `void` | `addToDNC()` Requests that the `ContactNumberI` associated with this `InteractionI` object be added to the Do Not Call (DNC) list on the POM server.
    `void` | `answer()` Requests that an incoming ringing interaction be answered.
    `boolean` | `canAddAgentNote()`
    `boolean` | `canAddToDnc()`
    `boolean` | `canAnswer()`
    `boolean` | `canChangeConferenceOwner()`
    `boolean` | `canCompleteConference()`
    `boolean` | `canCompleteTransfer()`
    `boolean` | `canCreateCallback()`
    `boolean` | `canEmergency()`
    `boolean` | `canEnd()`
    `boolean` | `canEndConference()`
    `boolean` | `canEndConsult()`
    `boolean` | `canExtendWrapup()`
    `boolean` | `canGetActivityCodes()`
    `boolean` | `canGetAutoPhrases()`
    `boolean` | `canGetCallbackDestinations()`
    `boolean` | `canGetConsultDestinations()`
    `boolean` | `canGetCustomerHistory()`
    `boolean` | `canGetCustomFields()`
    `boolean` | `canGetDispositionCodes()`
    `boolean` | `canGetPagePushUrls()`
    `boolean` | `canGetSkillsets()`
    `boolean` | `canHold()`
    `boolean` | `canInitiateConference()`
    `boolean` | `canInitiateConferenceToDestination()`
    `boolean` | `canInitiateTransfer()`
    `boolean` | `canInitiateTransferToDestination()`
    `boolean` | `canJoinConference()`
    `boolean` | `canObserveDn()`
    `boolean` | `canOpenMedia()`
    `boolean` | `canPlayDTMF()`
    `boolean` | `canPreviewCancel()`
    `boolean` | `canPreviewDial()`
    `boolean` | `canPreviewDialFreeForm()`
    `boolean` | `canRedial()`
    `boolean` | `canRefreshAgentNotes()`
    `boolean` | `canSetActivityCode()`
    `boolean` | `canSetUUI()`
    `boolean` | `canTransferToDestination()`
    `boolean` | `canUnhold()`
    `boolean` | `canUpdateCustomerAddress()`
    `boolean` | `canUpdateCustomerEmail()`
    `boolean` | `canUpdateCustomerName()`
    `boolean` | `canUpdateCustomerPhone()`
    `boolean` | `canWrapup()`
    `boolean` | `canWrapupWithCode()`
    `void` | `changeConferenceOwner()` Requests that the owner of the conference be changed.
    `void` | `coach()`
    `void` | `completeConference()` Requests completion of a conference that was initiated by `initiateConference(java.lang.String)`.
    `void` | `completeTransfer()` Requests completion of a supervised transfer initiated by `initiateTransfer(java.lang.String)`.
    `void` | `consult(java.lang.String destination)` Initiate a consult between two agents.
    `void` | `createCallback(DestinationI callbackDestination, ContactNumberI contactNumber, java.lang.String callbackTime, java.lang.String callbackExpiryTime, java.lang.String callbackNote)` Requests that the customer on this `InteractionI` be called back on a known `ContactNumberI` (administered on the POM server) by a callback `DestinationI` at a specified time.
    `void` | `createCallback(DestinationI callbackDestination, java.lang.String externalNumber, java.lang.String callbackTime, java.lang.String callbackExpiryTime, java.lang.String callbackNote)` Requests that the customer on this `InteractionI` be called back on an unknown number (not administered on the POM server) by a callback `DestinationI` at a specified time.
    `void` | `emergency()` Requests invocation of the emergency feature on this interaction.
    `void` | `end()` Requests that an interaction be ended by dropping the associated user from the contact.
    `void` | `end(java.lang.String closeReasonCode, java.lang.String closingAgentNote, boolean sendTranscript)`
    `void` | `endConference()` Requests that a three participant conference represented by this `InteractionI` be ended.
    `void` | `endConsult()` End a consult between two agents
    `void` | `extendWrapup()` Requests that the time allowed to wrapup the `InteractionI` object be extended.
    `ContactCenterCodeI` | `getActivityCode()` The activity code, if any, currently set on this interaction.
    `void` | `getActivityCodes()` Requests retrieval of the administered activity codes in the Contact Center for this `InteractionI` object.
    `java.lang.String` | `getAddress()` The address URI associated with the `ResourceI` object that is handling this `InteractionI` object.
    `java.lang.String` | `getAddressName()` The name of the address returned by `getAddress()`.
    `java.util.List<java.lang.String>` | `getAgentNotes()` The agent notes stored on the `InteractionI` object.
    `java.lang.String` | `getAgentScriptUrl()`
    `void` | `getCallbackDestinations(DestinationType callbackDestType)` Requests the `DestinationI` objects of a specified `DestinationType` that are available for the user to setup as the destination for a callback.
    `java.util.List<DestinationType>` | `getCallbackDestinationTypes()` A list of `DestinationType` objects that define the possible argument values for the `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)` method.
    `java.lang.String` | `getCalledAddress()` The original destination address associated with this {code InteractionI}.
    `java.lang.String` | `getCalledAddressName()` The name of the address returned by `getCalledAddress()`.
    `java.lang.String` | `getCallingAddress()` The address that was the original source of this `InteractionI`.
    `java.lang.String` | `getCallingAddressName()` The name of the address returned by `getCallingAddress()`.
    `java.lang.String` | `getCampaignName()` The name of the POM campaign that caused this this `InteractionI` object to be created.
    `com.avaya.ccs.core.CloseReasonCode` | `getClosedReasonCode()` A ClosedReasonCode may optionally be set as a field on an Interaction.
    `void` | `getConsultDestinations(DestinationType consultDestType)` Requests the `DestinationI` objects of a specified `DestinationType` that are available for the user to consult with.
    `void` | `getConsultDestinationTypes()` A list of `DestinationType` objects that define the possible argument values for the `getConsultDestinations(com.avaya.ccs.api.enums.DestinationType)` method.
    `java.lang.String` | `getContactId()` The ID of the contact that this `InteractionI` object represents.
    `java.util.List<ContactNumberI>` | `getContactNumbers()` A list of `ContactNumberI` objects each representing an administered contact number for this customer.
    `ContactType` | `getContactType()`
    `CustomerDetailsI` | `getCustomerDetails()` The `CustomerDetailsI` of the customer being dialled.
    `void` | `getCustomFields()` Requests retrieval of the custom fields for this `InteractionI` object.
    `DataI` | `getData()` Retrieves the attached data that is associated with the contact.
    `java.lang.String` | `getId()` A unique identifier for the `InteractionI` object.
    `IntrinsicI` | `getIntrinsic(java.lang.String name)` Performs a lookup on the list returned from `getIntrinsics()` for an `IntrinsicI` object that matches the name supplied.
    `java.util.List<IntrinsicI>` | `getIntrinsics()` A list of `IntrinsicI` objects that provide additional information about the contact that this `InteractionI` object is associated with.
    `java.lang.String` | `getMainContactId()` If the Contact that this `InteractionI` is associated with was created as the result of a consult operation (transfer or conference initiate), this method provides the ID of the main contact that is associated with this consult contact.
    `com.avaya.ccs.core.Media` | `getMedia()` A getter for the MediaI member of this InteractionI object.
    `java.lang.String` | `getOriginalDestination()` The original destination address used by the caller to reach the system, sometimes referred to as the DNIS (Dialed Number Identification Service).
    `StateReason` | `getParticipationReason()` Participation reason can be used to determine how a `UserI` is participating in a contact.
    `int` | `getPreviewTimer()` Preview timer is the maximum time administered on the POM server that an interaction should remain in `InteractionState.Preview` before dialing.
    `java.util.List<RemoteParticipantI>` | `getRemoteParticipants()`
    `java.lang.String` | `getResourceId()` Identifies the `ResourceI` object that this `InteractionI` object is associated with by its identifier.
    `java.util.List<com.avaya.ccs.core.ScreenPop>` | `getScreenPops()` Get the list of `ScreenPopI`s associated with this Interaction.
    `SessionI` | `getSession()`
    `java.lang.String` | `getSkillset()` For an `InteractionI` object representing a Contact Center contact this will return the latest skillset that the contact has been routed to.
    `void` | `getSkillsets()` Request the list of available email skillsets configured in AACC/ACCS that can be used as an originating address for an ad-hoc email.
    `InteractionState` | `getState()` The current `InteractionState` of this `InteractionI` object.
    `StateReason` | `getStateReason()` The `StateReason` that represents the cause of the latest state transition.
    `java.lang.String` | `getUserId()` Identifies the `UserI` object that this `InteractionI` object is associated with by its identifier.
    `java.lang.String` | `getUUI()` Retrieves the user-user info (UUI) stored on the contact associated with this `InteractionI`.
    `java.lang.String` | `getWebChatAgentLabel()` The Webchat label of the `UserI` who received is processing this contact.
    `boolean` | `getWebChatCustomerConnected()` A customer in a web chat may temporarily lose their connection, for example if their internet connection drops In this case, an Interaction Update will be sent to the client with WebChatCustomerConnected set to `false` If this contact isn't a {WebChatMediaI} contact, then this will be null
    `int` | `getWrapupTimer()` Wrapup time is the maximum time administered on the POM server that an interaction should remain in `InteractionState.Wrapup`.
    `void` | `hold()` Requests that an active interaction be placed on hold.
    `void` | `initiateConference(java.lang.String destination)` Requests initation of a conference to the specified destination.
    `void` | `initiateConferenceToDestination(DestinationI destination)` Requests initation of a consult conference to the specified `DestinationI` administered on the POM server.
    `void` | `initiateTransfer(java.lang.String destination)` Requests initation of a supervised transfer to the specified destination.
    `void` | `initiateTransferToDestination(DestinationI destination)` Requests initiation of a consult transfer to the specified `DestinationI` administered on the POM server.
    `boolean` | `isAutoAnswered()` This field shows that interaction was answered by the system
    `boolean` | `isConference()` In a Conference, two agents are talking/messaging with a third party (the customer) who can hear/read what they are saying
    `boolean` | `isConsult()` In a Consult, two agents are talking/messaging to each other while a third party (the customer) cannot hear/read what they are saying
    `boolean` | `isConsultedAgent()`
    `boolean` | `isMonitored()`
    `boolean` | `isMultimedia()`
    `void` | `joinConference(InteractionI otherInteraction)` Requests that two unrelated `InteractionI` objects that share a common `UserI` be joined together bringing all parties on the two interactions into a single conference.
    `void` | `openMedia()` Open the `MediaI` channel for this Interaction.
    `void` | `playDTMF(java.lang.String digits)` Requests that dtmf tones be played into the media stream of the interaction.
    `void` | `previewCancel()` Requests that the preview of a POM contact associated with this `InteractionI` object be cancelled.
    `void` | `previewDial(ContactNumberI contactNumber)` Requests that a `ContactNumberI` administered for the customer in the preview campaign be dialled.
    `void` | `previewDialFreeForm(java.lang.String destination)` Requests that a contact number not administered for the customer in the preview campaign be dialled.
    `void` | `redial(ContactNumberI contact)` Requests that the `ContactNumberI` of the preview campaign be redialled.
    `void` | `refreshAgentNotes()` Requests that the agent notes on the contact associated with this `InteractionI` be refreshed.
    `void` | `removeData()` Requests that the attached data currently set on the contact that associated with this `InteractionI` object be removed.
    `void` | `removeIntrinsic(java.lang.String name)` Requests that an intrinsic specified by a name be removed from the contact.
    `void` | `requestApprovalStatus()`
    `void` | `requestAutoPhrases()` Send the request to CCS for `AutoPhrasesI`.
    `void` | `requestCustomerHistory()` Send the request to the server for the list of previous Interactions for this customer.
    `void` | `requestCustomerInteractionMedia(java.lang.String contactId)` Requests the media (e.g.
    `void` | `requestDispositionCodes()` Requests retrieval of the administered disposition codes.
    `void` | `requestPagePushUrls()` Send the request to CCS for `PagePushUrlListI`.
    `void` | `requestReviewEmail(java.lang.String reviewType, java.util.Map<com.avaya.ccs.core.CommandArgs.Argument,java.lang.String> queryParams, java.lang.String data)`
    `void` | `setActivityCode(java.lang.String code)` Requests that an activity code be set on the contact that this `InteractionI` object represents.
    `void` | `setData(DataI data)` Requests that attached data be set on the contact that associated with this `InteractionI` object.
    `void` | `setIntrinsic(java.lang.String name, java.lang.String value)` Requests that the value of an existing intrinsic be modified or a new intrinsic be added to a contact.
    `void` | `setMedia(com.avaya.ccs.core.Media interactionMedia)` A setter for the MediaI member of this InteractionI object.
    `void` | `setUUI(java.lang.String uui)` Requests that new user-user-info (UUI) be set on the contact associated with this `InteractionI` object.
    `java.lang.String` | `toJsonStringMaskSensitive()`
    `void` | `transferToDestination(DestinationI destination)` Transfer to a destination.
    `void` | `unhold()` Requests that a held interaction be taken off hold.
    `void` | `updateClosedReasonCode(java.lang.String code)` Set or update the closed-reason code on the Interaction in CCS.
    `void` | `updateCustomerAddress(PostalAddressListEntryI addressEntry)` Requests update of the postal address information that is associated with the customer on the `InteractionI`.
    `void` | `updateCustomerEmail(EmailListEntryI emailEntry)` Requests update of the email information that is associated with the customer on the `InteractionI`.
    `void` | `updateCustomerName(java.lang.String title, java.lang.String firstName, java.lang.String lastName)` Requests update of the name of the customer on the `InteractionI`.
    `void` | `updateCustomerPhone(PhoneListEntryI phoneEntry)` Requests update of phone information that is associated with the customer on the `InteractionI`.
    `void` | `wrapup()` Requests that the POM contact associated with this `InteractionI` object be wrapped up.
    `void` | `wrapupWithCode(ContactCenterCodeI completionCode)` Requests that the POM contact associated with this `InteractionI` object be wrapped up with a valid `ContactCenterCodeI` object representing a POM completion code.

- - ### Method Detail

    - #### canObserveDn

          boolean canObserveDn()
                        throws ObjectInvalidException

      Returns:
        `true` if `answer()` supervisor for this agent can observe DN calls, `false` if it cannot.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canAnswer

          boolean canAnswer()
                     throws ObjectInvalidException

      Returns:
        `true` if `answer()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canHold

          boolean canHold()
                   throws ObjectInvalidException

      Returns:
        `true` if `hold()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canUnhold

          boolean canUnhold()
                     throws ObjectInvalidException

      Returns:
        `true` if `unhold()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canEnd

          boolean canEnd()
                  throws ObjectInvalidException

      Returns:
        `true` if `end()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canInitiateTransfer

          boolean canInitiateTransfer()
                               throws ObjectInvalidException

      Returns:
        `true` if `initiateTransfer(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canInitiateConference

          boolean canInitiateConference()
                                 throws ObjectInvalidException

      Returns:
        `true` if `canInitiateConference()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canCompleteTransfer

          boolean canCompleteTransfer()
                               throws ObjectInvalidException

      Returns:
        `true` if `completeTransfer()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canCompleteConference

          boolean canCompleteConference()
                                 throws ObjectInvalidException

      Returns:
        `true` if `completeConference()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canJoinConference

          boolean canJoinConference()
                             throws ObjectInvalidException

      Returns:
        `true` if `joinConference(com.avaya.ccs.api.InteractionI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canEmergency

          boolean canEmergency()
                        throws ObjectInvalidException

      Returns:
        `true` if `emergency()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canPlayDTMF

          boolean canPlayDTMF()
                       throws ObjectInvalidException

      Returns:
        `true` if `playDTMF(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canSetActivityCode

          boolean canSetActivityCode()
                              throws ObjectInvalidException

      Returns:
        `true` if `setActivityCode(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetActivityCodes

          boolean canGetActivityCodes()
                               throws ObjectInvalidException

      Returns:
        `true` if `getActivityCodes()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetCustomFields

          boolean canGetCustomFields()
                              throws ObjectInvalidException

      Returns:
        `true` if `getCustomFields()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetSkillsets

          boolean canGetSkillsets()
                           throws ObjectInvalidException

      Returns:
        `true` if `getSkillsets()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canSetUUI

          boolean canSetUUI()
                     throws ObjectInvalidException

      Returns:
        `true` if `setUUI(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canAddAgentNote

          boolean canAddAgentNote()
                           throws ObjectInvalidException

      Returns:
        `true` if `addAgentNote(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canRefreshAgentNotes

          boolean canRefreshAgentNotes()
                                throws ObjectInvalidException

      Returns:
        `true` if `refreshAgentNotes()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetCallbackDestinations

          boolean canGetCallbackDestinations()
                                      throws ObjectInvalidException

      Returns:
        `true` if `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetConsultDestinations

          boolean canGetConsultDestinations()
                                     throws ObjectInvalidException

      Returns:
        `true` if `getConsultDestinations(com.avaya.ccs.api.enums.DestinationType)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetDispositionCodes

          boolean canGetDispositionCodes()
                                  throws ObjectInvalidException

      Returns:
        `true` if `requestDispositionCodes()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canWrapup

          boolean canWrapup()
                     throws ObjectInvalidException

      Returns:
        `true` if `wrapup()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canWrapupWithCode

          boolean canWrapupWithCode()
                             throws ObjectInvalidException

      Returns:
        `true` if `wrapupWithCode(com.avaya.ccs.api.ContactCenterCodeI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canExtendWrapup

          boolean canExtendWrapup()
                           throws ObjectInvalidException

      Returns:
        `true` if `extendWrapup()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canCreateCallback

          boolean canCreateCallback()
                             throws ObjectInvalidException

      Returns:
        `true` if `createCallback(com.avaya.ccs.api.DestinationI, com.avaya.ccs.api.ContactNumberI, java.lang.String, java.lang.String, java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canPreviewDialFreeForm

          boolean canPreviewDialFreeForm()
                                  throws ObjectInvalidException

      Returns:
        `true` if `previewDialFreeForm(java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canPreviewDial

          boolean canPreviewDial()
                          throws ObjectInvalidException

      Returns:
        `true` if `previewDial(com.avaya.ccs.api.ContactNumberI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canPreviewCancel

          boolean canPreviewCancel()
                            throws ObjectInvalidException

      Returns:
        `true` if `previewCancel()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canRedial

          boolean canRedial()
                     throws ObjectInvalidException

      Returns:
        `true` if `redial(com.avaya.ccs.api.ContactNumberI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canInitiateTransferToDestination

          boolean canInitiateTransferToDestination()
                                            throws ObjectInvalidException

      Returns:
        `true` if `initiateTransferToDestination(com.avaya.ccs.api.DestinationI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canInitiateConferenceToDestination

          boolean canInitiateConferenceToDestination()
                                              throws ObjectInvalidException

      Returns:
        `true` if `initiateConferenceToDestination(com.avaya.ccs.api.DestinationI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canChangeConferenceOwner

          boolean canChangeConferenceOwner()
                                    throws ObjectInvalidException

      Returns:
        `true` if `changeConferenceOwner()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canEndConference

          boolean canEndConference()
                            throws ObjectInvalidException

      Returns:
        `true` if `endConference()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canEndConsult

          boolean canEndConsult()
                         throws ObjectInvalidException

      Returns:
        `true` if `endConsult()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canUpdateCustomerName

          boolean canUpdateCustomerName()
                                 throws ObjectInvalidException

      Returns:
        `true` if `updateCustomerName(java.lang.String, java.lang.String, java.lang.String)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canUpdateCustomerAddress

          boolean canUpdateCustomerAddress()
                                    throws ObjectInvalidException

      Returns:
        `true` if `updateCustomerAddress(com.avaya.ccs.api.PostalAddressListEntryI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canUpdateCustomerPhone

          boolean canUpdateCustomerPhone()
                                  throws ObjectInvalidException

      Returns:
        `true` if `updateCustomerPhone(com.avaya.ccs.api.PhoneListEntryI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canUpdateCustomerEmail

          boolean canUpdateCustomerEmail()
                                  throws ObjectInvalidException

      Returns:
        `true` if `updateCustomerEmail(com.avaya.ccs.api.EmailListEntryI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canAddToDnc

          boolean canAddToDnc()
                       throws ObjectInvalidException

      Returns:
        `true` if `addToDNC()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetAutoPhrases

          boolean canGetAutoPhrases()
                             throws ObjectInvalidException

      Returns:
        `true` if `requestAutoPhrases()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetCustomerHistory

          boolean canGetCustomerHistory()
                                 throws ObjectInvalidException

      Returns:
        `true` if `requestCustomerHistory()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canGetPagePushUrls

          boolean canGetPagePushUrls()
                              throws ObjectInvalidException

      Returns:
        `true` if `requestPagePushUrls()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canOpenMedia

          boolean canOpenMedia()
                        throws ObjectInvalidException

      Returns:
        `true` if `canOpenMedia()` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### canTransferToDestination

          boolean canTransferToDestination()
                                    throws ObjectInvalidException

      Returns:
        `true` if `transferToDestination(DestinationI)` can be invoked at this time, `false` if it cannot be invoked.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getAddress

          java.lang.String getAddress()
                               throws ObjectInvalidException

      The address URI associated with the `ResourceI` object that is handling this `InteractionI` object. See `ResourceI.getAddress()` for details on the format.
      Returns:
        a string representing the address of the `ResourceI` that is handling this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getAddressName

          java.lang.String getAddressName()
                                   throws ObjectInvalidException

      The name of the address returned by `getAddress()`. See `ResourceI.getAddressName()` for details on the format.
      Returns:
        a string representing the name of the address of the `ResourceI` that is handling this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCallingAddress

          java.lang.String getCallingAddress()
                                      throws ObjectInvalidException

      The address that was the original source of this `InteractionI`. See `ResourceI.getAddress()` for details on the format of the address.
      Returns:
        the address of the original source of this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCallingAddressName

          java.lang.String getCallingAddressName()
                                          throws ObjectInvalidException

      The name of the address returned by `getCallingAddress()`. See `ResourceI.getAddressName()` for details on the format.
      Returns:
        the address name of the original source of this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCalledAddress

          java.lang.String getCalledAddress()
                                     throws ObjectInvalidException

      The original destination address associated with this {code InteractionI}. See `ResourceI.getAddress()` for details on the format. In addition to this, if the original destination was a Contact Center Controlled Destination Number (CDN), then this method may return the number of the CDN and not a full URI.
      Returns:
        the address of the origination destination address or target of this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCalledAddressName

          java.lang.String getCalledAddressName()
                                         throws ObjectInvalidException

      The name of the address returned by `getCalledAddress()`. See `ResourceI.getAddress()` for details on the format. In addition to this, if `getCalledAddress()` was a Contact Center Controlled Destination Number (CDN), then both `getCalledAddress()` and this method will return the name of the address.
      Returns:
        the address name of the origination destination address
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getActivityCode

          ContactCenterCodeI getActivityCode()
                                      throws ObjectInvalidException

      The activity code, if any, currently set on this interaction.

      The value returned is a `ContactCenterCodeI` object representing the activity code that is currently set by the user handling the interaction. Activity codes are set through the `setActivityCode(java.lang.String)` method and are used to categorize the type of work being performed by the user handling the interaction.

      Returns:
        the activity `ContactCenterCodeI` that has been set on this interaction or `null` if no code has been set.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getContactId

          java.lang.String getContactId()
                                 throws ObjectInvalidException

      The ID of the contact that this `InteractionI` object represents. The value of this is a string that identifies the contact within the context of the underlying service provider. If two users were participants on the same contact in the Contact Center, then each of their `InteractionI` objects would represent their participation on this contact and hence each interaction would have the same contact id.

      The contents of the contact ID string depend on the underlying service provider, therefore the application should not rely on the ContactID string being of a particular format.

      Returns:
        the contact id associated with this `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getContactType

          ContactType getContactType()
                              throws ObjectInvalidException

      Returns:
        the `ContactType` that is being handled by this `InteractionI` object
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getData

          DataI getData()
                 throws ObjectInvalidException

      Retrieves the attached data that is associated with the contact.

      The value returned is a `DataI` object that represents the data attached to the contact. A value of null indicates that no attached data exists for the contact.

      Returns:
        a `DataI` object that represents the data attached to the contact or `null` if no attached data exists on the contact.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getId

          java.lang.String getId()

      A unique identifier for the `InteractionI` object.

      Identifier values are only guaranteed to be unique among objects of the same type. Client applications should not rely on the value of the ID property for anything other than uniquely identifying an instance of a particular object type, as the actual value of the ID property may be changed in future releases.

      This property is available for access after the application has received a `NotificationType.DELETE` notification for this `InteractionI` object.

      Returns:
        id of the `InteractionI` object

    - #### getClosedReasonCode

          com.avaya.ccs.core.CloseReasonCode getClosedReasonCode()

      A ClosedReasonCode may optionally be set as a field on an Interaction. If it has been set, this method retrieves it.
      Returns:
        the ClosedReasonCode, if any, set on the Interaction

    - #### getIntrinsics

          java.util.List<IntrinsicI> getIntrinsics()
                                            throws ObjectInvalidException

      A list of `IntrinsicI` objects that provide additional information about the contact that this `InteractionI` object is associated with.
      Returns:
        a list of `IntrinsicI objects`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### isMonitored

          boolean isMonitored()
                       throws ObjectInvalidException

      Returns:
        `true` if this `InteractionI` is being observed by a supervisor (see `MonitoredInteractionI.observe()`)
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### isMultimedia

          boolean isMultimedia()
                        throws ObjectInvalidException

      Returns:
        `true` if the `InteractionI` has a multimedia `ContactType`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getParticipationReason

          StateReason getParticipationReason()
                                      throws ObjectInvalidException

      Participation reason can be used to determine how a `UserI` is participating in a contact.

      The participation reason is a subset of `StateReason`. The possible values for participation reason are;

      - `StateReason.Observe`
      - `StateReason.BargeIn`
      - `StateReason.Whisper`
      - `StateReason.Default`

      This property is only relevant for `InteractionI` objects that are created as a result of a `UserI` with `Role.Supervisor` invoking a supervisor operation on a `MonitoredInteractionI`. For example if a supervisor invokes `MonitoredInteractionI.observe()`, an interaction will be created representing the observe participation of the Supervisor on the contact.

      If no participation reason is set, this property will return `StateReason.Default`.

      Returns:
        the participation `StateReason` of the `UserI` that is related to this `InteractionI` or `StateReason.Default` if no participation reason is set
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getRemoteParticipants

          java.util.List<RemoteParticipantI> getRemoteParticipants()
                                                            throws ObjectInvalidException

      Returns:
        a list of `RemoteParticipantI` objects identifying the remote participants on this `InteractionI` or an empty list if there are no remote participants yet or if this is an interaction with `ContactType.POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getResourceId

          java.lang.String getResourceId()
                                  throws ObjectInvalidException

      Identifies the `ResourceI` object that this `InteractionI` object is associated with by its identifier. The client application can retrieve the `ResourceI` object by invoking `SessionI.findResource(java.lang.String)` passing this id as the argument.
      Returns:
        the `ResourceI` identifier if available on the `InteractionI` object or `null` if it is not (for example, for `InteractionI` objects with the `ContactType.POM_Outbound`)
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getSession

          SessionI getSession()
                       throws ObjectInvalidException

      Returns:
        the `SessionI` object that this `InteractionI` object is associated with
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getSkillset

          java.lang.String getSkillset()
                                throws ObjectInvalidException

      For an `InteractionI` object representing a Contact Center contact this will return the latest skillset that the contact has been routed to. A Contact Center contact is one that is under the control of the Contact Center application script.
      Returns:
        the skillset if this interaction has been queued by the Contact Center, `null` if it has not been queued yet or is a personal interaction
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getState

          InteractionState getState()

      The current `InteractionState` of this `InteractionI` object.

      The `getStateReason()` can be queried to identify the reason that the interaction is in the current state. This property is available for access after the application has received a `NotificationType.DELETE` notification for this `InteractionI` object and will return `InteractionState.Dropped`.

      Returns:
        the current `InteractionState` of the `InteractionI`

    - #### getStateReason

          StateReason getStateReason()

      The `StateReason` that represents the cause of the latest state transition.

      This property is available for access after the application has received a `NotificationType.DELETE` notification for this `InteractionI` object.

      Returns:
        the current `StateReason` of the `InteractionI`

    - #### getUUI

          java.lang.String getUUI()
                           throws ObjectInvalidException

      Retrieves the user-user info (UUI) stored on the contact associated with this `InteractionI`. UUI is contact related data that can be transferred with a call through telephony signaling (ISDN, SIP etc).
      Returns:
        the uui data stored on the `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getUserId

          java.lang.String getUserId()
                              throws ObjectInvalidException

      Identifies the `UserI` object that this `InteractionI` object is associated with by its identifier. The client application can retrieve the `UserI` object by invoking `SessionI.findUser(java.lang.String)` passing this id as the argument.
      Returns:
        the `UserI` identifier if available on the `InteractionI` object
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getMainContactId

          java.lang.String getMainContactId()
                                     throws ObjectInvalidException

      If the Contact that this `InteractionI` is associated with was created as the result of a consult operation (transfer or conference initiate), this method provides the ID of the main contact that is associated with this consult contact.

      The contents of the contact ID string depends on the underlying service provider, therefore the application should not rely on the string being in a particular format.

      Returns:
        the contact id of the main contact or `null` if the contact that is associated with this `InteractionI` is not a consult contact
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getOriginalDestination

          java.lang.String getOriginalDestination()
                                           throws ObjectInvalidException

      The original destination address used by the caller to reach the system, sometimes referred to as the DNIS (Dialed Number Identification Service).

      The value is a string containing the phone number dialed to reach the system. If the dialed number cannot be determined by the service provider, then this property will be null.

      In most cases the original destination should be available as soon as the contact is created. However, in the rare situation where the value of the OriginalDestination property of the contact is changed following creation, changes to this property will be provided in `NotificationType.UPDATE` notifications.

      Returns:
        a string representing the original destination of the `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCustomerDetails

          CustomerDetailsI getCustomerDetails()
                                       throws ObjectInvalidException

      The `CustomerDetailsI` of the customer being dialled. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`
      Returns:
        the `CustomerDetailsI` representing the customer being dialed or null if this `InteractionI` does not have `ContactType#POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getScreenPops

          java.util.List<com.avaya.ccs.core.ScreenPop> getScreenPops()

      Get the list of `ScreenPopI`s associated with this Interaction. Screenpops are configured in CCMM Administration
      Returns:
        List of `ScreenPopI`s associated with this Interaction

    - #### getWebChatAgentLabel

          java.lang.String getWebChatAgentLabel()
                                         throws ObjectInvalidException

      The Webchat label of the `UserI` who received is processing this contact. If this contact isn't a {WebChatMediaI} contact, then this will be null
      Returns:
        the Webchat label associated with the current agent
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getWebChatCustomerConnected

          boolean getWebChatCustomerConnected()
                                       throws ObjectInvalidException

      A customer in a web chat may temporarily lose their connection, for example if their internet connection drops In this case, an Interaction Update will be sent to the client with WebChatCustomerConnected set to `false` If this contact isn't a {WebChatMediaI} contact, then this will be null
      Returns:
        `false` if the customer on a web chat has lost their connection. Otherwise returns `true`.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getAgentNotes

          java.util.List<java.lang.String> getAgentNotes()
                                                  throws ObjectInvalidException

      The agent notes stored on the `InteractionI` object. To ensure the `InteractionI` object has the most up to date agent notes, invoke `refreshAgentNotes()` which will force an `NotificationType.UPDATE` notification if the agent notes on the server have changed. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`.
      Returns:
        a list of agent notes. an empty list is returned if there are no agent notes on the `InteractionI` object or if this `InteractionI` object does not have `ContactType.POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getWrapupTimer

          int getWrapupTimer()
                      throws ObjectInvalidException

      Wrapup time is the maximum time administered on the POM server that an interaction should remain in `InteractionState.Wrapup`.

      This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`.

      If this property returns a value greater than 0, it is the responsibility of the client application to implement a timer based on this administered time. The timer should be started when the interaction enters `InteractionState.Wrapup`. The client application should automatically wrapup the interaction if the wrapup timer expires and the interaction has not already been wrapped up.

      If the interaction is not in `InteractionState.Wrapup`, this property will return -1. If this interaction does not have `ContactType.POM_Outbound`, then this property will return -1.

      Returns:
        time in seconds that an `InteractionI` can remain in `InteractionState.Wrapup`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getPreviewTimer

          int getPreviewTimer()
                       throws ObjectInvalidException

      Preview timer is the maximum time administered on the POM server that an interaction should remain in `InteractionState.Preview` before dialing.

      This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound` and is only relevant for preview campaigns (identified by an interaction created in `InteractionState.Preview`).

      If this property returns a value greater than 0, it is the responsibility of the client application to implement a timer based on this administered time. The timer should be started when the interaction enters `InteractionState.Preview` and should be stopped when the interaction enters any other `InteractionState`. The client application should automatically preview dial the default contact number (identified by `ContactNumberI.isDefault()`) if the preview time is exceeded without a dial.

      If the interaction enters `InteractionState.Preview` and this property returns 0, then the client application should immediately preview dial the default contact number (identified by `ContactNumberI.isDefault()`).

      If the interaction enters `InteractionState.Preview` and this property returns -1, then the client application should not start a timer and should not automatically preview dial the default contact number. This indicates that timed preview is not administered on the campaign. If this interaction does not have `ContactType.POM_Outbound` then this property will also return -1.

      Returns:
        time in seconds that an `InteractionI` can remain in `InteractionState.Preview`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCampaignName

          java.lang.String getCampaignName()
                                    throws ObjectInvalidException

      The name of the POM campaign that caused this this `InteractionI` object to be created. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`.
      Returns:
        the campaign name of this POM `InteractionI`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getAgentScriptUrl

          java.lang.String getAgentScriptUrl()
                                      throws ObjectInvalidException

      Returns:
        the URL of the agent script or `null` if this `InteractionI` object does not have `ContactType.POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getContactNumbers

          java.util.List<ContactNumberI> getContactNumbers()
                                                    throws ObjectInvalidException

      A list of `ContactNumberI` objects each representing an administered contact number for this customer. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`. This is only populated for preview interactions.
      Returns:
        a list of `ContactNumberI` objects or alternatively an empty list if there are no contact numbers or this `InteractionI` does not have `ContactType.POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getConsultDestinationTypes

          void getConsultDestinationTypes()
                                   throws ObjectInvalidException

      A list of `DestinationType` objects that define the possible argument values for the `getConsultDestinations(com.avaya.ccs.api.enums.DestinationType)` method. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getCallbackDestinationTypes

          java.util.List<DestinationType> getCallbackDestinationTypes()
                                                               throws ObjectInvalidException

      A list of `DestinationType` objects that define the possible argument values for the `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)` method. This is only relevant for `InteractionI` objects with `ContactType.POM_Outbound`.
      Returns:
        a list of `DestinationType` objects or an empty list if the `InteractionI` does not have `ContactType.POM_Outbound`
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### answer

          void answer()
               throws ObjectInvalidException

      Requests that an incoming ringing interaction be answered.

      This method may be invoked when the `InteractionI` object is in `InteractionState.Ringing` to answer the interaction. If successful, the `InteractionI` object will transition to `InteractionState.Active` and a `NotificationType.UPDATE` notification for this interaction object will be sent to the client application. If a failure occurs a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canAnswer()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Ringing`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### hold

          void hold()
             throws ObjectInvalidException

      Requests that an active interaction be placed on hold.

      This method may be invoked when the `InteractionI` object is in `InteractionState.Active` to hold the interaction. If successful, the `InteractionI` object will transition to `InteractionState.Held` and a `NotificationType.UPDATE` notification for this interaction object will be sent to the client application. If a failure occurs a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canHold()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### unhold

          void unhold()
               throws ObjectInvalidException

      Requests that a held interaction be taken off hold.

      This method may be invoked when the `InteractionI` object is in `InteractionState.Held` to hold the interaction. If successful, the `InteractionI` object will transition to `InteractionState.Active` and a `NotificationType.UPDATE` notification for this interaction object will be sent to the client application. If a failure occurs a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUnhold()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Held`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### end

          void end()
            throws ObjectInvalidException

      Requests that an interaction be ended by dropping the associated user from the contact.

      Ending the interaction may or may not cause the entire contact to be dropped. This is dependent on the implementation and the conditions present on the contact at the time of end being invoked (for example, if ending this interaction would leave only a single party left on the contact).

      If successful, a `NotificationType.DELETE` notification for this interaction object will be sent to the client application. If a failure occurs a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUnhold()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### coach

          void coach()
              throws ObjectInvalidException

      Throws:
        `ObjectInvalidException`

    - #### end

          void end(java.lang.String closeReasonCode,
                   java.lang.String closingAgentNote,
                   boolean sendTranscript)
            throws ObjectInvalidException

      Throws:
        `ObjectInvalidException`

    - #### initiateTransfer

          void initiateTransfer(java.lang.String destination)
                         throws ObjectInvalidException,
                                InvalidArgumentException

      Requests initation of a supervised transfer to the specified destination.

      If successful, the `InteractionI` object will transition to `InteractionState.Held` with `StateReason.TransferInitiated` or `StateReason.ConsultInitiated`, dependent on the service provider implementation. This interaction is known as the main interaction. A `NotificationType.UPDATE` notification for this `InteractionI` object will be sent to the client application. In addition, a `NotificationType.NEW` notification will be sent to the application containing a new `InteractionI` object that represents the consultation to the specified destination. This interaction is known as the consult interaction. This new `InteractionI` object will have the same `getAddress()` as the held interaction. If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      The new consult interaction will transition through the states in the same manner as an outgoing interaction resulting from `ResourceI.originateVoiceCall(java.lang.String, com.avaya.ccs.api.enums.ContactType)` invocation.

      The transfer can be completed by invoking either;
      - `completeTransfer()` on the main interaction
      - `completeTransfer()` on the consult interaction

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canInitiateTransfer()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.CommServerError` | A malformed destination was provided.
      `ErrorCode.DestinationBusy`
      `ErrorCode.DestinationInvalid`
      `ErrorCode.DestinationOutOfService`
      `ErrorCode.DestinationStateInvalid`
      `ErrorCode.DestinationUnreachable`
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Parameters:
        `destination` - the target of the transfer initiation
      Throws:
        `InvalidArgumentException` - if the mandatory destination argument is `null` or empty
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### initiateConference

          void initiateConference(java.lang.String destination)
                           throws ObjectInvalidException,
                                  InvalidArgumentException

      Requests initation of a conference to the specified destination.

      If successful, the `InteractionI` object will transition to `InteractionState.Held` with `StateReason.ConferenceInitiated` or `StateReason.ConsultInitiated`, dependent on the service provider implementation. This interaction is known as the main interaction. A `NotificationType.UPDATE` notification for this `InteractionI` object will be sent to the client application. In addition, a `NotificationType.NEW` notification will be sent to the application containing a new `InteractionI` object that represents the consultation to the specified destination. This interaction is known as the consult interaction. This new `InteractionI` object will have the same `getAddress()` as the held interaction. If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      The new consult interaction will transition through the states in the same manner as an outgoing interaction resulting from `ResourceI.originateVoiceCall(java.lang.String, com.avaya.ccs.api.enums.ContactType)` invocation.

      The conference can be completed by invoking either;
      - `completeConference()` on the main interaction
      - `completeConference()` on the consult interaction

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canInitiateConference()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.CommServerError` | A malformed destination was provided.
      `ErrorCode.DestinationBusy`
      `ErrorCode.DestinationInvalid`
      `ErrorCode.DestinationOutOfService`
      `ErrorCode.DestinationStateInvalid`
      `ErrorCode.DestinationUnreachable`
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Parameters:
        `destination` - the target of the conference initiation
      Throws:
        `InvalidArgumentException` - if the mandatory destination argument is `null` or empty
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### completeTransfer

          void completeTransfer()
                         throws ObjectInvalidException

      Requests completion of a supervised transfer initiated by `initiateTransfer(java.lang.String)`.

      This method can be called either on the main interaction (which the transfer was initiated from) or on the consult interaction (created as a result of `initiateTransfer(java.lang.String)`).

      If successful, the following actions will be carried out on the objects associated with the transfer operation;
      - The consult interaction transitions to `InteractionState.Active` and the main interaction transitions to `InteractionState.Held` (if they are not already in those states). `NotificationType.UPDATE` notifications for these `InteractionI` objects will be sent to the client application
      - `NotificationType.DELETE` notifications for the main and consult `InteractionI` objects will be sent to the client application.
      - If the destination of the transfer is a `UserI` in a `SessionI` then;
        - A `NotificationType.DELETE` notification for the `InteractionI` representing the destination user on the consult contact will be sent to the application in control of this `SessionI` and
        - A new `InteractionI` object will be created for the destination user representing their participation in the main contact. This interaction will be in the same `InteractionState` as the users consult interaction at the time of transfer complete. It will also have `StateReason.TransferComplete`. A `NotificationType.NEW` notification will be sent to the application in control of this `SessionI`

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. All these notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canCompleteTransfer()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in either `InteractionState.Active` or `InteractionState.Held`.
      `ErrorCode.InvalidRequest` | The interaction is not currently involved in a consultative relationship that can be completed as a transfer.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`
      `ErrorCode.TransferFeatureError`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### completeConference

          void completeConference()
                           throws ObjectInvalidException

      Requests completion of a conference that was initiated by `initiateConference(java.lang.String)`.

      This method can be called either on the main interaction (which the conference was initiated from) or on the consult interaction (created as a result of `initiateConference(java.lang.String)`).

      If successful, the following actions will be carried out on the objects associated with the conference operation;
      - The consult interaction transitions to `InteractionState.Active` and the main interaction transitions to `InteractionState.Held` (if they are not already in those states). `NotificationType.UPDATE` notifications for these `InteractionI` objects will be sent to the client application
      - A `NotificationType.DELETE` notification for the consult `InteractionI` object will be sent to the client application.
      - The main interaction transitions to `InteractionState.Active` with `StateReason.ConferenceComplete`. The list of `RemoteParticipantI` objects will be updated to include the destination. A `NotificationType.UPDATE` notification for the main `InteractionI` object will be sent to the client application.
      - If the destination of the consult is a `UserI` within a `SessionI` or if the destination of the consult (for example a Contact Center Controlled Destination Number) has added a `UserI` within a `SessionI` into the consult then;
        - A `NotificationType.DELETE` notification for the `InteractionI` representing the destination user on the consult contact will be sent to the application in control of this users `SessionI` and
        - A new `InteractionI` object will be created for the destination user representing their participation in the main contact. This interaction will be in the same `InteractionState` as the users consult interaction at the time of conference complete. It will also have `StateReason.ConferenceComplete`. A `NotificationType.NEW` notification will be sent to the application in control of this users `SessionI`

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. All these notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canCompleteConference()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in either `InteractionState.Active` or `InteractionState.Held`.
      `ErrorCode.InvalidRequest` | The interaction is not currently involved in a consultative relationship that can be completed as a conference.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`
      `ErrorCode.ConferenceFeatureError`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### joinConference

          void joinConference(InteractionI otherInteraction)
                       throws ObjectInvalidException,
                              InvalidArgumentException

      Requests that two unrelated `InteractionI` objects that share a common `UserI` be joined together bringing all parties on the two interactions into a single conference.

      These two interactions must not be related to each other from a consultative perspective (one must not be a consult of the other). One of the two interactions survives after the operation and the other interaction will be destroyed after the other parties are moved over to the surviving contact.

      If successful, the following actions will be carried out on the objects associated with the join operation;
      - A `NotificationType.DELETE` notification for the other `InteractionI` object that represents the user on the dying contact will be sent to the client application.
      - The interaction that represents user on the surviving contact transitions to `InteractionState.Active` with `StateReason.Join`. The list of `RemoteParticipantI` objects will be updated to include the destination. A `NotificationType.UPDATE` notification for the surviving `InteractionI` object will be sent to the client application.
      - If the destination of the other interaction is a `UserI` within a `SessionI` or if the destination of the other interaction (for example a Contact Center Controlled Destination Number) has added a `UserI` within a `SessionI` into the other contact then;
        - A `NotificationType.DELETE` notification for the `InteractionI` representing the destination user on the other contact will be sent to the application in control of this users `SessionI` and
        - A new `InteractionI` object will be created for the destination user representing their participation in the surviving contact. This interaction will be in the same `InteractionState` as the users interaction with the other contact at the time of conference complete. It will also have `StateReason.Join`. A `NotificationType.NEW` notification will be sent to the application in control of this users `SessionI`

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. All the notifications for this user are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canJoinConference()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in either `InteractionState.Active` or `InteractionState.Held`.
      `ErrorCode.InvalidParty` | The interaction specified by the "otherInteraction" argument is not a valid interaction for completing the join operation. Either it does not share a common communications end-point or it is already related to the current interaction (one is a consult of the other).
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Parameters:
        `otherInteraction` - the `InteractionI` object whose parties will be merged to this `InteractionI` object. this is the interaction that represents the dying contact.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory otherInteraction argument is `null`

    - #### playDTMF

          void playDTMF(java.lang.String digits)
                 throws ObjectInvalidException,
                        InvalidArgumentException

      Requests that dtmf tones be played into the media stream of the interaction. This is specific to interactions with `ContactType.Voice`.

      This method may be invoked when the interaction is in `InteractionState.Active`. If successful, no response or notification is received. If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canPlayDTMF()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported` | The interaction does not represent a voice contact.
      `ErrorCode.OutOfService`

      Parameters:
        `digits` - the set of tones to generate in the media of the voice contact. valid tones are represented by the characters 0..9, A..D, * and #. Note that not all switching platforms support the tones for A through D. Any unsupported characters in the digit string are simply ignored.
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the digits argument is `null` or an empty string

    - #### emergency

          void emergency()
                  throws ObjectInvalidException

      Requests invocation of the emergency feature on this interaction.

      This operation will single step conference the user's supervisor into the Contact that this `InteractionI` represents.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canEmergency()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getActivityCodes

          void getActivityCodes()
                         throws ObjectInvalidException

      Requests retrieval of the administered activity codes in the Contact Center for this `InteractionI` object.

      This is only relevant for an `InteractionI` object that represents a Contact Center contact (that is a contact that has been processed by the Contact Center application script and is queued to an Agent). This method returns immediately and an asynchronous retrieval of the codes takes place.

      If successful, a `NotificationType.RESPONSE` notification will be sent to the client application. The `ResponseData` object in the received `NotificationEventI` object contains the data requested. The `ResponseData` object will be an `instanceof` `CodeListI` in this case. To access the list, use the `instanceof` operator to compare the `ResponseData` against the `CodeListI` type and cast it to an instance of `CodeListI`. Invoking `CodeListI.getCodeType()` will return `CodeType.Activity`. A list of `ContactCenterCodeI` objects representing activity codes can be accessed by invoking `CodeListI.getCodes()`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      These notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canGetActivityCodes()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.SecureCommunicationFailure`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### setActivityCode

          void setActivityCode(java.lang.String code)
                        throws ObjectInvalidException,
                               InvalidArgumentException

      Requests that an activity code be set on the contact that this `InteractionI` object represents.

      Activity codes are used to report what type of work is being conducted on the contact by the `UserI` that represents a Contact Center Agent. The user is free to change the activity code at any time during the handling of the contact if the type of work changes during the life of the contact. Note that activity codes can only be set on contacts associated with a skillset (see `getSkillset()`).

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the activity code that was set. This can be retrieved by invoking `getActivityCode()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canSetActivityCode()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState`
      `ErrorCode.InvalidParameter` | The "code" parameter specifies an invalid activity code (e.g. contains non-numeric characters).
      `ErrorCode.InvalidRequest` | Attempted to set an activity code on a non-skillset contact.
      `ErrorCode.OutOfService`
      `ErrorCode.ParameterOutOfRange` | The "code" parameter specifies an activity code that is too long.

      Parameters:
        `code` - the activity code to set
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the code argument is `null` or an empty string

    - #### getCustomFields

          void getCustomFields()
                        throws ObjectInvalidException

      Requests retrieval of the custom fields for this `InteractionI` object.

      This is only relevant for an `InteractionI` object that represents a Contact Center contact (that is a contact that has been processed by the Contact Center application script and is queued to an Agent). This method returns immediately and an asynchronous retrieval of the fields takes place.

      If successful, a `NotificationType.RESPONSE` notification will be sent to the client application. The `ResponseData` object in the received NotificationEventI object contains the data requested. The `ResponseData` object will be an `instanceof` `CustomFieldListI` in this case. To access the list, use the instanceof operator to compare the `ResponseData` against the `CustomFieldListI` type and cast it to an instance of `CustomFieldListI`. Invoking `CustomFieldListI.getCustomFields()` will return a list of `CustomFieldI` objects representing custom fields.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      These notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canGetCustomFields()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.SecureCommunicationFailure`

      Throws:
        `ObjectInvalidException`

    - #### getIntrinsic

          IntrinsicI getIntrinsic(java.lang.String name)
                           throws ObjectInvalidException,
                                  InvalidArgumentException

      Performs a lookup on the list returned from `getIntrinsics()` for an `IntrinsicI` object that matches the name supplied.
      Parameters:
        `name` - the name of the intrinsic to return
      Returns:
        an `IntrinsicI` object that matches the name argument or `null` if no intrinsic matches the name
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the name argument is `null` or an empty string

    - #### setIntrinsic

          void setIntrinsic(java.lang.String name,
                            java.lang.String value)
                     throws ObjectInvalidException,
                            InvalidArgumentException

      Requests that the value of an existing intrinsic be modified or a new intrinsic be added to a contact.

      The current intrinsics can be accessed through `getIntrinsics()`.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain a list of `IntrinsicI` objects with the modified or added intrinsic. This can be retrieved by invoking `getIntrinsics()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.ReadonlyIntrinsic`

      Parameters:
        `name` - the name of the intrinsic to add or change
        `value` - the value to set on the specified intrinsic
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the name argument is `null` or an empty string

    - #### removeIntrinsic

          void removeIntrinsic(java.lang.String name)
                        throws ObjectInvalidException,
                               InvalidArgumentException

      Requests that an intrinsic specified by a name be removed from the contact.

      The current intrinsic names and values can be determined through `getIntrinsics()`

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain an updated list of `IntrinsicI` objects. This can be retrieved by invoking `getIntrinsics()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.ReadonlyIntrinsic`

      Parameters:
        `name` - the name of the intrinsic to remove
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the name argument is `null` or an empty string

    - #### setData

          void setData(DataI data)
                throws ObjectInvalidException,
                       InvalidArgumentException

      Requests that attached data be set on the contact that associated with this `InteractionI` object. A `DataI` object can be created by invoking one of the three static factory methods;
      - `DataI.create(String)`
      - `DataI.create(byte[])`
      - `DataI.create(java.util.Map)`

      The current value of the contact's attached data is available via `getData()`. Setting new data on the contact associated with this interaction will overwrite any attached data currently existing on the contact.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated `DataI` object. This can be retrieved by invoking `getData()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.ParameterOutOfRange` | The size of the data being set exceeds the maximum allowed.

      Parameters:
        `data` - a `DataI` object representing the new attached data the application wishes to set on the interactions contact
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the `DataI` argument is `null`

    - #### removeData

          void removeData()
                   throws ObjectInvalidException

      Requests that the attached data currently set on the contact that associated with this `InteractionI` object be removed.

      The current value of the contact's attached data is available via `getData()`.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and `InteractionI#getData` will now return `null`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### setUUI

          void setUUI(java.lang.String uui)
               throws ObjectInvalidException,
                      InvalidArgumentException

      Requests that new user-user-info (UUI) be set on the contact associated with this `InteractionI` object.

      Binary data can be set as UUI on the contact as long as it is passed to this method as a base-64 (radix-64) encoded string. The current value of the contact's UUI is available via `getUUI()`.

      To clear UUI that is currently on the contact, an empty string can be passed to this method.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated uui. This can be retrieved by invoking `getUUI()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canSetUUI()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.OperationNotSupported`

      Parameters:
        `uui` - the new uui data to be set on the interactions contact
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the uui argument is `null`

    - #### addToDNC

          void addToDNC()
                 throws ObjectInvalidException

      Requests that the `ContactNumberI` associated with this `InteractionI` object be added to the Do Not Call (DNC) list on the POM server.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canAddToDnc()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### addAgentNote

          void addAgentNote(java.lang.String note)
                     throws ObjectInvalidException,
                            InvalidArgumentException

      Requests that an agent note be added to the contact associated with this `InteractionI` within the campaign.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated agent notes. This can be retrieved by invoking `getAgentNotes()` on the updated object. If another `UserI` (for example, a second Agent) is a participant in this POM contact also, they must invoke `refreshAgentNotes()` to get the latest updated agent notes.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canAddAgentNote()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`

      Parameters:
        `note` - the note to add to the contact
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the note argument is null or empty

    - #### refreshAgentNotes

          void refreshAgentNotes()
                          throws ObjectInvalidException

      Requests that the agent notes on the contact associated with this `InteractionI` be refreshed.

      If another `UserI` (for example, a second Agent) is also on this POM contact and they have added agent notes, then the `UserI` associated with this `InteractionI` should invoke this method to receive the most up to date agent notes (any agent notes added by the second Agent).

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated agent notes. This can be retrieved by invoking `getAgentNotes()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canRefreshAgentNotes()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.SecureCommunicationFailure`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getConsultDestinations

          void getConsultDestinations(DestinationType consultDestType)
                               throws ObjectInvalidException,
                                      InvalidArgumentException

      Requests the `DestinationI` objects of a specified `DestinationType` that are available for the user to consult with.

      A list of valid values for `DestinationType` for consult can be retrieved by invoking `getConsultDestinationTypes()`.

      If successful, a `NotificationType.RESPONSE` notification will be sent to the client application. The `ResponseData` object in the received `NotificationEventI` object contains the data requested. The `ResponseData` object will be an `instanceof` `DestinationListI` in this case. To access the list, use the `instanceof` operator to compare the `ResponseData` against the `DestinationListI` type and cast it to an instance of `DestinationListI`. Invoking `DestinationListI.getListType()` will return `DestinationListType.Consult`. A list of `DestinationI` objects representing the consult destinations can be accessed by invoking `DestinationListI.getDestinations()`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      These notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canGetConsultDestinations()` capability method to determine when it is possible to invoke this method.

      Parameters:
        `consultDestType` - the type of `DestinationI` objects that are to be returned
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationType` argument is `null` or `DestinationType.Unknown`

    - #### getCallbackDestinations

          void getCallbackDestinations(DestinationType callbackDestType)
                                throws ObjectInvalidException,
                                       InvalidArgumentException

      Requests the `DestinationI` objects of a specified `DestinationType` that are available for the user to setup as the destination for a callback.

      A list of valid values for `DestinationType` for callback can be retrieved by invoking `getCallbackDestinationTypes()`.

      If successful, a `NotificationType.RESPONSE` notification will be sent to the client application. The `ResponseData` object in the received `NotificationEventI` object contains the data requested. The `ResponseData` object will be an `instanceof` `DestinationListI` in this case. To access the list, use the `instanceof` operator to compare the `ResponseData` against the `DestinationListI` type and cast it to an instance of `DestinationListI`. Invoking `DestinationListI.getListType()` will return `DestinationListType.Callback`. A list of `DestinationI` objects representing the callback destinations can be accessed by invoking `DestinationListI.getDestinations()`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      These notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canGetCallbackDestinations()` capability method to determine when it is possible to invoke this method.

      Parameters:
        `callbackDestType` - the type of `DestinationI` objects that are to be returned
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationType` argument is `null` or `DestinationType.Unknown`

    - #### requestDispositionCodes

          void requestDispositionCodes()
                                throws ObjectInvalidException

      Requests retrieval of the administered disposition codes. Disposition codes are also known as as 'Closed reason' codes or 'Completion' codes.

      Disposition Codes are only relevant for Multimedia `InteractionI` objects (i.e. those that extend `MediaI`, and for `ContactType.POM_Outbound` contacts.. For Multimedia contacts, Disposition codes are called Closed Reason codes and are administered in the CCMM Administration tool. In POM, Disposition codes are known as completion codes and are administered on the POM server).

      This method returns immediately and an asynchronous retrieval of the disposition codes takes place.

      If successful, a `NotificationType.RESPONSE` notification will be sent to the client application. The `ResponseData` object in the received `NotificationEventI` object contains the data requested. The `ResponseData` object will be an `instanceof` `CodeListI` in this case. To access the list, use the `instanceof` operator to compare the `ResponseData` against the `CodeListI` type and cast it to an instance of `CodeListI`. Invoking `CodeListI.getCodeType()` will return `CodeType.Disposition`. A list of `ContactCenterCodeI` objects representing disposition codes can be accessed by invoking `CodeListI.getCodes()`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      These notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canGetDispositionCodes()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.SecureCommunicationFailure`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### requestAutoPhrases

          void requestAutoPhrases()
                           throws ObjectInvalidException

      Send the request to CCS for `AutoPhrasesI`. See {link AutoPhrasesI} for more details.
      Throws:
        `ObjectInvalidException`

    - #### requestPagePushUrls

          void requestPagePushUrls()
                            throws ObjectInvalidException

      Send the request to CCS for `PagePushUrlListI`. See {link PagePushUrlListI} for more details.
      Throws:
        `ObjectInvalidException`

    - #### requestCustomerHistory

          void requestCustomerHistory()
                               throws ObjectInvalidException

      Send the request to the server for the list of previous Interactions for this customer. See `CustomerHistoryI` for more details
      Throws:
        `ObjectInvalidException` - if the InteractionI object has been deleted if the `InteractionI` object has been deleted

    - #### requestCustomerInteractionMedia

          void requestCustomerInteractionMedia(java.lang.String contactId)

      Requests the media (e.g. email or webchat transcript etc.) for a given Customer History item as described in `InteractionI.requestCustomerHistory`}
      Parameters:
        `contactId` - - the contact ID of the media object to be requested

    - #### previewDial

          void previewDial(ContactNumberI contactNumber)
                    throws ObjectInvalidException,
                           InvalidArgumentException

      Requests that a `ContactNumberI` administered for the customer in the preview campaign be dialled.

      A list of `ContactNumberI` objects can be retrieved from the `getContactNumbers()`. The `InteractionI#previewDial` method is only valid for interactions with `ContactType.POM_Outbound`.

      If successful, the `InteractionI` object will tranisition to `InteractionState.Dialing`. A `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated state. This can be retrieved by invoking `getState()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canPreviewDial()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Parameters:
        `contactNumber` - the `ContactNumberI` representing the party to dial
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `ContactNumberI` argument is null

    - #### previewDialFreeForm

          void previewDialFreeForm(java.lang.String destination)
                            throws ObjectInvalidException,
                                   InvalidArgumentException

      Requests that a contact number not administered for the customer in the preview campaign be dialled.

      The `InteractionI#previewDialFreeForm` method is only valid for interactions with `ContactType.POM_Outbound`.

      If successful, the `InteractionI` object will tranisition to `InteractionState.Dialing`. A `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated state. This can be retrieved by invoking `getState()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canPreviewDialFreeForm()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Parameters:
        `destination` - the manually entered target destination for the preview dial
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory argument is `null` or empty

    - #### previewCancel

          void previewCancel()
                      throws ObjectInvalidException

      Requests that the preview of a POM contact associated with this `InteractionI` object be cancelled.

      The `previewCancel()` method is only valid for interactions with `ContactType.POM_Outbound`.

      If successful, the `InteractionI` object will tranisition to `InteractionState.Wrapup`. A `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated state. This can be retrieved by invoking `getState()` on the updated object. The interaction should now be dispositioned by invoking `wrapup()` or `wrapupWithCode(com.avaya.ccs.api.ContactCenterCodeI)`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canPreviewCancel()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### redial

          void redial(ContactNumberI contact)
               throws ObjectInvalidException,
                      InvalidArgumentException

      Requests that the `ContactNumberI` of the preview campaign be redialled.

      The `redial(com.avaya.ccs.api.ContactNumberI)` method is only valid for interactions with `ContactType.POM_Outbound`.

      If successful, the `InteractionI` object will tranisition to `InteractionState.Dialing`. A `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated state. This can be retrieved by invoking `getState()` on the updated object. The interaction should now be dispositioned by invoking `wrapup()` or `wrapupWithCode(com.avaya.ccs.api.ContactCenterCodeI)`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canPreviewCancel()` capability method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Parameters:
        `contact` - the `ContactNumberI` representing the party to dial
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `ContactNumberI` argument is null

    - #### wrapup

          void wrapup()
               throws ObjectInvalidException

      Requests that the POM contact associated with this `InteractionI` object be wrapped up.

      The `wrapup()` method is only valid for interactions with `ContactType.POM_Outbound`. This can only be invoked when an interaction is in `InteractionState.Wrapup`. This state occurs when a preview interaction is cancelled or an interaction has been ended.

      The purpose of `InteractionState.Wrapup` is to provide the user processing a POM contact with time to complete any work associated with the contact after it has ended before being queued the next contact in the campaign. Once the work is completed, this method should be invoked.

      The `getWrapupTimer()` returns the maximum time administered on the POM server that an interaction should remain in `InteractionState.Wrapup`. It is the responsibility of the client application to implement a timer based on this administered time. The timer should be started when the interaction enters `InteractionState.Wrapup`. The wrapup timer can be reset back to the maximum time by invoking `extendWrapup()`. The wrapup timer can be extended a maximum number of times (administered on the POM server). When the maximum number of extensions is exceeded, `canExtendWrapup()` will return `false`. If the wrapup timer expires without the interaction being wrapped up, it is the responsibility of the client application to automatically wrapup the interaction.

      If successful, a `NotificationType.DELETE` notification will be sent to the application for this `InteractionI` object. If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canWrapup()`. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState`
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### wrapupWithCode

          void wrapupWithCode(ContactCenterCodeI completionCode)
                       throws ObjectInvalidException,
                              InvalidArgumentException

      Requests that the POM contact associated with this `InteractionI` object be wrapped up with a valid `ContactCenterCodeI` object representing a POM completion code.

      The `wrapupWithCode(com.avaya.ccs.api.ContactCenterCodeI)` method is only valid for interactions with `ContactType.POM_Outbound`. This can be invoked when an interaction is in `InteractionState.Wrapup` or `InteractionState.Active`.

      The purpose of `InteractionState.Wrapup` is to provide the user processing a POM contact with time to complete any work associated with the contact after it has ended before being queued the next contact in the campaign. Once the work is completed, this method should be invoked.

      The `getWrapupTimer()` returns the maximum time administered on the POM server that an interaction should remain in `InteractionState.Wrapup`. It is the responsibility of the client application to implement a timer based on this administered time. The timer should be started when the interaction enters `InteractionState.Wrapup`. The wrapup timer can be reset back to the maximum time by invoking `extendWrapup()`. The time can be extended a maximum number of times (administered on the POM server). When the maximum number of extensions is exceeded, `canExtendWrapup()` will return `false`.

      The purpose of the `wrapupWithCode(com.avaya.ccs.api.ContactCenterCodeI)` method is to allow a user processing a POM contact categorize the type of work associated with the contact they have processed or are processing. This categorization is defined by `ContactCenterCodeI` objects of type `CodeType.Disposition` which are adminmistered as completion codes on the POM server.

      If successful, a `NotificationType.DELETE` notification will be sent to the application for this `InteractionI` object. If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canWrapupWithCode()` and by obtaining the list of valid disposition codes by invoking `requestDispositionCodes()`. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState`
      `ErrorCode.OutOfService`

      Parameters:
        `completionCode` - the `ContactCenterCodeI` object that represents the completion code
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `ContactCenterCodeI` argument is null or not of type `CodeType.Disposition`

    - #### extendWrapup

          void extendWrapup()
                     throws ObjectInvalidException

      Requests that the time allowed to wrapup the `InteractionI` object be extended.

      The `extendWrapup()` method is only valid for interactions with `ContactType.POM_Outbound`. See `wrapup()` for information on wrapup and wrapup timers.

      The time can be extended a maximum number of times (administered on the POM server). When the number of extension is exceeded, `canExtendWrapup()` will return `false`. At this point the client application should automatically wrapup the `InteractionI` to prevent `InteractionI` objects remaining in `InteractionState.Wrapup` for long periods of time.

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### createCallback

          void createCallback(DestinationI callbackDestination,
                              ContactNumberI contactNumber,
                              java.lang.String callbackTime,
                              java.lang.String callbackExpiryTime,
                              java.lang.String callbackNote)
                       throws ObjectInvalidException,
                              InvalidArgumentException

      Requests that the customer on this `InteractionI` be called back on a known `ContactNumberI` (administered on the POM server) by a callback `DestinationI` at a specified time.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of available callback destinations can be retrieved from `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)`. The callback `DestinationI` selected from this list is the destination administered in the POM server that will process the callback to the customer (for example, this could be a campaign or an agent). A list of `ContactNumberI` objects for this customer can be retrieved from `getContactNumbers()`.

      If successful, a callback will be scheduled for the time specified. The final `DestinationI` of the callback will directly or indirectly (callback through a campaign) be a `UserI` within a `SessionI`. At the specified callback time, a new `InteractionI` object will be created for this `UserI` with the `StateReason.Callback`. The callback notes parameter will be received as an agent note on the new callback interaction. Please see `getAgentNotes()` for more details on agent notes. A `NotificationType.NEW` notification for this `InteractionI` object will be sent to the application that is in control of this users `SessionI`. This notification will be sent to this application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error. This notification will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by;
      - querying the `canCreateCallback()` capability method.
      - obtaining the list of valid destinations by invoking `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)`.
      - obtaining the list of valid contact numbers for the customer by invoking `getContactNumbers()`.

      If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState`
      `ErrorCode.OutOfService`

      Parameters:
        `callbackDestination` - the `DestinationI` selected that will process the callback
        `contactNumber` - the `ContactNumberI` that represents the customer's number that will be dialled in the callback
        `callbackTime` - the UTC time that the callback will occur at (for example, 2016/05/10 02:30)
        `callbackExpiryTime` - the time in minutes after which the callback will expire
        `callbackNote` - an agent note that will be added to the callback interaction when received by the callback destination
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationI` or `ContactNumberI` arguments are `null`

    - #### createCallback

          void createCallback(DestinationI callbackDestination,
                              java.lang.String externalNumber,
                              java.lang.String callbackTime,
                              java.lang.String callbackExpiryTime,
                              java.lang.String callbackNote)
                       throws ObjectInvalidException,
                              InvalidArgumentException

      Requests that the customer on this `InteractionI` be called back on an unknown number (not administered on the POM server) by a callback `DestinationI` at a specified time.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of available callback destinations can be retrieved from `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)`. The callback `DestinationI` selected from this list is the destination administered in the POM server that will process the callback to the customer (for example, this could be a campaign or an agent).

      If successful, a callback will be scheduled for the time specified. The final `DestinationI` of the callback will directly or indirectly (callback through a campaign) be a `UserI` within a `SessionI`. At the specified callback time, a new `InteractionI` object will be created for this `UserI` with the `StateReason.Callback`. The callback notes parameter will be received as an agent note on the new callback interaction. Please see `getAgentNotes()` for more details on agent notes. A `NotificationType.NEW` notification for this `InteractionI` object will be sent to the application that is in control of this users `SessionI`. This notification will be sent to this application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error. This notification will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by;
      - querying the `canCreateCallback()` capability method.
      - obtaining the list of valid destinations by invoking `getCallbackDestinations(com.avaya.ccs.api.enums.DestinationType)`.

      If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState`
      `ErrorCode.OutOfService`

      Parameters:
        `callbackDestination` - the `DestinationI` selected that will process the callback
        `externalNumber` - the number to use for the customers callback, this number is not known or administered on the POM server
        `callbackTime` - the UTC time that the callback will occur at (for example, 2016/05/10 02:30)
        `callbackExpiryTime` - the time in minutes after which the callback will expire
        `callbackNote` - an agent note that will be added to the callback interaction when received by the callback destination
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the `DestinationI` argument is `null` or if the external number argument is `null` or an empty string

    - #### initiateTransferToDestination

          void initiateTransferToDestination(DestinationI destination)
                                      throws ObjectInvalidException,
                                             InvalidArgumentException

      Requests initiation of a consult transfer to the specified `DestinationI` administered on the POM server.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of available consult destinations can be retrieved from `getConsultDestinations(com.avaya.ccs.api.enums.DestinationType)`. The callback `DestinationI` selected from this list is the destination administered in the POM server that will process the callback to the customer (for example, this could be a campaign or an agent).

      If successful, the following actions will occur;
      - This `InteractionI` object (known as the main interaction) will transition to `InteractionState.Held` with `StateReason.ConsultInitiated`. A `NotificationType.UPDATE` notification for this `InteractionI` object will be sent to the client application.
      - A new `InteractionI` object (known as the consult interaction) that represents the consultation to the specified `DestinationI`. A `NotificationType.NEW` notification for this new `InteractionI` object will be sent to the application. This `InteractionI` object will have the same `getAddress()` as the held interaction. If the target `DestinationI` is currently busy, then this new `InteractionI` will be in `InteractionState.Pending` until the destination becomes available else it will be in `InteractionState.Active` .
      - If the `DestinationI` is a `UserI` in a `SessionI`, then the following actions will occur;
        - A new `InteractionI` object for the destination user on the consult will be created. If the user is currently busy then this interaction will be in `InteractionState.Pending` with `StateReason.ConsultInitiated` else it will be in `InteractionState.Active` with `StateReason.ConsultInitiated`. A `NotificationType.NEW` notification for this new `InteractionI` object will be sent to the application that is in control of this session.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      The transfer can be completed by invoking `completeTransfer()` on the consult interaction. The consult interaction must be in `InteractionState.Active` to complete the transfer.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canInitiateTransferToDestination()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.CommServerError`
      `ErrorCode.DestinationBusy`
      `ErrorCode.DestinationInvalid`
      `ErrorCode.DestinationOutOfService`
      `ErrorCode.DestinationStateInvalid`
      `ErrorCode.DestinationUnreachable`
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Parameters:
        `destination` - the target `DestinationI` of the consultative transfer
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationI` argument is `null`

    - #### transferToDestination

          void transferToDestination(DestinationI destination)
                              throws ObjectInvalidException,
                                     InvalidArgumentException

      Transfer to a destination. Used for email transfers.
      Parameters:
        `destination` - the target `DestinationI` of the consultative transfer
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationI` argument is `null`

    - #### initiateConferenceToDestination

          void initiateConferenceToDestination(DestinationI destination)
                                        throws ObjectInvalidException,
                                               InvalidArgumentException

      Requests initation of a consult conference to the specified `DestinationI` administered on the POM server.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of available consult destinations can be retrieved from `getConsultDestinations(com.avaya.ccs.api.enums.DestinationType)`. The callback `DestinationI` selected from this list is the destination administered in the POM server that will process the callback to the customer (for example, this could be a campaign or an agent).

      If successful, the following actions will occur;
      - This `InteractionI` object (known as the main interaction) will transition to `InteractionState.Held` with `StateReason.ConsultInitiated`. A `NotificationType.UPDATE` notification for this `InteractionI` object will be sent to the client application.
      - A new `InteractionI` object (known as the consult interaction) that represents the consultation to the specified `DestinationI`. A `NotificationType.NEW` notification for this new `InteractionI` object will be sent to the application. This `InteractionI` object will have the same `getAddress()` as the held interaction. If the target `DestinationI` is currently busy, then this new `InteractionI` will be in `InteractionState.Pending` until the destination becomes available else it will be in `InteractionState.Active` .
      - If the `DestinationI` is a `UserI` in a `SessionI`, then the following actions will occur;
        - A new `InteractionI` object for the destination user on the consult will be created. If the user is currently busy then this interaction will be in `InteractionState.Pending` with `StateReason.ConsultInitiated` else it will be in `InteractionState.Active` with `StateReason.ConsultInitiated`. A `NotificationType.NEW` notification for this new `InteractionI` object will be sent to the application that is in control of this session.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application. These notifications are sent to the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      The conference can be completed by invoking `completeConference()` on the consult interaction. The consult interaction must be in `InteractionState.Active` to complete the conference.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canInitiateConferenceToDestination()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.CommServerError`
      `ErrorCode.DestinationBusy`
      `ErrorCode.DestinationInvalid`
      `ErrorCode.DestinationOutOfService`
      `ErrorCode.DestinationStateInvalid`
      `ErrorCode.DestinationUnreachable`
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in `InteractionState.Active`.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`

      Parameters:
        `destination` - the target `DestinationI` of the consultative conference
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `DestinationI` argument is `null`

    - #### updateCustomerEmail

          void updateCustomerEmail(EmailListEntryI emailEntry)
                            throws ObjectInvalidException,
                                   InvalidArgumentException

      Requests update of the email information that is associated with the customer on the `InteractionI`.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of the current `EmailListEntryI` objects that are associated with this customer can be accessed by retrieving `getCustomerDetails()` and then `CustomerDetailsI.getEmailList()`. To modify the email address, the client application should invoke `EmailListEntryI.setEmailAddress(java.lang.String)` with the updated email address and then invoke this method passing in the modified `EmailListEntryI` object.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated `EmailListEntryI` object. This can be retrieved by invoking `getCustomerDetails()` and then `CustomerDetailsI.getEmailList()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUpdateCustomerEmail()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.InvalidInteractionState`

      Parameters:
        `emailEntry` - the modified `EmailListEntryI` object to be updated on the server
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `EmailListEntryI` argument is `null`

    - #### updateCustomerPhone

          void updateCustomerPhone(PhoneListEntryI phoneEntry)
                            throws ObjectInvalidException,
                                   InvalidArgumentException

      Requests update of phone information that is associated with the customer on the `InteractionI`.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of the current `PhoneListEntryI` objects that are associated with this customer can be accessed by retrieving `getCustomerDetails()` and then `CustomerDetailsI.getPhoneList()`. To modify details associated with the phone entry, the client application should call the appropriate setter methods on `PhoneListEntryI` object and then invoke this method passing in the modified `PhoneListEntryI` object.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated `PhoneListEntryI` object. This can be retrieved by invoking `getCustomerDetails()` and then `CustomerDetailsI.getPhoneList()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUpdateCustomerPhone()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.InvalidInteractionState`

      Parameters:
        `phoneEntry` - the modified `PhoneListEntryI` object to be updated on the server
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `PhoneListEntryI` argument is `null`

    - #### updateCustomerAddress

          void updateCustomerAddress(PostalAddressListEntryI addressEntry)
                              throws ObjectInvalidException,
                                     InvalidArgumentException

      Requests update of the postal address information that is associated with the customer on the `InteractionI`.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      A list of the current `PostalAddressListEntryI` objects that are associated with this customer can be accessed by retrieving `getCustomerDetails()` and then `CustomerDetailsI.getPostalAddressList()`. To modify details associated with the postal address entry, the client application should call the appropriate setter methods on the `PostalAddressListEntryI` object and then invoke this method passing in the modified `PostalAddressListEntryI` object.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated `PostalAddressListEntryI` object. This can be retrieved by invoking `getCustomerDetails()` and then `CustomerDetailsI.getPostalAddressList()` on the updated object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUpdateCustomerAddress()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.InvalidInteractionState`

      Parameters:
        `addressEntry` - the modified `PostalAddressListEntryI` object to be updated on the server
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the mandatory `PostalAddressListEntryI` argument is `null`

    - #### updateCustomerName

          void updateCustomerName(java.lang.String title,
                                  java.lang.String firstName,
                                  java.lang.String lastName)
                           throws ObjectInvalidException,
                                  InvalidArgumentException

      Requests update of the name of the customer on the `InteractionI`.

      This method is only valid for interactions with `ContactType.POM_Outbound`.

      The customer name can be accessed by retrieving `getCustomerDetails()` and then `CustomerDetailsI.getTitle()`, `CustomerDetailsI.getFirstName()` and `CustomerDetailsI.getLastName()`. To modify any of the name properties of the customer, the client application can pass appropriate arguments to this method.

      If successful, a `NotificationType.UPDATE` notification will be sent to the application and the updated `InteractionI` object will contain the updated customer name. This can be retrieved by invoking `getCustomerDetails()` on the updated object and then `CustomerDetailsI.getTitle()`, `CustomerDetailsI.getFirstName()` or `CustomerDetailsI.getLastName()`.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canUpdateCustomerName()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.OutOfService`
      `ErrorCode.InvalidInteractionState`

      Parameters:
        `title` - the title of the customer to update
        `firstName` - the first name of the customer to update
        `lastName` - the last name of the customer to update
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if all of the arguments are either `null` or empty

    - #### endConference

          void endConference()
                      throws ObjectInvalidException

      Requests that a three participant conference represented by this `InteractionI` be ended.

      This method is only valid for interactions with `ContactType.POM_Outbound`. This method is only available for the conference owner.

      If successful, the third party is dropped out of the conference bring this back to a two party interaction between the conference owner and the customer. A `NotificationType.UPDATE` notification will be sent to the application with the updated `InteractionI` object.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canEndConference()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in either `InteractionState.Active`.
      `ErrorCode.InvalidRequest` | The interaction is not currently involved in a consultative relationship that can be completed as a conference.
      `ErrorCode.OperationNotSupported`
      `ErrorCode.OutOfService`
      `ErrorCode.ConferenceFeatureError`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### changeConferenceOwner

          void changeConferenceOwner()
                              throws ObjectInvalidException

      Requests that the owner of the conference be changed.

      This method is only valid for interactions with `ContactType.POM_Outbound`. This method is only valid for the `UserI` that is the current conference owner. It is also only valid if there is a `UserI` representing another agent on this conference.

      If successful, the `UserI` representing the other agent on the three party conference becomes the conference owner. A `NotificationType.UPDATE` notification will be sent to the application with the updated `InteractionI` object which will have reduced capabilities for this user on the conference (due to relinquishing ownership of the conference). If a conference owner wishes to drop themselves out of a three party conference via `end()`, they must change conference owner first.

      If a failure occurs, a `NotificationType.ERROR` notification will be sent to the client application with the `ErrorI` object containing details on the cause of the error.

      All these notifications will be sent to the application via the `InteractionListenerI` implementation that is supplied by the application as an argument to the `SessionI.openInteractions(com.avaya.ccs.api.InteractionListenerI)` method.

      Possible errors for this method are listed below. Most errors can be prevented by querying the `canChangeConferenceOwner()` capability method to determine when it is possible to invoke this method. If the meaning of the error code in the context of this method differs significantly from the generic description given for that error code, then a context-specific meaning is given.

      Possible Errors
      Error Codes | Context Specific Meaning / Notes
      --- | ---
      `ErrorCode.InvalidInteractionState` | The interaction is not currently in either `InteractionState.Active`.
      `ErrorCode.OutOfService`

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### openMedia

          void openMedia()
                  throws ObjectInvalidException

      Open the `MediaI` channel for this Interaction.

      `MediaI` objects convey the media for a contact; usually text-based contacts. Examples are web chat messages and email content. For example, a typical web chat contact flow might work like this. A client using the API has an `Alerting` `Interaction`. If `Answered`, an `Interaction Update` will be sent to the client specifying that this is a Web Chat message; and specifying a new capability: `canOpenMedia`. At this stage, the client would call `openMedia()`. This will result in a NEW `MediaI` object being sent from CCS, which will be deserialized to a `WebChatMediaI` object. New web chat messages from the agent will now be sent using the established Media path; and new web chat messages sent from the customer will arrive as new `MediaI` notifications.

      Before opening a media session on the `Interaction`, first check that it is possible to do so by calling `canOpenMedia()`

      See `MediaI` for more details on multimedia contacts.

      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### setMedia

          void setMedia(com.avaya.ccs.core.Media interactionMedia)

      A setter for the MediaI member of this InteractionI object.
      Parameters:
        `interactionMedia` - the Media object to set

    - #### getMedia

          com.avaya.ccs.core.Media getMedia()

      A getter for the MediaI member of this InteractionI object. May be null. Will be null for Voice-only contacts
      Returns:
        the `MediaI` member of this Interaction

    - #### toJsonStringMaskSensitive

          java.lang.String toJsonStringMaskSensitive()

    - #### isConference

          boolean isConference()
                        throws ObjectInvalidException

      In a Conference, two agents are talking/messaging with a third party (the customer) who can hear/read what they are saying
      Returns:
        true if this is a Conference; false otherwise
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### isConsult

          boolean isConsult()
                     throws ObjectInvalidException

      In a Consult, two agents are talking/messaging to each other while a third party (the customer) cannot hear/read what they are saying
      Returns:
        true if this is a Consult; false otherwise
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### isAutoAnswered

          boolean isAutoAnswered()

      This field shows that interaction was answered by the system
      Returns:
        true if this interaction Auto Answered by the system; false otherwise

    - #### isConsultedAgent

          boolean isConsultedAgent()

      Returns:
        true if this interaction come to consulted agent

    - #### endConsult

          void endConsult()
                   throws ObjectInvalidException

      End a consult between two agents
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### consult

          void consult(java.lang.String destination)
                throws ObjectInvalidException,
                       InvalidArgumentException

      Initiate a consult between two agents. In a Consult, two agents are talking/messaging to each other while a third party (the customer) cannot hear/read what they are saying.
      Parameters:
        `destination` - the target of the consult initiation
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted
        `InvalidArgumentException` - if the argument is either `null` or empty

    - #### updateClosedReasonCode

          void updateClosedReasonCode(java.lang.String code)
                               throws ObjectInvalidException

      Set or update the closed-reason code on the Interaction in CCS. Closed Reason Code may be set/updated while the Interaction is still Active, or may be set as part of the End() command.
      Parameters:
        `code` - closedReasonCode
      Throws:
        `ObjectInvalidException` - if the `InteractionI` object has been deleted

    - #### getSkillsets

          void getSkillsets()
                     throws ObjectInvalidException

      Request the list of available email skillsets configured in AACC/ACCS that can be used as an originating address for an ad-hoc email.
      Throws:
        `ObjectInvalidException`

    - #### requestApprovalStatus

          void requestApprovalStatus()
                              throws ObjectInvalidException

      Throws:
        `ObjectInvalidException`

    - #### requestReviewEmail

          void requestReviewEmail(java.lang.String reviewType,
                                  java.util.Map<com.avaya.ccs.core.CommandArgs.Argument,java.lang.String> queryParams,
                                  java.lang.String data)
                           throws ObjectInvalidException

      Throws:
        `ObjectInvalidException`