Warm transfers are temporarily unavailable for Duo agents. Cold transfers remain available. Saved warm-transfer destinations are skipped during calls.
Cold vs. Warm Transfer
- Cold Transfer
- Warm Transfer
The caller is connected directly via SIP REFER. Fast, zero delay, and the only type that supports SIP URI targets and custom SIP headers.Downside: If the destination doesn’t answer, the caller is stuck hearing ringing and the AI cannot return. No context is passed to the human.
On a custom SIP trunk, your provider must permit SIP REFER on the trunk. Warm transfers work without it.
When to Pick Which
Warm Transfer Briefing
The briefing is what the AI tells the human before connecting the caller. In Auto mode (default) the AI summarizes who the caller is, what they called about, what was discussed, and what they need, then asks “Are you ready to take the call?” You can supply a custom briefing prompt instead. It replaces the default instructions, but the system still appends the full conversation history, instructs the agent to ask permission before connecting, and provides theconnect_to_customer, wait_for_supervisor_to_return, voicemail_detected, and supervisor_unavailable tools. Briefing prompts support contact variables like {{contact.name}}.
During the briefing the human can accept (caller connected), ask for a moment (the AI stays silent and checks back after 30 seconds, mentioning that the caller is still holding), say they’re unavailable (AI returns and offers alternatives), or not answer (AI returns once the ring timeout expires: 5–120s when configured, 5 minutes when left empty).
DTMF and SIP Headers
Post-dial DTMF—Send touch-tones after the destination answers, for IVR menus or extensions. Supports0-9, A-D, *, #, and w (0.5s pause). Example: 123w45#. Supports contact variables (1w{{contact.extension}}#). Available for both cold and warm.
Custom SIP headers (cold only)—Attach headers to the REFER request for call correlation, routing, or analytics. telli always includes X-Telli-Call-Id automatically so you can match the transfer back to the original call. Add your own name/value pairs under the “Advanced” section of a cold destination; values support contact variables. Not available for warm transfers.
Limited Hours
Each destination can have its own optional schedule: enable/disable per day, time windows per day, and a timezone (e.g.Europe/Berlin). You can also block specific dates (holidays), inheriting from account-level no-call dates or disabling per destination.
When someone requests a transfer outside the configured hours:
- Auto (recommended)—The AI informs the caller transfers aren’t available, optionally including the schedule and next available slot. You can toggle the schedule details off.
- Manual message—The AI speaks an exact message you provide, verbatim, with no improvisation.
Routing Logic in the Prompt
The transfer tool gives the AI the ability to transfer; your prompt tells it when. A typical multi-destination pattern:@scheduleCallback when the destination is unavailable, and summarizing what you’ve tried before transferring as a last resort.
Route each contact to a different destination
Use a contact property when each contact needs a different transfer destination.1
Create the destination property
Create a contact property with the Phone Number type.
2
Set the value before the call
Set a valid E.164 value with a leading
+ for each contact. Populate it in the telli app, by CSV import, through the Create Contact or Update Contact API, or from the Contact Lookup Webhook.3
Select the property
In the Agent Builder, open Tools → Transfers, select Add transfer tool…, and choose the property in Transfer target.
4
Test the routing
Place a test call for a contact that has the property, trigger the transfer rule, and confirm that the expected destination rings.