The current lifecycle status of the interaction.
The platform-assigned unique identifier for this interaction.
The communication channel type for this interaction.
The sub-communication type of the interaction. Values are channel-specific.
Whether the interaction call is currently on hold.
Whether this interaction is routed through Avaya Elite Voice. Set at interaction creation and does not change during the interaction.
Identifier shared by interactions that belong to the same customer journey (e.g. an inbound call and a subsequent callback). Use this to link related interactions in CRM integrations. Stable for the lifetime of the interaction.
The channel the interaction started on. Immutable - does not change even if the interaction's current communicationType switches later (e.g. a chat escalated to a voice call).
The sub-communication type the interaction started with. Values are channel-specific. Immutable for the lifetime of the interaction.
When the interaction finished wrap-up. undefined while the interaction
is still active or in wrap-up.
Routing context for the interaction. Empty string means "not populated".
Identity of the agent currently owning this interaction. Complements
isOwner (which only tells you whether you are the owner).
undefined when no agent is assigned yet.
Contact information for the customer in this interaction.
Configuration details of the queue that routed this interaction.
The timestamp when the interaction started.
Whether the current agent is the owner of this interaction.
Whether the current agent is the consulted agent (transfer target) for an in-progress
attended transfer on this interaction. true when the interaction status is
ATTENDED_TRANSFER and this agent's userId matches the transfer target.
Viewers can subscribe to InteractionEventType.INTERACTION_TRANSFER and check this property to detect when an attended transfer is directed at them — the typical response is to prompt the agent to accept from the new pending interaction that the server routes to them.
The subject or title of the interaction.
Notes associated with the interaction. Updated via setNotes.
Custom key/value data persisted on the interaction.
Update via mergeCustomFields (it deep-merges; keys not mentioned are preserved).
The selected classification type for this interaction. Describes the reason the customer reached out or the purpose of the interaction.
The selected classification result for this interaction. Describes the outcome of the interaction.
Whether the current user's microphone is currently muted on this interaction, regardless of role (owner, attended-transfer consult agent, or viewer).
Details of an in-progress or completed transfer on this interaction.
undefined when no transfer has been initiated.
Unix timestamp (seconds) when wrap-up expires. Undefined before the interaction enters wrap-up or if no timer is configured.
Mutes the current user's microphone for this interaction, regardless of
role (owner, attended-transfer consult agent, or viewer).
Check canMute before calling. Fires INTERACTION_CALL_MUTED on success.
Promise that resolves when the platform confirms the mute
Unmutes the current user's microphone for this interaction, regardless of
role (owner, attended-transfer consult agent, or viewer).
Check canMute before calling. Fires INTERACTION_CALL_UNMUTED on success.
Promise that resolves when the platform confirms the unmute
Sends a dual-tone multi-frequency (DTMF) digit during an active voice interaction. Check canSendDtmf before calling.
A single DTMF character: 0–9, *, #, a-d or A-D
Places the customer call on hold. The customer then hears hold music.
Check canHold before calling. Fires INTERACTION_CALL_HELD on success.
Promise that resolves when the platform confirms the call is on hold
Resumes a held customer call, reconnecting the agent to the customer.
Check canResume before calling. Fires INTERACTION_CALL_RESUMED on success.
Promise that resolves when the platform confirms the call is resumed
Returns true when the agent can accept this interaction.
Only valid when the interaction is in PENDING or ATTENDED_TRANSFER status.
Returns true when the agent can close this interaction.
Only returns true when the agent is the owner and the interaction is in CONNECTED, HOLD,
or ATTENDED_TRANSFER status.
Returns true when the agent can complete this interaction.
Only valid when the agent is the owner and the interaction is in WRAP_UP status.
Whether the agent can update the subject on this interaction.
Only applicable for the owning agent when status is CONNECTED, ATTENDED_TRANSFER,
HOLD, or WRAP_UP. Returns false for viewers.
Returns true when the agent can send a chat message on this interaction.
Only valid when the interaction is connected and the agent is the owner or a viewer.
Returns true when the agent can fetch message history on this
interaction. Allowed whenever the agent is the owner or a viewer.
Returns true when DTMF tones can be sent on this interaction.
Only applicable for connected voice interactions where audio is active; not applicable for viewers.
Returns true when the agent is permitted to reject this interaction.
Returns true when the current user can mute their own microphone on
this interaction right now. Use canUnmute for the inverse direction.
Returns true when the current user can unmute their own microphone on
this interaction right now.
Returns true when the agent can place this interaction on hold.
Only valid when the agent is the owner and the call is connected.
Returns true when the agent can resume a held interaction.
Only valid when the agent is the owner and the call is on hold.
Returns true when the agent can initiate a blind transfer on this interaction.
Only valid when the agent is the owner.
Returns true when the agent can blind transfer to an external phone number.
Returns true when the agent can initiate an attended (consultative) transfer.
Only valid when the agent is the owner and the call is connected.
Not applicable for a consulted agent in an attended transfer.
Returns true when the agent can attended transfer to an external phone number.
Checks all base attended-transfer conditions plus the external transfer permission on the queue.
Returns true when the agent can initiate a conference on this interaction.
Only valid when the agent is the owner and the call is connected.
Returns true when the agent can cancel an in-progress attended transfer.
Applicable for both the originating agent and the consulted agent, except for
transfers to a queue.
Returns true when the agent can cancel an in-progress conference.
Only valid when the agent is the owner and the call is connected.
Returns true when the agent can disconnect the call to the customer.
Only valid when the agent is the owner and the call is connected.
Returns true when the agent can transfer this interaction (blind or attended).
Only valid when the agent is the owner and the call is connected.
Not applicable for a consulted agent in an attended transfer.
Returns true when the agent can perform wrap-up actions (close/complete) on this interaction.
Only valid when the agent is the owner and the interaction is in WRAP_UP state.
Returns true when the agent can extend the wrap-up timer.
Checks ownership, wrap-up status, queue configuration, and that at least 5 seconds remain.
Returns true when the agent can mark this interaction as resolved.
Only valid when the agent is the owner and the interaction is in CONNECTED or ATTENDED_TRANSFER state.
Returns true when the agent can change a resolved interaction back to unresolved.
Only valid when the agent is the owner and the call has been disconnected.
Returns true when the agent can update the notes on this interaction.
Returns true when the agent can set custom fields on this interaction.
Returns true when the agent can set classification type or result codes on this interaction.
Returns true when the agent can complete an in-progress attended transfer.
Only valid for the owner of the interaction (not the consulted agent).
Returns true when the agent can complete an in-progress conference.
Only valid when the agent is the owner and the call is connected.
Not applicable for a consulted agent in an attended transfer.
Returns true when the current user can leave the call as a viewer.
Returns true when the current user can join the call as a viewer.
Returns true when the current user can be leave interaction as a viewer.
Returns true when the current viewer can claim ownership of this interaction.
Evaluates viewer status, interaction status, monitoring permissions,
hybrid restrictions, audio state (phone only), and queue access.
Returns true when the current Elite supervisor viewer can barge into the call.
See InteractionTrait.canBarge.
Returns true when the current Elite supervisor viewer can stop barging.
See InteractionTrait.canUnbarge.
Returns true when the current Elite supervisor viewer can start coaching.
See InteractionTrait.canCoach.
Sets the classification type for this interaction, recording the reason the customer
reached out. Available codes come from QueueDetails.classificationTypes.
Check canSetClassification before calling. Fires INTERACTION_CLASSIFICATION_UPDATED on success.
The ClassificationCode to set as the classification type
Promise that resolves when the platform confirms the classification type is saved
Sets the classification result for this interaction, recording the outcome of the call.
Available codes come from QueueDetails.classificationResults.
Check canSetClassification before calling. Fires INTERACTION_CLASSIFICATION_UPDATED on success.
The ClassificationCode to set as the classification result
Promise that resolves when the platform confirms the classification result is saved
Initiates a conference by connecting the call into a three-way conversation. Check canConference before calling.
Promise that resolves when the server accepts the conference request
Cancels an in-progress conference, dropping the consulted party and returning to the original call. Check canCancelConference before calling.
Promise that resolves when the server confirms the conference is cancelled
Completes an in-progress conference. The consulted agent transitions to a viewer role
and the customer call continues between the owner and the viewer.
Fires INTERACTION_CONFERENCE_COMPLETE on success. Check canCompleteConference before calling.
Promise that resolves when the server confirms the conference is complete
Sets free-text notes on the interaction. Triggers INTERACTION_NOTES_UPDATED on success.
Check canSetNotes before calling.
The notes text to associate with the interaction
Promise that resolves when the platform confirms the notes are saved
Sets the subject on the interaction. Check canSetSubject before calling.
The subject text to associate with the interaction
Promise that resolves when the platform confirms the subject is saved
Updates custom fields on the interaction. It deep-merges the
provided object into the existing customFields record - keys not
mentioned are preserved.
Check canMergeCustomFields before calling.
Custom key/value data to merge into the interaction
Promise that resolves when the custom fields are saved
Fetches a paginated list of agents available as transfer targets for this interaction. Use the returned page to populate a transfer destination picker in the UI.
Optionaloptions: GetTransferableUsersParamsOptional filter and pagination parameters
Parameters for Interaction.getTransferableUsers.
Optionalpage?: numberThe page number to fetch (0-based). Defaults to 0.
Optionalname?: stringFilter agents by name (case-insensitive substring match).
Promise resolving to a TransferableUsersPage
Fetches a paginated list of queues available as transfer targets for this interaction. Use the returned page to populate a transfer destination picker in the UI.
Optionaloptions: GetTransferableQueuesParamsOptional filter and pagination parameters
Parameters for Interaction.getTransferableQueues.
Optionalpage?: numberThe page number to fetch (0-based). Defaults to 0.
Optionalname?: stringFilter queues by name (case-insensitive substring match).
Promise resolving to a TransferableQueuesPage
Subscribes to an InteractionEventType on this interaction. Returns a handler ID that uniquely identifies the subscription and can be passed to unsubscribe to stop receiving events.
The InteractionEventType to subscribe to
Callback invoked each time the event fires
A handler ID string to use with unsubscribe
InteractionEventType for available event types
Removes a specific event handler registered via subscribe.
The InteractionEventType to unsubscribe from
The handler ID returned from the original subscribe call
Removes all event handlers registered on this interaction via subscribe.
Accepts the incoming interaction, transitioning its status from PENDING to CONNECTED.
Promise that resolves when the platform confirms the interaction is accepted
Rejects the incoming interaction. Check canReject before calling.
Promise that resolves when the platform confirms the rejection
Disconnects the voice call with the customer, triggering the INTERACTION_CALL_DISCONNECTED
event and moving the interaction toward wrap-up. Check canDisconnectCall before calling.
Promise that resolves when the platform confirms the call is disconnected
Closes the interaction during wrap-up and records whether the customer's issue was resolved.
Triggers INTERACTION_COMPLETED upon success. Call canWrapUp to verify the
interaction is in a closeable state before invoking.
Required resolution outcome. Pass ResolutionStatus.RESOLVED or ResolutionStatus.UNRESOLVED.
Promise that resolves when the platform confirms the interaction is closed
Completes and finalizes the interaction without specifying a resolution status. Use close instead when recording a ResolutionStatus.
Promise that resolves when the platform confirms the interaction is completed
Extends the wrap-up timer by the configured number of seconds.
Resolves when the server confirms the extension
Fires INTERACTION_WRAP_UP_EXTENDED with the new deadline on success.
Promise that resolves when the extension is confirmed
Sends a chat message on this interaction. Resolves once the server echoes
the message back over the socket. The full message is delivered via the
INTERACTION_MESSAGE_SENT event - subscribe to that if you need the
complete message payload.
Check canSendMessage before calling.
Built via ChatMessageRequest
Promise resolving to the MessageIdentifier of the sent message
Returns a bidirectional iterator over the message history of this
interaction. Call previous() on the iterator to fetch older messages
and next() to fetch newer messages.
Check canGetMessages before calling.
Optionaloptions: GetMessagesOptionsOptional GetMessagesOptions.
Claims ownership of this interaction. The current user must be a viewer. Check canClaimOwnership before calling.
Promise that resolves when the claim request is accepted
Barges into the call as an Elite supervisor. See InteractionTrait.barge.
Stops barging and returns the supervisor to listen-only mode. See InteractionTrait.unbarge.
Starts coaching as an Elite supervisor. See InteractionTrait.coach.
Performs a blind (immediate, no-consultation) transfer of the interaction to a target agent or queue. The interaction is removed from this agent's session immediately on success. Check canBlindTransfer before calling. Pass BlindTransferToUserOptions or BlindTransferToQueueOptions to specify the target.
Target agent or queue for the transfer
Promise that resolves when the platform accepts the transfer request
Initiates an attended (consultative) transfer to a target agent or queue. The original call is placed on hold and a consult leg is established. Check canAttendedTransfer before calling. Pass AttendedTransferToUserOptions or AttendedTransferToQueueOptions to specify the target.
Target agent or queue for the consultative transfer
Promise that resolves when the server accepts the attended transfer request
Cancels an in-progress attended transfer, reconnecting the originating agent to the customer. Check canCancelTransfer before calling.
Promise that resolves when the server confirms the cancellation
Completes an in-progress attended transfer, handing the customer call off to the consulted agent.
Fires INTERACTION_TRANSFER_COMPLETE on both agents' sessions. Check canCompleteTransfer
before calling.
Promise that resolves when the server confirms the transfer is complete
Returns true when the current agent is participating as a viewer on this interaction.
Returns the list of agents currently active as viewers on this interaction. Each Viewer exposes the viewer's identity and state, plus owner-on-viewer actions (Viewer.mute, Viewer.remove, Viewer.assignOwner).
Array of Viewer; empty when no viewers are present
The current user's viewing state on this interaction, including audio and Elite mode details.
Returns undefined if the current user is not a viewer.
Leaves the call audio as a viewer (stays as viewer but disconnects audio). Check canLeaveCall before calling.
Promise that resolves when the platform confirms the call leave
Joins the call audio as a viewer. Check canJoinCall before calling.
Promise that resolves when the platform confirms the call join
Removes the current user as a viewer from this interaction. Check canLeave before calling.
Promise that resolves when the platform confirms the removal
A contact center interaction between an agent and a customer.
Lifecycle
currentStatusisPENDING.CONNECTED; agent can perform actions on it like mute, hold, transfer, or start a conference.WRAP_UP; agent records notes and classification codes.COMPLETED.Capability groups
falsewhen the action is not permitted in the current stateExample
Reactivity
The SDK maintains a single Interaction instance per interaction and mutates its fields in place as state changes — the object reference is stable across updates. Framework consumers (React, Vue, etc.) that rely on reference equality for change detection must therefore trigger their own re-render on each subscribed event — for example by bumping a version counter, re-emitting the enclosing array, or lifting the data into a store that produces a fresh snapshot per event.
See