We knew we wanted to do something with Amazon’s Echo because we think devices like personal voice assistants are a growing front of consumer technology. We used Amazon’s Echo because its API is well documented and very detailed and it was comparatively easy to get our hands on Echoes. We danced around many potential skills for Alexa, including a refrigerator companion that could suggest recipes depending on my refrigerator contents or shopping list. We decided to work on a flashcards app for Alexa where we could study custom flashcards and upload them to or import from a website like Quizlet.
What it does
The skill revolves around the user creating and using study sets, which behave like flash cards. The skill allows three main functions as of the current iteration. The first one allows the user to add words and their corresponding definitions to a custom study set. This feature also allows for multi-word terms. The second one allows the user to study a stored study set. There are two “study” modes. The first mode is called “study”, where Alexa goes randomly through a study set, says a definition, and listens for the user to correctly name the term. The terms that the user answers successfully are dropped from the session, and the ones the user answers incorrectly remain in the session. Alexa can then ask the user about it again. The second mode is called “test” where Alexa will ask each definition and then moves on whether or not the user got it right. At the Alexa end will say how many the user got right out of the total. The last feature is one we are still currently working on, where we can import study sets from the website Quizlet via their API.
How we built it
We mainly used the Flask-Ask skills kit for Python. Thankfully there were a lot of resources to help us get started with developing. We also used the Quizlet Developer API 2.0 to access and upload study sets on Quizlet. We collaborated over Git and tested our skill through the Amazon developer console.
Challenges we ran into
Near the beginning we took a lot of time to read about how the Alexa skills API worked. We quickly realized that we had assumed that we would be easily able to store user data like a shopping list on Alexa and access it in between user conversations. We decided to use the Quizlet website to help us by allowing the user to export to and import from Quizlet in order to store the terms that way. Another problems we ran into in the beginning was figuring out a control structure that would allow Alexa to accept certain intents only some of the time. For example, you should not be able to study a new set while in the middle of another one. Our Alexa app involved long periods of user input and involvement, and we wanted to make the control as intuitive and as bug-free as possible. Later, we ran into more problems with the Quizlet API. We spent a lot of time trying to figure this out and decided to attack this together. Each user must provide a secure login through either a login or an OAUTH2 token to Quizlet, which gets in the way of allowing a user to upload a study set through Alexa.
Accomplishments that we're proud of
We’re most proud of how much we’ve improved from when we began learning how to code. Our workflow is much smoother and we are better at dividing the work and resolving challenges through creative thinking and workarounds. We were able to accomplish more of our goals than we thought and we were able to practice and learn new coding, Git, and Alexa API skills. We were proud that we were able to get Alexa working so quickly and figure out how to achieve our goals despite Alexa not working exactly the way we expected it to.
What we learned
We learned a lot about the Alexa development API. We learned about the best practices for Alexa design and how to use many of the features offered by the voice recognition. We also learned about authentication and API use in general through the Quizlet related portion of our project. Additionally, we learned how to collaborate efficiently with Git, and we feel more confident in using it now.
What's next for FlashLearner
We have a lot planned for FlashLearner after the hackathon. We plan to publish our skill to the Amazon store eventually. Before that, we want to flesh out more features, particularly pertaining to storing and retrieving sets from Quizlet. We want to be able to create many custom study sets and preserve them, as well as being able to play more games and have more study methods for all study sets. We want to make the app easier to use on the front end. All in all, we are confident we can conquer any more challenges going forward, as we have already done throughout our project so far.