Fallback Pipeline
The Fallback Pipeline in OpenVoiceOS (OVOS) manages how fallback skills are queried when no primary skill handles a user’s utterance. It coordinates multiple fallback handlers, ensuring the system gracefully attempts to respond even when regular intent matching fails.
Pipeline Stages
Pipeline ID | Priority Range | Description | Use Case |
---|---|---|---|
fallback_high |
0 – 5 | High-priority fallback skills | ✅ Critical fallback handlers |
fallback_medium |
5 – 90 | Medium-priority fallback skills | ⚠️ General fallback skills |
fallback_low |
90 – 101 | Low-priority fallback skills | 🚫 Catch-all or chatbot fallback skills |
Fallback skills register with a priority, allowing the pipeline to query them in order.
How It Works
- When no regular skill handles an utterance, the fallback pipeline queries registered fallback skills asynchronously.
- Each fallback skill can decide whether to handle the utterance.
- Fallback skills are tried by priority level (can be overriden by users)
- If no fallback skill accepts the utterance, no fallback response is generated by the pipeline itself.
Skill Integration
Skills integrate as fallbacks by:
- Registering on the message bus with a fallback priority.
- Listening for fallback queries carrying all utterance variations.
- Responding with success/failure on whether they handled the fallback.
This enables modular and customizable fallback behavior depending on your skill ecosystem.
Notes
- The pipeline itself does not define or enforce a default fallback response.
- The default "I don’t understand" reply is implemented in the separate
ovos-skill-fallback-unknown
skill. - This modular design allows developers to create custom fallback strategies or add fallback chatbot skills without modifying the core pipeline.
- Fallback skills are expected to implement some dialog if they consume the utterance
Security
Just like with converse a badly designed or malicious skill can hijack the fallback skill loop, while this is not as serious as with converse some protections are also provided
You can configure what skills are allowed to use the fallback mechanism, you can also modify the fallback priority to ensure skills behave well together.
Since priority is defined by developers sometimes the default value is not appropriate and does not fit well with the installed skills collection
"skills": {
// fallback skill configuration
"fallbacks": {
// you can add skill_id: priority to override the developer defined
// priority of those skills, this allows customization
// of unknown intent handling for default_skills + user preferences
"fallback_priorities": {
// "skill_id": 10
},
// fallback skill handling has 3 modes of operations:
// - "accept_all" # default mycroft-core behavior
// - "whitelist" # only call fallback for skills in "fallback_whitelist"
// - "blacklist" # only call fallback for skills NOT in "fallback_blacklist"
"fallback_mode": "accept_all",
"fallback_whitelist": [],
"fallback_blacklist": []
}
},