Buck
04/02/2025, 1:42 AMBuck
04/02/2025, 1:42 AM{
"assistant": {
"transcriber": {
"provider": "deepgram",
"language": "en-US",
"model": "nova-2"
},
"model": {
"provider": "openai",
"model": "gpt-4o",
"temperature": 0.2,
"messages": [
{
"role": "system",
"content": "[I have my prompt entered here]"
}
],
"maxTokens": 250,
"tools": [
{
"type": "endCall",
"async": true
},
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+1517xxxxxxx",
"description": "Transfer to qualified lead handler",
"transferPlan": {
"mode": "warm-transfer-with-message",
"message": "Hey here is the qualified lead"
}
}
],
"messages": [
{
"type": "request-start",
"content": "",
"contents": [],
"conditions": []
}
]
}
]
},
"voice": {
"provider": "playht",
"voiceId": "s3://voice-cloning-zero-shot/f2863f63-5334-4f65-9d30-438feb79c2ec/arianasaad2/manifest.json",
"model": "PlayHT2.0-turbo",
"speed": 1
},
"firstMessage": "Hi, this is Sarah from [company name] on a recorded line. You recently filled out our online request form. Just to confirm am I speaking with [name]?",
"backgroundSound": "off",
"endCallMessage": "Thank you, have a great day.",
"silenceTimeoutSeconds": 20,
"artifactPlan": {
"recordingEnabled": true
},
"serverMessages": [
"end-of-call-report",
"hang"
],
"server": {
"url": "https://hook.us2.make.com/xxxxxxxxxxxxxxxxxxxxxxxx"
}
},
"customer": {
"number": "+1xxxxxxxxxx",
"numberE164CheckEnabled": true
},
"phoneNumberId": "94a7854a-85ea-453b-b77e-361218b2fb9b"
}
Buck
04/02/2025, 1:42 AMVapi Support Bot
04/02/2025, 1:44 AMjson
"transferPlan": {
"mode": "warm-transfer-with-message",
"message": "Hey here is the qualified lead"
}
2. **Warm Transfer with Wait for Operator**: This mode ensures the operator is ready before delivering your message:
json
"transferPlan": {
"mode": "warm-transfer-wait-for-operator-to-speak-first-and-then-say-message",
"message": "Hey here is the qualified lead"
}
## Complete Implementation Example
Here's a complete example of how to implement this in your code:
json
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+1234567890",
"transferPlan": {
"mode": "warm-transfer-with-message",
"message": "Hey here is the qualified lead"
}
}
],
"messages": [
{
"type": "request-start",
"content": "I am forwarding your call. Please stay on the line."
}
]
}
## Troubleshooting Tips
If you're still experiencing issues with the message not being relayed, consider these potential solutions:
1. **Try a different transfer mode**: According to [Discord discussions](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1337412016985473044), the warm-transfer-wait-for-operator-to-speak-first-and-then-say-message
mode can be more reliable as it ensures the operator is ready before delivering the message.Vapi Support Bot
04/02/2025, 1:44 AMassistantOverrides
that might be preventing the system from speaking the transfer message, as mentioned in [community discussions](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1336569634094186516).
3. **Use TwiML for voice customization**: For more control over how the message is delivered, you can use the TwiML mode:
json
"transferPlan": {
"mode": "warm-transfer-with-twiml",
"twiml": "<Say>Hey here is the qualified lead</Say>"
}
Is there anything specific about your implementation you'd like me to help troubleshoot further?
Sources:
- [Vapi call forwarding documentation](https://docs.vapi.ai/call-forwarding)
- [Discord discussion about warm transfer modes](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1337412016985473044)
- [Discord discussion about assistant overrides](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1336569634094186516)
- [Discord discussion about TwiML for voice customization](https://discord.com/channels/1211482211119796234/1211483291191083018/threads/1342937740127502387)Buck
04/02/2025, 1:51 AMKyle
04/02/2025, 1:00 PMBuck
04/02/2025, 2:29 PMBuck
04/02/2025, 2:58 PMKyle
04/07/2025, 4:21 PM