Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.blackbox.dasha.ai/llms.txt

Use this file to discover all available pages before exploring further.

Brief operators before connecting callers. Warm transfers let your agent speak with the operator first — providing context so customers don’t need to re-explain their situation. What you’ll learn: Warm transfer workflow, configuration steps, operator briefing scripts, and best practices for context handoffs.

How Warm Transfer Works

  1. Agent determines the caller needs transfer (based on conversation and configured description)
  2. Agent calls the operator at configured endpoint
  3. Agent speaks with operator to provide context about the caller and situation
  4. Agent bridges the call - all three parties are connected
  5. Operator handles the call - when the operator disconnects, the agent can optionally resume the conversation with the caller

When to Use Warm Transfer

Best for:
  • Complex customer issues requiring context
  • High-value calls where personalization matters
  • Situations where operator needs background before speaking
  • Escalations where caller shouldn’t repeat information
Choose cold transfer instead when:
  • Simple routing to departments or menus
  • High-volume, basic escalations
  • Speed matters more than context

Configuring Warm Transfer

This example shows only the transfer-related fields. The PUT endpoint requires the full agent configuration including name, config.primaryLanguage, config.ttsConfig, and config.llmConfig.
curl -X PUT "https://blackbox.dasha.ai/api/v1/agents/{agentId}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Your Agent Name",
    "config": {
      "primaryLanguage": "en-US",
      "ttsConfig": { ... },
      "llmConfig": { ... },
      "features": {
        "transfer": {
          "type": "warm",
          "description": "Transfer when customer requests human agent or issue is complex",
          "endpointDestination": "+15550100",
          "callerIdMode": "userPhoneNumber",
          "interactionWithOperator": {
            "type": "smartV1",
            "additionalInstructions": "Brief operator in under 10 seconds. Include customer name and issue summary."
          },
          "sayPhraseToCustomer": "Let me connect you with a specialist. One moment please.",
          "continueAfterOperatorDisconnected": true,
          "continueRecordingInTransfer": true,
          "failoverBehavior": {
            "continueConversation": true,
            "staticPhrase": "All specialists are busy. Let me try to help you directly."
          }
        }
      }
    }
  }'

Configure via Dashboard

  1. Open your agent’s configuration
  2. Navigate to the Features tab
  3. Scroll to Call Transfers section
  4. Select Warm Transfer type

Step 2: Configure Basic Settings

Transfer Description
  • Guides the language model on when to use this transfer
  • Example: “Transfer to a human agent when the customer explicitly requests to speak with a person, or when the issue is too complex for you to handle.”
  • Be specific about triggers: explicit requests, complex scenarios, frustrated customers, etc.
Endpoint Destination
  • Phone number: +1234567890
  • SIP URI: sip:operator@yourdomain.com
Caller ID Mode
  • Agent Phone Number: Operator sees agent’s number (default)
  • Original Caller Number: Operator sees caller’s number

Step 3: Configure Operator Interaction

Choose how the agent communicates with the operator before bridging: Static Mode
  • Predefined phrase spoken to operator
  • Example: “I have a customer on the line with a question about billing. I’m connecting you now.”
  • Fast and consistent
  • Good for simple context
Smart Mode
  • Language model generates context based on conversation
  • Agent summarizes caller’s situation intelligently
  • Example generated phrase: “Hi, I have John Smith on the line. He’s experiencing an issue with his recent invoice and needs help understanding the charges. I’m connecting him now.”
  • More personalized and contextual
  • Best for complex scenarios
Optional Instructions for Smart Mode:
  • Guide the language model’s summary style
  • Example: “Keep operator briefing under 10 seconds. Focus on the specific problem and any relevant account details.”

Step 4: Configure Caller Experience

Say Phrase to Customer (optional)
  • What agent says to caller before transfer
  • Example: “I’m connecting you with a specialist who can help you with that. Please hold for just a moment.”
  • Manages caller expectations during transfer
Continue After Operator Disconnect
  • Toggle: Yes or No
  • If enabled: Agent can resume conversation if operator hangs up
  • If disabled: Call ends when operator disconnects
  • Recommended: Enable for customer service scenarios

Step 5: Configure Recording and Recognition

Continue Recording During Transfer
  • Toggle: Yes or No
  • If enabled: Call recording continues while transferred
  • Useful for quality assurance and compliance
Continue Speech Recognition
  • Toggle: Yes or No
  • If enabled: Speech-to-text remains active during transfer
  • Useful for transcript completeness

Step 6: Configure Three-Way Announcement (Optional)

Speak to both caller and operator simultaneously right before bridging:
"threewayMessaging": {
  "type": "static",
  "phrase": "Connecting you now."
}
Or use AI to generate a contextual announcement:
"threewayMessaging": {
  "type": "smartV1",
  "additionalInstructions": "Keep it brief and professional"
}
Both parties hear the same message at the exact moment of connection — useful for compliance notices or smooth handoff transitions.

