You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: fern/call-forwarding.mdx
+77Lines changed: 77 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -362,6 +362,83 @@ Here is a full example of a `transferCall` payload using the warm transfer with
362
362
}
363
363
```
364
364
365
+
#### 6. Experimental Warm Transfer
366
+
367
+
In this mode, Vapi dials the destination number and places the caller on hold (with a default ringtone). If the destination answers, Vapi connects the calls. If voicemail is detected or the call isn't answered, Vapi plays a fallback message to the caller.
368
+
369
+
-**Configuration:**
370
+
371
+
- Set the `mode` to `"warm-transfer-experimental"`.
372
+
- Provide a `message` to be spoken to the operator when they answer.
373
+
- Optionally define a `summaryPlan` that will take precedence over the message if enabled.
374
+
- Configure a `fallbackPlan` with a message and whether to end the call if transfer fails.
375
+
- When voicemail detection is enabled in the assistant configuration (with either Google or OpenAI provider), it will use that configuration to detect if a human answered the call. Note that only Google or OpenAI providers are supported for voicemail detection with transfer plans, even if the assistant configuration supports other providers like Twilio or Vapi.
376
+
377
+
-**Example:**
378
+
379
+
```json
380
+
"transferPlan": {
381
+
"mode": "warm-transfer-experimental",
382
+
"message": "Transferring a customer to you.",
383
+
"fallbackPlan": {
384
+
"message": "Could not transfer your call, goodbye.",
385
+
"endCallEnabled": true
386
+
},
387
+
"summaryPlan": {
388
+
"enabled": true,
389
+
"messages": [
390
+
{
391
+
"role": "system",
392
+
"content": "Please provide a summary of the call."
393
+
},
394
+
{
395
+
"role": "user",
396
+
"content": "Here is the transcript:\n\n{{transcript}}\n\n"
397
+
}
398
+
]
399
+
}
400
+
}
401
+
```
402
+
403
+
Here is a full example of a `transferCall` payload using the experimental warm transfer mode:
404
+
405
+
```json
406
+
{
407
+
"type": "transferCall",
408
+
"function": {
409
+
"name": "myTransferCall"
410
+
},
411
+
"destinations": [
412
+
{
413
+
"type": "number",
414
+
"number": "+1123456789",
415
+
"message": "Transferring the call now...",
416
+
"transferPlan": {
417
+
"mode": "warm-transfer-experimental",
418
+
"message": "Transferring a customer to you.",
419
+
"fallbackPlan": {
420
+
"message": "Could not transfer your call, goodbye.",
421
+
"endCallEnabled": true
422
+
},
423
+
"summaryPlan": {
424
+
"enabled": true,
425
+
"messages": [
426
+
{
427
+
"role": "system",
428
+
"content": "Please provide a summary of the call."
429
+
},
430
+
{
431
+
"role": "user",
432
+
"content": "Here is the transcript:\n\n{{transcript}}\n\n"
433
+
}
434
+
]
435
+
}
436
+
}
437
+
}
438
+
]
439
+
}
440
+
```
441
+
365
442
**Notes:**
366
443
367
444
- In all warm transfer modes, the `{{transcript}}` variable contains the full transcript of the call and can be used within the `summaryPlan`.
0 commit comments