I didn't see any Khan Academy related skills in the skill store, which is a shame because there's so much free content. My kids aren't old enough to use Khan Academy yet, but I hope by the time they are, I hope to provide them with as many learning resources as possible, and this would definitely be a great interface for it!
What it does
Khan Academy's content is pretty vast, so I chose to limit it to the grammar topic only so the skill won't be overwhelmed with options.
How I built it
Lambda and Khan Academy's API
Challenges I ran into
Although the documentation and code samples I found were pretty good, it wasn't really enough for me to develop the skill as I would have liked. For example, it wasn't clear how to maintain a session state using a display directive without using
shouldEndSession (from Alexa Skills Kit in NodeJS), both of which causing Alexa to go into a listening state, but dims the screen and may suggest the screen isn't supposed to be touched. I should have played around with more Echo Show specific skills, but the some of the ones I tried weren't good, or didn't offer the experience I was trying to create.
The Khan Academy API is also not easy to work with out of the box.
Accomplishments that I'm proud of
I'm glad I was able to get it up and running. The Alexa Skills Kit was pretty handy for display directives, but some of the code samples were outdated, so there were times I wasn't sure if I was using the library as intented.
What I learned
Echo Show development is pretty challenging! I still don't know definitively how state management works, or when the session ends when a screen is involved. I tried using state handlers with
ElementSelected intents to handle touch events, which had an undesirable cascading effect, i.e. every state handler's
ElementSelected intent was triggered. Weird.
What's next for Grammar Time
Cleanup, quizzes in place of Khan Academy's lessons