Step 7: Configure Hold Media (Optional)

Hold Media
  • Audio file played while transfer is being established
  • Upload hold music or messages
  • Example: “Please wait while we connect you with an agent.”
  • Improves experience during connection delays

Step 8: Configure Transfer Routes (Optional)

Multiple transfer destinations for intelligent routing: Example: Department-based routing
  • Route Name: “Billing Department”
  • Description: “Use for billing and payment questions”
  • Destination: +1234567891
  • Route Name: “Technical Support”
  • Description: “Use for technical issues and troubleshooting”
  • Destination: +1234567892
The language model selects the appropriate route based on conversation context.

Step 9: Configure Failover Behavior

What happens if transfer fails (number busy, unavailable, or doesn’t answer): Failover Options:
  • Continue Conversation: Agent resumes and tries to help
  • End Call: Call terminates gracefully
System Message (for agent context):
  • Example: “The operator is unavailable. Apologize and offer to help or schedule a callback.”
Static Phrase (to caller):
  • Example: “I apologize, but all our representatives are currently assisting other customers. Would you like me to help you, or can I schedule a callback?”

Configuration Example

This shows the config.features.transfer object structure for warm transfer:
{
  "type": "warm",
  "description": "Transfer when customer explicitly requests a human agent, or when their issue requires account-level access you don't have.",
  "endpointDestination": "+15550100",
  "callerIdMode": "userPhoneNumber",
  "interactionWithOperator": {
    "type": "smartV1",
    "additionalInstructions": "Brief the operator in under 10 seconds. Mention customer name, issue category, and any relevant account details."
  },
  "sayPhraseToCustomer": "Let me connect you with someone who can help with that immediately. One moment please.",
  "continueAfterOperatorDisconnected": true,
  "continueRecordingInTransfer": true,
  "continueRecognitionInTransfer": true,
  "holdMedia": {
    "isEnabled": true,
    "mediaFileId": "your-media-file-id"
  },
  "failoverBehavior": {
    "continueConversation": true,
    "systemMessage": "Operator unavailable. Offer to help or schedule callback.",
    "staticPhrase": "I'm sorry, our specialists are all busy right now. I can try to help you, or I can schedule a callback. Which would you prefer?"
  }
}
Example using static operator interaction instead of smart mode:
{
  "type": "warm",
  "description": "Transfer to billing department",
  "endpointDestination": "+15550100",
  "interactionWithOperator": {
    "type": "static",
    "sayPhraseToOperator": {
      "phrase": "I have a customer on the line with a billing question. Connecting now.",
      "beforeOperator": false
    },
    "waitFirstAnswerFromOperator": true,
    "waitChecksTimeoutInS": 4
  },
  "sayPhraseToCustomer": "Connecting you to billing now.",
  "continueAfterOperatorDisconnected": false
}

Common Use Cases

Customer Service Escalations

Configuration:
  • Smart Mode with instructions: “Brief operator about customer issue and sentiment”
  • Continue After Disconnect: Yes
  • Hold media: Professional hold music
Why: Complex issues need context; agent can help if transfer fails

VIP Customer Handling

Configuration:
  • Smart Mode with instructions: “Mention customer VIP status, name, and specific request”
  • Caller ID: Original Caller Number
  • Hold media: Premium hold experience
Why: VIP customers expect personalized, seamless service

Technical Support Escalations

Configuration:
  • Smart Mode with instructions: “Describe technical issue, steps already attempted, and error codes mentioned”
  • Continue Recording: Yes
  • Continue Speech Recognition: Yes
Why: Operators need technical context; recording captures full troubleshooting session

Troubleshooting

Problem: Operators Lack Context

Solution: Switch from Static to Smart Mode. Improve Smart Mode instructions to be more specific about what information operators need. Review example transfers to identify missing context.

Problem: Operator Briefings Too Long

Solution: Update Smart Mode instructions to emphasize brevity (e.g., “Keep briefing under 10 seconds”). Use Static Mode for simpler scenarios.

Problem: Transfers Take Too Long

Solution: Warm transfers inherently take longer than cold transfers. Consider cold transfer for less complex scenarios. Optimize hold media to keep callers engaged.

Problem: Operator Doesn’t Answer

Solution: Verify endpoint is correct and operational. Configure appropriate failover behavior. Enable “Continue After Disconnect” so agent can help.

Next steps

Cold Transfer

Faster, simpler routing

HTTP Transfer

Dynamic routing decisions

Call Transfers Overview

Compare all transfer types

Maximum Call Duration

Control transferred call length