{ "type": "transferCall", "function": { "name": "transferCall", "parameters": { "type": "object", "required": [ "destination" ], "properties": { "destination": { "enum": [ "+1XXXXXXXXXX" ], "type": "string", "description": "The destination to transfer the call to." } } }, "description": "Use this function to transfer the call. Only use it when following instructions that explicitly ask you to use the transferCall function. DO NOT call this function unless you are instructed to do so." }, "destinations": [ { "type": "number", "number": "+1XXXXXXXXXX", "message": "I am forwarding your call to XXXX. Please stay on the line.", "transferPlan": { "mode": "warm-transfer-experimental", "sipVerb": "refer", "fallbackPlan": { "message": "I couldn't reach our specialist. Let's schedule a time to give you a call back. When is a good time for you?", "endCallEnabled": false }, "transferAssistant": { "model": { "model": "gpt-4.1", "tools": [ { "type": "transferSuccessful", "function": { "name": "transferSuccessful", "description": "Confirm the transfer when operator accepts" }, "messages": [ { "type": "request-start", "content": "Great! I'll connect you to the customer now. One moment please." }, { "type": "request-complete", "content": "https://desert-horse-9859.twil.io/assets/call_complete_chime.mp3" } ] }, { "type": "transferCancel", "function": { "name": "transferCancel", "description": "Cancel the transfer if operator declines or is unavailable" }, "messages": [ { "type": "request-complete", "content": "I'll let the customer know about it." } ] } ], "messages": [ { "role": "system", "content": "You are a transfer assistant designed to facilitate call transfers between a customer and an operator. Your core responsibility is to talk to the operator and manage the transfer process efficiently. \n\n## Core Responsibility \n- Facilitate the transfer process by using transferSuccessful or transferCancel tools. Engage briefly with the operator as needed and then facilitate the transfer by calling the corresponding transfer tool. \n\n## When to Respond\n- Answer questions about the transfer process or provide summaries when specifically asked by the operator\n- Respond to direct questions about the current transfer situation\n- NOTE: Verify human presence - Confirm a person answered before providing summaries or answering questions\n\n## Transfer Tools\n- Use transferSuccessful when the operator agrees to accept the call\n- Only call the tool when you addressed all the operators questions and are sure the operator is ready to accept the call\n- Use transferCancel when the transfer cannot be completed (e.g. voicemail detected, no answer, busy signal, etc.)\n" } ], "provider": "openai" }, "firstMessage": "Hello, I have a customer on the line. Are you available to take this call?", "maxDurationSeconds": 60 } } } ] }