How-to

User idle handling

Automatically prompt silent users and gracefully end calls after repeated inactivity.

Overview

When a user goes silent during a call, the idle handling system detects the inactivity and takes action — speaking a prompt message, retrying, and eventually ending the call if the user remains unresponsive.

UserIdleHandlingConfig fields

FieldTypeDefaultDescription
enabledboolfalseEnable or disable idle detection.
timeoutfloat5.0Seconds of user silence before triggering idle handling.
idle_messagestrMessage the bot speaks when the user is idle.
max_retriesint3Maximum number of idle prompts before ending the call.

How it works

  1. User stops speaking.
  2. Idle timer starts counting (configured by timeout).
  3. After timeout seconds of silence, the bot speaks the idle_message.
  4. The idle counter increments.
  5. If the user responds, the counter resets to zero and the conversation continues normally.
  6. If the user stays silent, steps 2–4 repeat.
  7. After max_retries consecutive idle cycles, the call ends automatically via end_conversation.

Counter reset

Any user speech resets the idle counter to zero. The user only needs to speak once to prevent the call from ending — it doesn’t need to be a long response.

JSON example

json
{
  "configurations": {
    "user_idle_configuration": {
      "enabled": true,
      "timeout": 5.0,
      "idle_message": "Are you still there? I'm happy to continue whenever you're ready.",
      "max_retries": 3
    }
  }
}

Configuration tips

ScenarioTimeoutMax RetriesIdle Message
Quick surveys3.02“Are you still there?”
Customer support5.03“I’m here whenever you’re ready to continue.”
Complex forms8.04“Take your time. Let me know when you’re ready.”
Sales calls5.03“I’d love to help further. Are you still on the line?”

Short timeouts

Avoid setting timeout below 3.0 seconds. Users often pause to think, check information, or multitask. Too-short timeouts feel aggressive and hurt the user experience.

Disabling idle handling

To disable idle handling, either omit the user_idle_configuration field entirely or set enabled to false:

json
{
  "configurations": {
    "user_idle_configuration": {
      "enabled": false
    }
  }
}
Was this helpful?