> ## Documentation Index
> Fetch the complete documentation index at: https://cntillion.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Transfer to number: hand a call to a person

> Let your Centillion agent transfer a phone call to a phone number or SIP URI when a condition you write is met, with Conference, Blind and SIP REFER transfers.

**Transfer to number** lets the agent move a phone call to a person: a phone
number, or a SIP URI on your phone system. You write the conditions, in plain
language, and the agent picks the rule that fits during the call. It works on
phone calls only. A website call or a text conversation has no phone line to
move.

There are two places to set it up:

* **Tools**, for transfers the agent may make at any point in the call. This
  is the system tool, and it needs no workflow.
* A **Transfer** step in the agent's [workflow](https://cntillion.com/docs/agents/releases-and-workflows.md),
  for a transfer at a fixed point in the flow, such as after a lead signs.

Both use the same fields and the same three [transfer types](#transfer-types).

## Turn it on

1. Open **Tools** in the agent sidebar.
2. Under **System tools**, click the switch beside **Transfer to number**. The
   **Edit system tool** panel opens.
3. Choose **Add rule** and fill in the rule. Add one rule per destination.
4. Choose **Save**. The tool turns on when it saves. **Cancel** leaves it off.

![Edit system tool panel for transfer\_to\_number with its name, an empty description and a human transfer rule set to a Conference transfer to a phone number](https://mintcdn.com/centillion/Qw838BpQ0RcXOl3q/images/agents/transfer-to-number-01-rule.webp?fit=max\&auto=format\&n=Qw838BpQ0RcXOl3q\&q=85\&s=77e3cdfec2ba998b8e382381195db022)

The panel names the tool and holds its description, then one human transfer rule per destination.

The settings save to the branch's draft. Publish before live calls use them.

**Description** tells the agent how and when to transfer. Leave it blank to
use the default, which tells the agent to help first, transfer when the
caller asks for a person or needs something it can't do, and write a short
summary for the person who answers. **Show default** puts that text in the
field so you can edit it.

## Rule fields

| Field | What it does |
| - | - |
| Transfer type | **Conference**, **Blind** or **SIP REFER**. See [Transfer types](#transfer-types). |
| Destination type | **Phone Number**, **Phone Number as Dynamic Variable**, **SIP URI** or **SIP URI as Dynamic Variable**. SIP URIs need **SIP REFER**. |
| Phone Number or SIP URI | Where the call goes. Write numbers in E.164, such as `+12125550100`, and SIP URIs as `sip:desk@example.com`. For a dynamic variable, enter the variable's name. |
| Post-dial digits | Tones sent once the person's line answers, such as an extension. **Conference** and **Blind** only. |
| Custom Headers | `X-` headers sent with the transfer. **SIP REFER** only. |
| User-to-User Information (UUI) | Data for the receiving phone system. **SIP REFER** only. |
| Play ringing tone during transfer | Ringing the caller hears while a **SIP REFER** transfer completes. |
| Transfer message | What the agent says to the caller before the transfer. Optional. Without one, the agent tells the caller in its own words. |
| Condition | When to transfer, in plain language. Required. |

Write conditions so that no two overlap, because the agent picks one rule:

> The caller asks to speak to someone about an invoice or a refund.

Type `{{` in a condition to add a variable.

## Transfer types

| | Conference | Blind | SIP REFER |
| - | - | - | - |
| Who places the call | Centillion, on your line | Centillion, on your line | Your carrier |
| Caller hears while it rings | Hold music | Ringing | Ringing, if **Play ringing tone** is on |
| Number the person sees | Your line's number | The caller's number | Set by your carrier |
| Summary read to the person | Yes | No | No |
| Destinations | Phone numbers | Phone numbers | Phone numbers and SIP URIs |
| Post-dial digits | Yes | Yes | No |
| Custom headers and UUI | No | No | Yes |

### Conference

The default. The agent tells the caller it's putting them through, and the
caller hears hold music while Centillion calls the destination from your
line. When someone answers, they first hear the agent's summary of the call on
their own, then join the caller. The caller doesn't hear the summary. The
agent then leaves the call.

The agent writes the summary when it transfers: who is calling, what they
need and what it already did. On a realtime voice the summary is read in a
standard voice, because the realtime model has no separate voice to read it.
A workspace with regulated data gets no summary on a realtime voice; the
person is connected straight away.

### Blind

Centillion calls the destination and the caller hears it ring. The person
sees the caller's own number, the way a forwarded call shows it. If your
carrier doesn't let your line show another number, the call goes out from your
line's number instead. When someone answers, the agent leaves the call. There
is no summary.

### SIP REFER

Your carrier moves the call. The caller's call leaves Centillion and rings the
destination directly. Use it for a SIP URI, for custom headers or UUI, and for
a contact center that expects calls this way. Your SIP trunk must allow
transfers by SIP REFER. On a Twilio Elastic SIP Trunk, that's the trunk's
**Call Transfer (SIP REFER)** setting.

## Destinations from a variable

Choose **Phone Number as Dynamic Variable** or **SIP URI as Dynamic Variable**
when a business system decides who answers. Enter the variable's name, for
example `jake_transfer_uri`. A tool can fill it from its response, or the
conversation can set it with [Update state](https://cntillion.com/docs/agents/system-tools.md#update-state).

The agent reads the variable when the transfer starts. If it's missing,
invalid or a sensitive variable, the caller stays with the agent.

## Post-dial digits

Post-dial digits dial an extension or answer a phone menu once the person's
line picks up. Turn on **Post-dial digits**, then choose:

* **Constant value**, and type the digits.
* **Dynamic variable**, and enter the name of a variable that holds them.

Use `0`-`9`, `*` and `#`. `w` waits half a second and `W` waits one second, so
`ww1234` waits one second and dials extension 1234.

## Custom headers and UUI

With **SIP REFER**, **Custom Headers** adds `X-` headers to the transfer, such
as `X-Lead-Id`. A header's value can be fixed or a variable: type `{{` in the
value to choose one.

**User-to-User Information (UUI)** carries a short payload to the receiving
phone system in the `Refer-To` header. Enter it as plain text, with
`{{variables}}` if you need them. Centillion sends it hex-encoded. Some
systems need a **Protocol discriminator**, a hex octet such as `04`, either
before the payload or as a header parameter. Check what your receiving system
expects.

Sensitive variables can't be sent in headers or UUI.

## In a workflow

Add a **Phone number transfer** step from the node menu. On the canvas it
reads **Transfer**, with its destination underneath: the number, the SIP URI
or the variable it reads.

![Workflow canvas with a Transfer step showing a phone number, and the Transfer to phone number panel with Conference selected, a phone number destination and post-dial digits](https://mintcdn.com/centillion/Qw838BpQ0RcXOl3q/images/agents/transfer-to-number-02-workflow-step.webp?fit=max\&auto=format\&n=Qw838BpQ0RcXOl3q\&q=85\&s=705032ddc4cb068d4fb20cd12e16e20d)

A Transfer step on the workflow canvas, with its settings in the panel beside it.

Connect a step to it with a condition, for example "The caller asks for a
person", or an expression that checks a variable, such as a SIP URI a tool
returned. When the condition is an LLM condition, the agent writes the summary
for a Conference transfer as it moves the call.

A workflow's Transfer steps also appear in the **Transfer to number** panel
under **Workflow transfers**. Select the ones the system tool may use.

## Which lines can transfer where

* A number bought through Centillion transfers only to phone numbers in its
  own country that aren't premium-rate. It can't transfer to SIP URIs.
* A number from your own Twilio account or SIP trunk can transfer to any
  number its carrier allows, and to SIP URIs with **SIP REFER**.
* Conference and Blind transfers dial out on your line, so the line needs
  outbound calling. A line without it, or one whose trunk refuses the call
  before it rings, transfers by SIP REFER instead.

## After the transfer

Once the person answers a Conference or Blind transfer, the agent stops
listening and speaking. The caller and the person stay on the line until one
of them hangs up, which ends the call for both. The conversation is saved as
handed off, and its transcript and recording stop where the agent left.

If nobody answers within 30 seconds, or the person's line is busy or they
decline, the caller stays with the agent. It tells them it couldn't put them
through and asks how else it can help.

## Edit as JSON

**Edit as JSON** shows the tool's configuration. Each rule has these fields:

| Field | Values |
| - | - |
| `id` | The rule's own ID, required. A rule pasted without one is refused |
| `transferType` | `conference`, `blind` or `sip_refer` |
| `destinationType` | `phone` or `sip` |
| `destination` | The number or SIP URI, for a fixed destination |
| `destinationSource` | `{ "kind": "literal" }`, or `{ "kind": "variable", "variable": "name" }` |
| `postDialDigits` | The digits, `""` when they come from a variable, or `null` when off |
| `postDialDigitsSource` | Same shape as `destinationSource` |
| `sipHeaders` | A list of `{ "name", "value" }`, where `value` is `{ "kind": "literal", "value": "..." }` or `{ "kind": "variable", "variable": "name" }` |
| `sipUserToUser` | `{ "data", "protocolDiscriminator", "protocolDiscriminatorMode" }` or `null` |
| `playRingingTone` | `true`, `false`, or `null`, which counts as `false`. A rule added in the panel starts at `true` |
| `transferMessage` | What the agent says to the caller first |
| `condition` | When to transfer |

## Try it

Call the agent's phone number and ask for what one of your conditions
describes. In Preview the agent picks the rule, but a browser call has no
phone line to move, so it tells you it can't put you through.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.