Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 91 additions & 31 deletions fern/call-forwarding.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: Call Forwarding
slug: call-forwarding
---


Vapi's call forwarding functionality allows you to redirect calls to different phone numbers based on specific conditions using tools. This guide explains how to set up and use the `transferCall` function for call forwarding.

## Key Concepts
Expand Down Expand Up @@ -53,17 +52,11 @@ The `transferCall` tool includes a list of destinations and corresponding messag
"properties": {
"destination": {
"type": "string",
"enum": [
"+1234567890",
"+0987654321",
"+1122334455"
],
"enum": ["+1234567890", "+0987654321", "+1122334455"],
"description": "The destination to transfer the call to."
}
},
"required": [
"destination"
]
"required": ["destination"]
}
},
"messages": [
Expand Down Expand Up @@ -106,6 +99,19 @@ The `transferCall` tool includes a list of destinations and corresponding messag
}
```

You can also specify the `extension` parameter to forward the call to an extension.

```json
"destinations": [
{
"type": "number",
"number": "+1234567890",
"extension": "4603",
"message": "I am forwarding your call to Department A. Please stay on the line."
}
]
```

### 2. Using the `transferCall` Function

When the assistant needs to forward a call, it uses the `transferCall` function with the appropriate destination:
Expand All @@ -119,7 +125,6 @@ When the assistant needs to forward a call, it uses the `transferCall` function
}
}
}

```

### 3. Customizing Messages
Expand All @@ -142,7 +147,6 @@ Customize the messages for each destination to provide clear information to the
}
]
}

```

## Instructing the Assistant
Expand Down Expand Up @@ -176,12 +180,13 @@ To implement a warm transfer, add a `transferPlan` object to the `transferCall`

In this mode, Vapi provides a summary of the call to the recipient before transferring.

* **Configuration:**
* Set the `mode` to `"warm-transfer-with-summary"`.
* Define a `summaryPlan` specifying how the summary should be generated.
* Use the `{{transcript}}` variable to include the call transcript.
- **Configuration:**

- Set the `mode` to `"warm-transfer-with-summary"`.
- Define a `summaryPlan` specifying how the summary should be generated.
- Use the `{{transcript}}` variable to include the call transcript.

* **Example:**
- **Example:**

```json
"transferPlan": {
Expand All @@ -204,14 +209,15 @@ In this mode, Vapi provides a summary of the call to the recipient before transf

#### 2. Warm Transfer with Message

In this mode, Vapi delivers a custom static message to the recipient before transferring the call.
In this mode, Vapi delivers a custom message to the recipient before transferring the call.

- **Configuration:**

* **Configuration:**
* Set the `mode` to `"warm-transfer-with-message"`.
* Provide the custom message in the `message` property.
* Note that the `{{transcript}}` variable is not available in this mode.
- Set the `mode` to `"warm-transfer-with-message"`.
- Provide the custom message in the `message` property.
- Note that the `{{transcript}}` variable is not available in this mode.

* **Example:**
- **Example:**

```json
"transferPlan": {
Expand Down Expand Up @@ -259,17 +265,69 @@ Here is a full example of a `transferCall` payload using the warm transfer with
}
```

#### 3. Warm Transfer with TwiML
#### 3. Warm Transfer with Wait and Say Message

In this mode, Vapi waits for the recipient to speak first and then delivers a custom message to the recipient before transferring the call.

- **Configuration:**

- Set the `mode` to `"warm-transfer-wait-for-operator-to-speak-first-and-then-say-message"`.
- Provide the custom message in the `message` property.
- Note that the `{{transcript}}` variable is not available in this mode.

- **Example:**

```json
"transferPlan": {
"mode": "warm-transfer-wait-for-operator-to-speak-first-and-then-say-message",
"message": "Hey, this call has been forwarded through Vapi."
}
```

#### 4. Warm Transfer with Wait and Say Summary

In this mode, Vapi waits for the recipient to speak first and then delivers a summary of the call to the recipient before transferring the call.

- **Configuration:**

- Set the `mode` to `"warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary"`.
- Define a `summaryPlan` specifying how the summary should be generated.
- Use the `{{transcript}}` variable to include the call transcript.

- **Example:**

```json
"transferPlan": {
"mode": "warm-transfer-wait-for-operator-to-speak-first-and-then-say-summary",
"summaryPlan": {
"enabled": true,
"messages": [
{
"role": "system",
"content": "Please provide a summary of the call."
},
{
"role": "user",
"content": "Here is the transcript:\n\n{{transcript}}\n\n"
}
]
}
}
```

#### 5. Warm Transfer with TwiML

In this mode, Vapi executes TwiML instructions on the destination call leg before connecting the destination number.

* **Configuration:**
* Set the `mode` to `"warm-transfer-with-twiml"`.
* Provide the TwiML instructions in the `twiml` property.
* Supports only `Play`, `Say`, `Gather`, `Hangup`, and `Pause` verbs.
* Maximum TwiML length is 4096 characters.
- **Configuration:**

* **Example:**
- Set the `mode` to `"warm-transfer-with-twiml"`.
- Provide the TwiML instructions in the `twiml` property.
- Supports only `Play`, `Say`, `Gather`, and `Pause` verbs.
- Maximum TwiML length is 4096 characters.
- TwiML must be provided as a single-line string without line breaks or tabs, and must be a valid XML string. For example: `<Say>Hello</Say>` is valid, but `<Say>Hello\n</Say>` is not.

- **Example:**

```json
"transferPlan": {
Expand All @@ -278,7 +336,6 @@ In this mode, Vapi executes TwiML instructions on the destination call leg befor
}
```


Here is a full example of a `transferCall` payload using the warm transfer with TwiML mode:

```json
Expand All @@ -305,4 +362,7 @@ Here is a full example of a `transferCall` payload using the warm transfer with
}
```

**Note:** In all warm transfer modes, the `{{transcript}}` variable contains the full transcript of the call and can be used within the `summaryPlan`.
**Notes:**

- In all warm transfer modes, the `{{transcript}}` variable contains the full transcript of the call and can be used within the `summaryPlan`.
- For more details about transfer plans and configuration options, please refer to the [transferCall API documentation](https://docs.vapi.ai/api-reference/tools/create#request.body.transferCall.destinations.number.transferPlan)
Loading