Interactions Transfer

Interactions Transfer

Admin can set the opportunity for the agents to transfer an interaction to an other agent or to an other queue in each channel:

Transfer is possible only for open interactions and only to online agents

Voice: transfer is always active as default option for agents which can transfer open calls to other online agents or queue with attended or blind transfer

Chat → Chat Websites → Edit → Settings → Transfer

Email → Email Accounts → Edit → Advanced → Transfer

SMS/Open Channel/Fax/Whatsapp Connector → Accounts → Edit → Settings → Transfer

When the flag is switched on, you must define the timeout (the time in seconds the interaction will wait to be accepted before returning back as unread).
If at least one of this flags is enabled, the agent will see this option among those available in order to manage interactions:

Voice Transfer

For Voice Channel, transfer is a default feature for the admin and agents can activate a blind or attended transfer to an other online agent or queue.

WebRTC Agent

In Blind (Unattended) Transfer, agent in conversation can click on purple button with handset → insert agent/queue’s internal number or name in standard transfer window → click on TRANSFER (the call is placed to the destination without speaking to the person you're transferring the call to).

For blind transfers, it is possible to insert and save the relative disposition when the agent transfers the call (even if it is not finished)

In Attended transfer (Call then Transfer), if Agent1 wants to speak to Agent2 before transferring the call, Agent1 in conversation inserts agent/queue’s internal number or name in the field → he click on green handset to open a conversation channel with the Agent2 (the customer conversation is automatically put on hold → then he transfers the conversation with the customer clicking on purple handset, inserting in target the caller number (the first call is automatically hung up when transferred)

 

Phonebar Agent

Click on the Forward icon and then the Transfer window will appear in order to make you choose one of the available transfer methods:

Blind (Unattended) Transfer

Enter the name or number for the transfer destination and click Transfer: the call is placed to the destination in a few seconds (without speaking to the person you're transferring the call)

Attended Transfer (Call then Transfer)

If you want to speak to the agent before transferring the call you just need to call him and then to select his name and number in the Attended Transfer section and then click on Transfer.

Warm Transfer

In a warm transfer more actors are involved, like in the following example:

Agent1 answers the call and then places the Customer on hold

Agent1 calls Agent2 (Agent 1 and Agent 2 speak together)

 

Agent1 places the calls on Conference (Agent1, Agent2 and Customer speak together)

 

Agent 1 performs the Warm Transfer by clicking the transfer button (Attended Transfer) on one of the two calls, (it doesn't matter which of the two) and leaving the Conference (only Agent 2 and Customer can speak together now)

Report-call transfer table details

From XCALLY version 3.50.0, in case of attended transfer, the below fields in the report_call_transfer table are now filled in this way:

  • transfererlinkedid contains the uniqueid of the first part of the call

  • transfereelinkedid contains the uniqueid of the second part of the call

From version 3.51.0, in case of blind transfer in order to retrieve the significant data on the call, they are present directly in the database in the report_call_transfer table.

In case of attended transfer, transfererlinkedid allows you to retrieve in report_call table reference call data.

The billing related fields are:

  • starttime: date on which the channel was created. It corresponds to the time when the channel went into ringing.

  • systemanswertime: date on which the agent receiving the transfer answered. For transfers to external, this field may be identical to starttime, because transfers to external have no real ringing status. If null, the second agent never replied.

  • endtime: date on which the agent receiving the transfer abandoned the call. This may occur because the call was transferred again or the call ended.

  • duration: the difference in seconds between endtime and starttime.

  • billableseconds: the difference in seconds between endtime and systemanswertime. If null, the second party never answered.

Scenario in case of attended transfer:

  1. Inbound call, it rings for 25 seconds, AgentJoe answers and he speaks for 25 seconds

  2. Internal call for attended transfer, it rings for 10 seconds, AgentAnna answers and they speak for 10 seconds

  3. AgentJoe trasfers the inbound call to AgentAnna

  4. AgentAnna speaks for 45 seconds

  5. AgentAnna hangs up the call

You will have 2 elements in report_call:

uniqueid duration billableseconds inboundCallId 115 90 internalCallId 20 10

You will have 1 element in report_call_transfer:

transfereelinkedid transfererlinkedid duration billableseconds internalCallId inboundCallId 65 55

To know the duration of the whole call: report_call.duration, where uniqueid = 'inboundCallid'
To know customer talktime: report_call.billableseconds, where uniqueid = 'inboundCallid'
To know customer waiting time in the queue: report_call.duration - report_call.billableseconds, where uniqueid = 'inboundCallid'
To know how long AgentAnna spent handling the entire conversation: (10s conversation with AgentJoe + 45s conversation with customer) report_call_transfer.billableseconds
To know how long AgentAnna spent handling the conversation after the transfer: (45s conversation with customer) report_call_transfer.billableseconds - report_call.billableseconds (report_call INNER JOIN report_call_transfer ON report_call.uniqueid = report_call_transfer.transfereelinkedid WHERE report_call.uniqueid = 'internalCallId')
To know how long AgentAnna speaks with AgentJoe before the transfer: (10s) report_call.billableseconds, where uniqueid = 'internalCallId'

Scenarios of inbound calls transferred to queue

Here you can explore the different scenarios of inbound calls transferred to queue with blind or attended transfer:

Transfer type

Step1

Step2

Step3

Step4

Step5

Transfer type

Step1

Step2

Step3

Step4

Step5

Blind / Attended

Agent1 receives inbound call on Queue1

Agent1 transfers to Queue2 via webRTC bar

Agent1 passes in ACW status
Agent2 receives call on Queue2

Agent2 or customer hangs up the call

Agent2 passes in ACW status

Blind / Attended

Agent1 receives inbound call on Queue1

Agent1 transfers to Queue2 via Agent Presence

Agent1 passes in ACW status
Agent2 receives call on Queue2

Agent2 or customer hangs up the call

Agent2 passes in ACW status

Blind / Attended

Agent1 makes internal call on Queue1

Agent1 transfers to Queue2 via webRTC bar

Agent1 passes in ACW status
Agent2 receives call on Queue2

Agent2 or customer hangs up the call

Agent2 passes in ACW status

Blind / Attended

Agent1 makes internal call on Queue1

Agent1 transfers to Queue2 via Agent Presence

Agent1 passes in ACW status
Agent2 receives call on Queue2

Agent2 or customer hangs up the call

Agent2 passes in ACW status

If you use voice recording, you can decide to stop it when a call is transferred: explore here documentation about it.

Outbound Transfer Reporting

Starting from version 3.42.0, the outbound transfer reporting has been added in report_call table for inbound and internal calls (with blind or attended transfer) to track both the customer's talk time with the first agent and the time between the caller and the agent to whom the call was transferred.
For attended transfers, the interval when the phone rings while waiting for the agent to answer the transfer is not considered; therefore, only the actual call time exists (duration and billableseconds have the same value in the table).
In report_call table, these fields are considered:

  • starttime: timestamp identifying the instant at which the call is transferred

  • systemanswertime: timestamp identifying the instant at which the agent to whom the call is transferred, answered

  • endtime: timestamp identifying the instant at which the transfer ends

  • duration: interval (endtime - starttime) calculated in seconds (from when the transfer begins to when it ends)

  • billableseconds: interval (endtime - systemanswertime) calculated in seconds (so from when the agent responds to when the transfer ends)

Email Transfer

When agent wants to transfer an email, if the Transfer option is set by the administrator, he can transfer open interactions only to online agents:

Open interaction → show

 

Select 3 dots menu → transfer:

to another queue

another agent

or another account (from version 3.32.0)

image-20240325-132221.png

by choosing from the list among queue/agent/account available.
For more information about email account transfer, explore this documentation

Chat/SMS/Open Channel/Whatsapp Connector Transfer

When agent wants to transfer an interaction to an other agent or queue, if the Transfer option is set by the administrator, he can transfer open interactions only to online agents

Open interaction → show → 3 dots menu → transfer → choose agent or queue (depending on settings) → transfer to an available agent/queue

 

Example of transfer to an agent

Scenario:
Agent1 intend to transfer an open interaction (e.g. an email) to online Agent2 (admin set an agent timeout = 300).
Agent2 will receive a notification for 300 seconds to accept the interaction → until the agent accepts, the interaction remains assigned to Agent1:

  • if Agent2 accepts the interaction within 300 seconds, interaction owner changes to Agent2

  • if Agent2 doesn’t accept the interaction within 300 seconds, interaction owner remains Agent1 and email returns in Agent1’s unread list

Example of transfer to a queue

It’s possible to transfer interaction also to a queue for example to transfer it to another department. In this case notification arrives to each online agent present in that queue.

Scenario:

  • if one of agents in Sales Queue accepts the interaction within 300 seconds, owner’s interaction changes to AgentY

  • If there are no agents or none accept the interaction, email returns unread to Agent1

 

Stop routing method

For all textual channels, consider that to avoid routing blocks:

  • Transfer of a closed interaction is not possible

  • On Swagger, you can find documentation about api/rpc/interactions/{id}/stop-routing

  • A Warning message (if transfer not completed) appears, if the interaction closing occurs. This message is visible both if the agent tries to close the interaction from the table after initiating the transfer and if he tries to transfer an interaction already closed

image (6)-20241211-161439.jpg

Transfer to offline agents for textual channels

FROM VERSION 3.51.0

Admins/Agents can now transfer textual interactions to offline/pause/max capacity agents.

By clicking on Transfer option, agent can view other agents status (idle/pause/max capacity)

image-20250509-082206.png

If agent chooses an offline agent, the system warns him, to decide if he wants to transfer anyway

Screenshot 2025-05-16 120139-20250516-100139.png

 

Moreover consider that in the list of interactions, agents are now able to see all the interactions assigned to them, even without permission on the whole account.
Filtering by account, agent can select others option to see this type of transferred interaction.

image-20250516-103004.png