You can stack multiple customer.speech.timeout hooks at different intervals to escalate the response — including ending the call after prolonged silence:
{
"hooks": [
{
"on": "customer.speech.timeout",
"options": { "timeoutSeconds": 10, "triggerMaxCount": 3, "triggerResetMode": "onUserSpeech" },
"do": [{ "type": "say", "exact": "Are you still there? Please let me know how I can help you." }]
},
{
"on": "customer.speech.timeout",
"options": { "timeoutSeconds": 20, "triggerMaxCount": 3, "triggerResetMode": "onUserSpeech" },
"do": [{ "type": "say", "prompt": "The user has not responded in 20s. Based on the above conversation in {{transcript}} ask the user if they need help or if not you will be ending the call" }]
},
{
"on": "customer.speech.timeout",
"options": { "timeoutSeconds": 30, "triggerMaxCount": 3, "triggerResetMode": "onUserSpeech" },
"do": [
{ "type": "say", "exact": "I'll be ending the call now, please feel free to call back at any time." },
{ "type": "tool", "tool": { "type": "endCall" } }
]
}
]
}