A screen shot of output to the Alexa App
Another screen shot of the Alexa App
The kids "designing" voice user interfaces
My son's first VUI for the Spelling Champion
The idea for the Spelling Champion came from our oldest son (in the 2nd grade). Like most elementary school students, he get a list of spelling words each week. Typically, we, or one of the older kids, read the word list to my son. He writes the words down, and we check the words together for correctness.
My son thought we could use our Alexa Echo device to help him study; that way, we could multi-task (make dinner, clean the kitchen) while he reviewed his words. He even drew a high level user interface to explain how it would work.
Given his enthusiasm, we spent time together over spring break working with him to "develop" and test his idea.
What it does
Spelling Champion allows a user to create multiple word lists and have Alexa proctor spelling quizzes. Users first create a word list by sending the words to "Alexa" via text message [Note: it's not really sent to Alexa; more on that below]. Alexa will read each word off the list and then spell each word. The user tells Alexa if he got the word correct. Alexa will also send the results to the Alexa app (for a parent to review).
A user can stop/pause a test at any time and return to test, start the test over, or start a new quiz.
How We Built It
We used the Alexa Skills Kit SDK for Node.JS as a starting framework. Session variables and word lists were saved to DynamoDB. For ease, we created multiple "states" for each step of the process. Here are the main modes
- START_MODE : activated when a user accesses the skill for the first time
- SELECT_MODE : "main menu", prompts the user to start a test, create a list, edit a list, or delete a list
- CHOOSELIST_MODE: when the user has created more than one list (the user must choose the list he wants to use)
- CREATE_MODE: User wishes to create a new list
- COMMUNICATENUMBER_MODE: Alexa communicates the mobile number and authorization code needed to create a list
- READLIST_MODE : Alexa reads the word list
- RESUMEREADLIST_MODE : The user stopped a test during reading. This state gives the user the option to continue, start over, or do something else
- SPELLLIST_MODE : Alexa spells the words on the list
- RESUMESPELLLIST_MODE: The user stopped a test during spelling. This state gives the user the option to continue, start over, or do something else
- CONFIRMRESULTS_MODE : The user can obtain the results of the test
More on Obtaining the Word List
We thought that a user would be frustrated attempting to tell Alexa the words on the list.
- Alexa does not always hear words clearly
- Alexa would not be able to distinguish the correct word if it was a homophone[https://en.wikipedia.org/wiki/Homophone]
- Depending on the size of a list, the user might be frustrated telling Alexa each word
Given that, we decided to look into other options to upload the words to the database. We originally planned to create a website, but though that would be cumbersome as the user would not be able to click a link in the Alexa app. We decided to use SMS instead. Twilio makes it relatively simple to receive a text message and do something with it. In this case, we built a second AWS Lambda skill (exposed via the API gateway) that handled getting the name of the list and the words on the list.
Challenges We Ran Into
There were three main challenges that we encountered while building this skill:
- Cards in the Alexa App cannot provide links - this meant that it would have been difficult to create a webpage for the user to create word lists
- Users cannot copy test from the cards in the Alexa App - this meant that for ease we should provide the text number and authorization code by voice AND in the card.
- Alexa struggles to understand letters. Given that, we could not ask Alexa to interpret if the user spelled the word correct. So instead, Alexa spells the word and asks the user if he got it correct.
Accomplishments that I'm proud of
More than anything, we're happy that I got to build this with our kids. The kids can't code in any detail, but they can write down a high level designs and they can test. Seeing their excitement about the skill was awesome.
What we learned
We learned a few things:
- There are easy ways to get around Alexa's limitations- you just have to be creative.
- Looking at similar skills in the Alexa Store - and the user feedback - is a great way to get an idea of what to do or to avoid.
- Kids get excited about seeing their ideas brought to life by Alexa. Our kiddos already have a list of 3-4 ideas that they want to work on over the summer.
What's next for Spelling Champion
- Add "word definition" and "use in a sentence" logic : One of our daughters does a lot of spelling bees; she suggested we add this to make it useful for her spelling bee prep.
- Teacher subscriptions: If a teacher used this to make a list, it would be nice to allow students/families to "subscribe" to her lists - that way, they don't need to create or update their own lists.
- Integration to Word List APIs: There are a few spelling list sites that my kids use. So far, there are no APIs to get the words from a list (you could always screen scrape, but that's a messy and inconsistent solution). If an API is ever created, then we'll add that functionality.