Inspiration
Studying as a group is an efficient and fun way to study. We wanted to give students the ability to anonymously form study groups with people far away while also providing a way to efficiently aggregate questions and answers. We chose to combine exciting new technology with something students were familiar with. Alexa offers an unparalleled interactive auditory experience while Piazza offers a great way to connect students with TAs, professors, and other students to help answer questions.
What it does
Study Alexa Online makes collaborative studying easier by turning the Alexa into a tool to connect to the collectively knowledge of other peers. SAO is an Alexa skill that connects users with to a Piazza class. Students can issue commands to Alexa to ask and answer questions. When a question a students ask is answered, they will receive a notification on Alexa. Within a class, SAO enables students to join subgroups where they can ask and answer questions independent of the class in Piazza.
How we built it
We created a REST API that serves as the middleman between Alexa, Piazza's API, and our MongoDB database. Our team split into two groups. During the hackathon, one group worked primarily with Javascript to program Alexa. The other groups worked on developing our API, exposing a few basic endpoints, and deploying our API to a Heroku server. To store data about the groups users belong to, we introduced a MongoDB instance that lives on GCP.
Challenges we ran into
SAO's development had a rocky start. Control of Alexa was accomplished using Alexa-hosted Node.js code. However, we were not accustomed to writing serverless friendly code. Our ideas for the application had to include the storage of states. Consequently, we could not directly interface Alexa with the Piazza API. After trying many ideas, we eventually settled on creating a python Flask REST API for Alexa to send HTTP requests to. This API would also allow us to store non-Piazza relevant data on MongoDB. We also misunderstood how MongoDB worked. Initially, we stored every single piece of data on separate pages. This was not efficient and was causing PyMongo functions to create output that we were not expecting.
Accomplishments that we're proud of
It's a bit amazing that our project functions with so many components hosted on different platforms. We have Alexa-hosted serverless Node.js code, a Python REST API hosted on a Heroku server, and a MongoDB instance that lives on Google Cloud Platform. We are also proud of how we managed to navigate through the problems of learning how to develop with Alexa. One time consuming problem was figuring out how to chain together data from multiple Alexa intents. The serverless nature of Alexa made the simple straightforward route of chaining together from multiple Alexa intents in code difficult. However, we still managed to figure it out.
What we learned
We learned a lot about the creation of Alexa skills. Nobody on this team had ever worked with Alexa before. We didn't have the slightest clue on how utterances, intents, or how to even write code for Alexa at the start. Over the course of the hackathon, I believe that our team has become competent at Alexa development. Our team is also fairly new to working with MongoDB. We were using PyMongo to interact with our MongoDB database, but we had a few misconceptions about how MongoDB stored data. For a good chunk of time, we always assumed that the functions that we wrote to store data in MongoDB worked. We never really did any testing on retrieval until we had to write functions that did just that. A lot of time was lost on diagnosing where the error occurred. Not only did we learned more about how MongoDB stored data, but the greater, more universal lesson here is to always test the results of our function calls.
What's next for Study Alexa Online
SAO user's experience is a bit rough. The organic conversational nature that the Alexa project embodies could be made stronger with adjustments to certain Alexa utterances and logic. The group feature of SAO could be fleshed out more. It would be great if students can easily find and join group specific conference calls. While the conference calls are going, it would be great if questions that come up during the conference calls would automatically be added to Piazza. Ultimately, we want SAO to make students studying together as convenient and organic as possible
Built With
- alexa
- amazon-web-services
- flask
- gcp
- heroku
- javascript
- lambda-functions
- microservices
- mongodb
- node.js
- piazza
- pymongo
- python
- rest
Log in or sign up for Devpost to join the conversation.