I had the idea of extending the conversation component, which can only recognize single sentences so far, but what I had in mind was enabling complex conversations with multiple stages like
(User): Play music -> (HASS): on which device -> (User): In the livingroom -> (HASS) *turns on music*
I know this might sound rather complex at the moment, in my view the only complex thing is to manage different dialogue sessions.
This would enable us to create dialogues constructed from nodes which can jump to one another.
I just had deterministic finite automatons in school and that looks like a simple, yet powerfull solution to build dialoges and has the possibility to configure them in yaml.
As far as my understanding the current system needs to be extended to have sessions.
Each session has a base state, which it will spend most of its time in.
When a new intent is registered, it will find the corresponding dialogue(basically another state in the tree) and give it all the data to handle it.
In a simple case the dialogue could just run a service and return a response. This will end in the base state again.
But on the other hand it could also return a response and then wait for more user input and depending on it, it will run the corresponding next node.
I don’t really know if it is possible to implement this at the moment, but I would like to hear other peoples ideas on this, because in my opinion the conversation module lacks flexibility to be a really usefull