Interesting project and motivation (and btw it is scaring how much black mirror is becoming a reality in many aspects)!
I really think RH is an excellent platform and there is a lot of potential to expand with RH as backbone.
I understood it replaces snips.ai, that had some possibilities (in a programmatic way as far I understand) to create the own voice assistant.
IMO at the moment i think people must hack and be somehow expert, and i found complex or a limit, but this is also my absolute little knowledge about the async world (btw you have clarified a lot in that sense, your code is incredibly clean, and the way is packaged is simply great. I have really learned a lot!)
What i think from a system perspective is a bit a limitation, it is the dialogue manager. I mean, it is doing great its job and it is very reliable. But what i found as newbie with little knowledge of some advanced python concepts, it was hard for me to reprogram for my needs.
I have to admit that i was late in my thesis, so i built a monster another dialogue manager in parallel to provide the ROS functionalities to a robot. Initially it has to be just a wrapper, but I have realized i wasn’t able to work properly with the info i want to manage from the ros world and persist it in a dialogue context (as I called, basically a list of many elementary dialogues that create the context). This, in my mind, should go in direction of chatbot, at least for the application i have designed.
But What I would love to see, and i want to create, is (your) dialogue manager based on python transitions, in order to go a direction of dataflow programming (e.g. like red-node). Why? Because i think it would be possible to build (reusable) blocks that can intercept the core functionalities jointly with the hermes protocol. In other words, you have all stuff of messages and then you decide what to listen, how etc. This would be a huge change, but at least it would be easy to use a mix approach (a programmatic async state machine, let me call it). If there is some expert that wish to help us this could be a great GUI approach in future as well.
I really have too many todo on my list, but i’d like to fork the dialogue manager wrote with this idea… But as i said i really need to make some practice on the async world