> For a complete page index, fetch https://docs.synthflow.ai/llms.txt. For full documentation content, fetch https://docs.synthflow.ai/llms-full.txt.

# Asterisk

> Configure warm transfers between Synthflow and Asterisk-based PBX systems so callers are handed off to human agents.

When a caller asks a Synthflow agent for a human, the agent can warm-transfer the call to a human agent on an Asterisk-based PBX. Your PBX dialplan must accept the transfer request from Synthflow, and the agent needs a call transfer action in warm mode.

## Warm transfer flow

1. Synthflow sends a new SIP `INVITE` to the human agent (the transferee).
2. When the human agent answers, Synthflow sends a `REFER` request on the original call with a `Refer-To` URI.
3. The Asterisk PBX accepts the `REFER` and opens a new channel to the `Refer-To` URI.
4. The `Refer-To` URI contains a random ID prefixed with `0875704225`.
5. That URI bridges the caller and the human agent, which completes the warm transfer.

## Asterisk dialplan

Add a `from-synthflow` context to your dialplan. In both examples, the first extension routes the call to the human agent's number, `+12345678912`. The `_0875704225.` extension matches the `Refer-To` URI and dials back to Synthflow to bridge the call. Replace `sip.synthflow.ai` with your region's [SIP address](/connect-over-sip#sip-addresses) if your workspace is in the US or EU region.

### AEL (`extensions.ael`)

```ael
context from-synthflow {
  +12345678912 => {
    Dial(PJSIP/${EXTEN});
    Hangup();
  }
  _0875704225. => {
    Dial(PJSIP/synthflow/sip:${EXTEN}@sip.synthflow.ai:32681);
    Hangup();
  }
}
```

### Classic dialplan (`extensions.conf`)

```conf
[from-synthflow]
exten => +12345678912,1,Dial(PJSIP/${EXTEN})
same => n,Hangup()

exten => _0875704225.,1,Dial(PJSIP/synthflow/sip:${EXTEN}@sip.synthflow.ai:32681)
same => n,Hangup()
```

> **Note**
>
> The `_0875704225.` extension pattern must match the prefix in the `Refer-To` URI, or the transfer does not complete.

## Synthflow agent

### Outbound agent

1. Select **Agents** in the left sidebar.
2. [Create a new outbound agent](/create-an-agent).
3. Add a DID number. A test or dummy DID works.

### Warm transfer action

1. Select **Agents** in the left sidebar, then select the agent.
2. Select **Actions**.
3. On the **During the call** tab, select **Add Action** → **Call Transfer**.
4. Enter the human agent's phone number and select **Add Actions**. A new number prompts you to validate it.
5. Select the action you created, then select **Transfer Settings**.
6. Set **Transfer Mode** to **Warm with message**. You can enter a message the agent says before the transfer, for example "The user requested the manager, merging you now!" The [transfer modes](/call-transfers#transfer-modes) table lists what each mode does.
7. Select **Save**.

## Transfer test

1. Select **Agents** in the left sidebar, then select the agent.
2. Under the agent's name, select **Test Agent**.
3. Dial the number and start a conversation with the agent. Say "Please transfer to a human agent."

Synthflow dials the transferee. When the human agent answers, they hear the configured message, and then the caller is merged into the call.