Autonomous Silence Handling
Intelligently detect and respond to prolonged silence during calls, preventing calls from hanging indefinitely.
Technical documentation for the
autonomous_silence_handlingfeature.
Overview
Autonomous Silence Handling is a feature that allows the AI assistant to intelligently detect and respond to prolonged silence during an inbound phone call. When enabled, the assistant will:
- Detect when the caller has stopped speaking
- Prompt the caller to check if they're still on the line
- After multiple attempts without response, gracefully end the call
This prevents calls from hanging indefinitely when callers walk away, get disconnected, or put the phone down.
Configuration
Assistant Schema
{
"autonomous_silence_handling": true
}| Field | Type | Default | Description |
|---|---|---|---|
autonomous_silence_handling | boolean | false | Enable/disable autonomous silence detection |
Automatic Tool Addition
When autonomous_silence_handling is enabled and the assistant writes its own silence prompts, the system adds the end_call tool to the assistant's toolset if not already present. This ensures the assistant can hang up after detecting prolonged silence.
When speech_config.silence has its own messages or final_message, the tool is not added. The platform then speaks the last attempt and hangs up itself (see Fixed Sentences Instead of Prompts), so the assistant's tools stay exactly as you configured them.
How It Works
Timing Configuration
Field in speech_config.silence | Default | Range | Description |
|---|---|---|---|
first_check_seconds | 3 | 1-60 | Seconds before the first prompt after silence is detected |
interval_seconds | 12 | 3-120 | Seconds between subsequent prompts |
max_attempts | 3 | 1-10 | Maximum prompts before instructing the assistant to hang up |
These are defaults, not constants. Since August 2026 all three are set per assistant under speech_config.silence — see the Assistants API. Leaving a field out keeps the platform default, so an assistant configured before these settings existed behaves exactly as it did.
Silence handling runs on inbound phone calls, on both pipeline and realtime assistants.
State Machine
[User Speaking] → [User Away] → [Silence Check 1] → [Silence Check 2] → [Silence Check 3] → [Hang Up]
↑ │ │ │ │
└──────────────┴────────────────┴───────────────────┴───────────────────┘
(User speaks → reset timer)Event Flow
- User State: "away" - Silence timer starts
- 3 seconds pass - First silence check triggered (the
first_check_secondsdefault) - Assistant speaks - "Are you still there?" (contextual)
- 12 more seconds - Second silence check
- Assistant speaks - "I'm still here if you need me"
- 12 more seconds - Third and final check
- Assistant speaks - Brief goodbye + calls
end_calltool
Contextual Prompts
If you write no sentences of your own, the assistant is asked to formulate the check itself. It receives different instructions based on the attempt number:
Attempt 1:
IMPORTANT: No speech detected from caller. This is attempt 1 of 3.
Based on context: if they said they need to look something up, say you'll wait.
Otherwise, ask a short question to check if they are still on the line.Attempt 2:
IMPORTANT: Still no speech from caller. This is attempt 2 of 3.
Ask one more time if they are still there.
If no response after this, you will need to end the call.Attempt 3 (Final):
IMPORTANT: No speech detected from caller for a long time.
This is attempt 3 of 3.
You must now say a brief goodbye and immediately use end_call to hang up.Fixed Sentences Instead of Prompts
speech_config.silence.messages replaces the model-written prompts above with lines you wrote yourself, spoken verbatim. The order is deterministic — attempt n speaks messages[(n - 1) % messages.length], so two sentences over three attempts repeat the first. silence.final_message is the line for the last attempt, spoken instead of the model's goodbye; the platform then hangs up itself rather than asking the model to call end_call. Up to five messages, 300 characters each.
Leave both empty and the contextual prompts above are what happens.
Key Behaviors
- No check while assistant speaking: Silence timer pauses when assistant is speaking
- Reset on user speech: Any detected user speech resets the timer and attempt counter
- Graceful termination: Assistant is instructed to say goodbye before hanging up
- Context-aware: First prompt considers conversation context (e.g., "let me look that up")
Use Cases
Good For
- Reception/Front Desk: Callers may walk away to check something
- Customer Support: Long hold times while customers search for info
- Appointment Booking: Callers checking their calendars
Consider Disabling For
- Emergency Lines: May need to stay connected even during silence
- Listening Services: Where silence is expected and acceptable
- IVR/Menu Systems: Where users navigate with keypresses, not speech
Interaction with Other Features
With voicemail_detection
Both can be enabled on the same assistant. Voicemail detection runs on outbound calls and silence handling on inbound calls, so they never act on the same call.
With max_duration_seconds
If max_duration_seconds is set, the call will end at that time regardless of silence handling state.
With end_call Tool
If the assistant already has end_call in its tools, no duplicate is added. The silence handling instructions simply tell the assistant to use the existing tool.
To leave hanging up out of the model's hands entirely, remove end_call from the tools, set closing phrases for the normal end of a call, and give silence handling a final_message. The model then has no tool to end the call with: a call ends on one of your closing phrases, or after the final silence line.
Webhook Events
When a call ends due to silence handling:
{
"message": {
"type": "end-of-call-report",
"call": {
"status": "ended"
},
"summary": "Call ended after no response from caller..."
}
}The status-update webhook will show status: "ended" (not a special silence-related status).
Troubleshooting
Assistant Not Detecting Silence
- Verify
autonomous_silence_handling: trueis in the assistant configuration - Check the call transcript to see if silence detection prompts appear
- Ensure STT (Speech-to-Text) is properly configured to detect when user stops speaking
Assistant Ending Calls Too Quickly
- The initial delay is 3 seconds by default; raise
speech_config.silence.first_check_secondsif your callers routinely need longer to answer - Review the call transcript to see timing of silence prompts
- The timings are not fixed:
first_check_seconds,interval_secondsandmax_attemptsare set per assistant
Assistant Not Hanging Up After 3 Attempts
- Without
silence.messagesorsilence.final_message, the last attempt depends on the assistant callingend_call; set afinal_messageto have the platform hang up itself - Review the end-of-call-report to see if the assistant attempted to end the call
- The LLM may occasionally not follow instructions perfectly - this is expected behavior with AI assistants