My Fairy Tale
One of the most important qualities a child should be empowered with is creativity. Unfortunately, it's not something that can really be "taught" to a child. They need to discover it for themselves. Luckily, most children are bursting with imagination. I wanted to make a skill that would help give form to it by encouraging them to read out the fantasies in their heads.
What it does
My Fairy Tale allows the child to narrate a story from the brilliance of their mind, line by line. After each bit, My Fairy Tale encourages the child with supportive statements. Once the child ends the story with "The End", My Fairy Tale then stitches all their lines together to read them their entire story, and the child can sit back and revel in the beauty of their own ingenuity.
How I built it
Starting off with the Alexa Starter Skill Guide, I moved on to changing the Python Lambda function to suit my needs. I went through all the great documentation Amazon had on designing voice interfaces, in order to make my skill seem as human and natural as possible. Humans tend to be more unpredictable than machines, so it's important to make sure your skill handles even things it never expected to hear at a given point in time.
Challenges I ran into
Alexa is a little resistant when it comes to accepting free-form text from the user. It took a bit of massaging and tinkering the language model of the skill to get this right, not to mention loads of googling. Apparently, it isn't as common a use-case as I had thought.
Accomplishments that I'm proud of
I was able to finish the entire skill in the span of a week, while juggling work and college commitments too. Also, I'm glad the skill turned out as nice as it is, and it gives me great personal pleasure to see kids use and love it.
What I learned
That AWS lambda isn't hard at all, that a lot of thought needs to be put into designing voice interfaces, and that making skills for Alexa is fun!
What's next for My Fairy Tale
I will be adding more intelligence to the skill, so that it can make more relevant comments based on what the child has said.