Hello @all,
I thought a little bit on how multiple intend handler might fit into the Rhasspy 2.5 Service Architecture.
And that’s the result. It’s just a rough Idea and not all of this must be build together (or at all). Simply what to put this for discussion.
So let me explain a little bit:
The basic idea is, to replace the two intend handling services with a new one. Basically, some kind of dispatcher service, which prepares the event, acquire the corresponding handler and dispatches the event for execution.
The new one has:
-
Intend Handler Types, which are pretty much one or several classes matching a defined interface (e.g. create, setConfiguration, handleIntend). 3 in default (HTTP Server, Local Command, Home Assistant) additional handlers can be added via “skill repository” or per default later on (e.g. SEPIA - which I saw here). An Skill Handler might be a Python module/class, matching the correct interface which is the dynamically acquired either during start or during handling.
-
a “skill repository”, which is basically an Intend Handler Type (e.g. HTTP, local Command, Home Assistant Event, whatever) and an matching configuration for that handler (e.g. the command and arguments for the command handler, the home assistant url and access token for the home assistant event and the remote server for HTTP).
-
an intend to skill mapping. This gives the possibility to provide community based skills (e.g. Daenaras development) and Intends defined by the user (e.g. intend GetTime is mapped to “Skill” SayTime, possibly with additional parameters).
There are a couple of open points though. E.g. what is the skill repository (an directory with sub folders containing a manifest and a configuration).
PS: forgive me, if I:
- Either missed something important on my analysis
- made a couple of mistakes in my text (grammar and spelling wise) as I’m not a native speaker (as you already found out for sure)
PSS: I’ve checked rhasspyremote_http_hermes, and, if I understand right, it is a mixup of remote ASR, TTS, Wake and Intend handling. Is this possible?