As a developer/poweruser it would be useful if Alexa could remote control a computer. However, often what you want to remote control is too specific to create an individual Alexa skill for, and thus the idea is never realized.
I thought that was a shame and wanted to build a solution that allows you to easily create code snippets (plugins), that you can install in an application on the computer you want to remote control. The application (Alexa Remote Desktop) is linked to your Alexa account, which allows Alexa to activate via voice the plugins that you have installed on the computer.
What it does
The Alexa skill is a very simple skill that allows the user to forward a voice command to a computer with the Alexa Remote Desktop application installed. The connection between the Alexa skill and the Alexa Remote Desktop application is created using account linking.
What the voice command does depends on which plugins are installed on the computer. If the voice command activates any of the installed plugins, the code of the plugin will run on the computer. For demo purposes I have created a plugin that allows Alexa to put the computer to sleep. The plugin model allows other developers to develop and publish their own plugins, that can do other tasks, e.g. start/stop processes or whatever is desired.
How I built it
I got the idea when the SearchQuery intent was released for Alexa Skills, as it makes it possible to create skills that are less limited in terms of what they understand. With the SearchQuery intent I was able to create a skill that could forward wildcard information to my backend. Connecting the backend to the Alexa Remote Desktop application is accomplished using websockets as it was the cheapest options. It is built using Electron, because it allows it to be cross platform (only tested on Windows).
Challenges I ran into
Building the solution was not as technically challenging as I initially thought, mostly because all the technologies involved are well-documented. The challenges will be to make sure that it works reliably cross platform and at scale, that will be the focus of the beta as well as ensuring that the plugin models support the wishes people might have.
Accomplishments that I'm proud of
I feel it is an original idea, that is solved in a elegant way, that hopefully appeals to other developers.
What I learned
This is my first Electron application which turned out quite doable. I have cut a few corners in the interest of getting the beta complete in time, I wish I had started on the project earlier.
What's next for Alexa Remote Desktop
I will allow people to test it out and provide feedback in github for wishes and bugs that they might encounter. If the interest is there, I will spend the time to extend it with more plugins and some of the many ideas I left out.