Voice Intents store (similar to Add-ons)

With voice making its way into Home Assistant, we need a better way to handle loading/unloading intents.

A system similar to Add-ons would appear to be the most “convenient”. Users could check/uncheck intents in a curated list and that would automatically add/remove support on their machine.

  • “Official” intents, “Community” intents, custom repo intents, exactly like add-ons.
  • Handle loading intent with same ID (skip, rename, deactivate current…).
  • Support for creation/linking of helpers/automations/scripts (similar to how the Energy dashboard creates/links forecast when adding solar power), since most intents would use at least one entity.
  • Support for misc entities; right now, “included” intents are very limited, mostly device-specific, we need to add things like time, weather, etc. Some, like timer management, would probably require new integrations for better handling (to avoid cheap hacks like we have to do atm). Every-day uses that are not directly related to devices are a major obstacle for adoption (time, timer, todos, calendar, were the only thing I ended up using Alexa for -before I got rid of it- after I finished tailoring the house’s automation and didn’t have to interact with it much anymore).

On a related side note, a per-entity support for speech output customization (inside entity settings>voice assistants) would be nice; a simple template field to override “default”, with support like sentences (reversed) to provide easy randomness (that last one goes for every TTS template, example below).

(It's|Temperature is) {value}{unit} outside.

re discussion #19012, expanding on non-frontend stuff.