Yssa Amper
10/15/2025, 2:31 AMVapi Support Bot
10/15/2025, 2:32 AMtransferCancel event in your assistant and trigger a new transferCall to the second number if the first fails. For example:
json
{
"type": "transferCall",
"destinations": [
{ "number": "+164468018257", ... }
],
"messages": [
{ "type": "request-failed", "content": "Trying another team member..." }
]
}
// In your assistant logic, after transferCancel, call transferCall again with the second number.
This ensures the bot attempts the second number only if the first is unavailable. See [Vapi transferCall docs](https://docs.vapi.ai/call-forwarding) for more details.
Source:
- [Call Forwarding](https://docs.vapi.ai/call-forwarding)Yssa Amper
10/15/2025, 4:33 AMYssa Amper
10/15/2025, 4:36 AMYssa Amper
10/15/2025, 4:36 AMconorpo
10/15/2025, 4:38 AMChiranjeet Mishra
10/15/2025, 8:16 PMtransferSuccessful or transferCancel tools based on the interaction outcomes.
3. **Handling Scenarios**: Customize prompts to handle conditions such as voicemails and unanswered calls.
For dynamic call transfers, which are more flexible and determined in real-time:
1. **Setup**: Create a dynamic transfer tool with empty destination fields. Route decisions are made on-the-fly using customer information and real-time analysis. Check the [dynamic transfer configuration guide](https://docs.vapi.ai/calls/call-dynamic-transfers) for details.
2. **Webhook Integration**: Implement a server endpoint to handle transfer-destination-request. This endpoint decides the appropriate transfer destination based on the context received.
3. **Routing Logic**: Use customer data, conversation context, and conditions to dynamically route calls to the right destination.
If you have specific questions or need further clarification, feel free to reach out.conorpo
10/16/2025, 6:23 AMChiranjeet Mishra
10/18/2025, 12:30 AM{ "type": "transferCall", "destinations": [], // Empty for dynamic routing "function": { "name": "dynamicTransfer", "description": "Transfer call based on needs" }}
2. Verify that in your assistant configuration:
- The dynamic transfer tool is added to the assistant's toolIds
- The server URL is set up correctly
- The transfer-destination-request event is enabled
3. Check your webhook server:
- Ensure it's accessible and responding within the timeout
- Verify the response format matches the expected schema:
{ "destination": { "type": "assistant|number", "assistantId": "id", // or number/phoneNumber for phone destinations "message": "Transfer message" }}
4. Common issues:
- Missing server URL configuration
- Invalid webhook response format
- Server timing out
- Empty destinations array not configured correctly for dynamic routing
If you're still having issues, can you share your tool and assistant configuration so I can help identify the specific problem?