Call transfers let your AI agent hand a live call to a human. You configure one or more transfer destinations per agent, and the AI decides when to use them based on your prompt. telli supports two types: cold (instant handoff) and warm (the AI briefs the human first).
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.
The caller is placed on hold while the AI calls the human in a separate session, a briefing agent summarizes the conversation, and the human confirms before the caller is connected. The human gets full context, and if they decline, don’t answer, or hit voicemail, the AI returns to the caller gracefully.Downside: Slower (caller on hold), and phone numbers only—no SIP URIs.
When to Pick Which
| Scenario | Recommended |
|---|
| Transfer to a call center queue (always staffed) | Cold—fast, and someone will always pick up |
| Transfer to a specific person who may be busy | Warm—AI returns gracefully if they don’t answer |
| You need to pass call context to the human | Warm—the briefing agent summarizes everything |
| PBX/SIP integration with custom routing | Cold—supports SIP URIs and custom headers |
| Transfer to a voicemail-heavy destination | Warm—detects voicemail and returns to caller |
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 the connect_to_customer, voicemail_detected, and supervisor_unavailable tools. Briefing prompts support contact variables like {{contact.name}}.
During the briefing the human can accept (caller connected), say they’re unavailable (AI returns and offers alternatives), or not answer (AI returns after a timeout: default 30s ringing, 5 min max total).
DTMF and SIP Headers
Post-dial DTMF—Send touch-tones after the destination answers, for IVR menus or extensions. Supports 0-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:
## Transfer Routing
- Pricing, quotes, or purchase questions → [transferCall]:sales
- Technical issues, bugs, or error messages → [transferCall]:support
- Billing disputes or invoice questions → [transferCall]:billing
- Explicit request for a manager → [transferCall]:manager
## When NOT to Transfer
- Do not transfer if you can answer the question yourself
- Only transfer for complex issues you cannot resolve
- Always confirm with the caller before transferring
Common rules also include ending the call when the question is answered, using [scheduleCallback] when the destination is unavailable, and summarizing what you’ve tried before transferring as a last resort.
Troubleshooting
| Issue | Cold | Warm |
|---|
| Destination doesn’t answer | Caller hears ringing indefinitely; AI cannot return (SIP limitation) | Cancels after max ringing duration (default 30s, range 5–120s); AI returns to caller |
| Voicemail on destination | No detection; caller connected to voicemail | Briefing agent detects within 10–30s and returns to caller |
Recommendation: If your destination might not answer or go to voicemail, always use warm transfer and set a reasonable max ringing duration (30–60s recommended).