I wanted to encourage my wife to use the Echo. This project gives her a way to suggest 'honey do' tasks for me or our kids when she thinks of them, that can be retrieved later. That way when tasks get done, it's positive feedback for her use of the Echo. :)
This is my first ever Alexa Skill. I implemented it in short bursts over the course of two days, using the Alexa Sample Skills as inspiration.
DevelopmentTo get started, I followed the sample skills provided by Amazon. I wanted to be able to learn best practices for structuring the code by following the example of a more experienced skill developer. I found the sample pretty clear and easy to follow. It was helpful to have some structure to work from.
DebuggingDebugging really happened in three ways. I used Javascript for the implementation language. I was able to get some initial syntax checking just by using Node.js on my local system.
After uploading the Lambda implementation. The first debug step was to use the Alexa developer console and try some input. When it didn't work, the debug info was a bit limited. But it was easy to grab the input that was being sent to Lambda.
Taking that input to the AWS Web Console, I could add that as test input to the Lambda function itself, and run it directly from there. That got me much deeper information, right in the Lambda console.
It only took a handful of iterations through this process to get things working smoothly.
DocumentationHonestly I spent nearly as much time on my diagram as the code. I first looked for some best practices for VUIs, but didn't find any. I found some examples (possibly from this contest,) some of which were pretty good. But I thought there was clear room for improvement.
I set a few goals for the diagram
- It should be able to get pretty big without looking cluttered. I took inspiration from how circuit diagrams are often organized for this
- It should be creatable in existing diagram tools. I selected flow chart iconography to support this - available anywhere
- It should not be overly colorful. Color can be pretty, but I wanted this to be presentable in a professional setting.
- Also, it should use shape rather than color to distinguish concepts - for the colorblind
- It should represent the 'state machine' nature of a VUI in an organized way. I broke the diagrams into columns, with each state as a column for this purpose. My simple app doesn't make much use of this, but I feel its important for a generalized diagram practice that covers larger apps.
- It should map back to the code. I made sure to use proper slot names, file names, and intent names and group the diagram such that someone could easily jump from a section of it directly into the relevant code.
I think the result came out pretty good. Given more time, I would add some examples of how to break the diagram across multiple pages for a printed version. But a big, scrollable image seems to be pretty readable, as long as you can zoom in.
And speaking of zoom - if you were going to develop a VUI application, I think it should be zoomable. You should be able to zoom out and just see state transitions and intents, then zoom in to see specific actions, inputs, and outputs within the intents.
VideoI thought it would be cool to have a time lapse of the dev process. I thought it would highlight how quick it was to get up and going. Plus, I thought it would be fun to add some self-made music to the background.
Submission ProcessThe process of taking the skill and submitting it almost doesn't bear mentioning, it's so easy. Just a short web form, and you're done. Very nice!
Overall ImpressionsAny system you can get a decent start with in just two days while busy doing other things is definitely pretty easy to develop for. I actually think my wife is going to use this. "Wife acceptance factor" is critical to any technology. :)
Comments
Please log in or sign up to comment.