I was inspired to create a companion app for my YouTube unboxing channel with my sister. There are so many subscription boxes, we don't have the time to review them all. However, we have discovered so many great boxes we believe people should know about. We hope they learn about new subscription boxes, try them, or give them as a gift.
What it does
A user decides if they want a box for a pet, a person, or the box of the week. If the user picks a pet box or box of the week, it will provide the name and an image. If they request a person box, it will ask for the person's gender identification (male, female, or neutral) and age group (baby, child, teen, adult). The skill will provide the user with the correct box for the person of that gender identification and age group. Then, the skill will ask the person if they want more information about that box. If so, the user will get a brief description, a price list, and the website.
How I built it
This code was build using, of course, Alexa Conversations with NodeJS, S3, CodePipeline with CodeBuild, and Bash scripting. Once the dialogs were created, I added utterances, responses, APIs, and slots to help the Machine Learning fill in the information. Next, I wrote the code for the API handlers. After the code work, I created a bash script to build the code and send the code to Lambda. After the skill was added to the Amazon store, I created a CodePipeline. The CodePipeline waits for new code to be pushed to the master branch. After its pushed, it builds the codes and zips it up. The zipped code is pushed to the development Lambda function and to an S3 bucket. Next, the Pipeline waits for Manual approval. This gives me time to listen for any grammar or spelling errors I missed during development. Once approved, the zipped file is copied from S3 and pushed to the production Lambda. With one git push, I can get my code from deployment to test to production.
Challenges I ran into
The first challenge was understanding Alexa Conversations. Normally, I work on code and create intentions as I need them. With Alexa Conversations, coding was last. I had to learn how to create the dialog. From that dialog, you create slots, utterances, responses, and then APIs. Having all the necessary information for an API's helper was a new concept for me. Thankfully, it provided less error checking and less code. Second, understanding the Conversations' error messages. Some messages were ambiguous or hard to understand. With time, practice, and a great Slack channel, I was able to learn about the error messages. Third, trusting Machine Learning. As I stated before, I am accustomed to doing error checking, I had to trust the Machine Learning would fill in the slots as promised for the API's Helper and double back if anything was missing.
Accomplishments that I'm proud of
First, completing the challenge and my skill being accepted on the first try. I was very frustrated in the beginning due to a lack of control. However, I can see that focusing on user experience, instead of predicting user errors, helped me create a skill with better human interaction. For the first time, I was able to put myself in the users' shoes by creating a dialog for them. Because of this challenge, user first, code second, will be my new motto.
What I learned
I learned the power of Machine Learning. With Alexa Conversation, I was able to focus on the users, not the code. With less code to write, I made fewer mistakes in development. I spent time mapping my dialogs, interfaces, and responses. Alexa Conversations made me stop and pay attention. The user will no longer be an afterthought to my coding. Oh, and I learned how to use Alexa Conversations. I want to take a look at my old skill and try transferring it to an Alexa Conversation skill.
What's next for Subscription Addiction
Creating two In-Purchasing items. First, in-purchase item is a one-time purchase for sponsors. Sponsors will be featured for a month, week, or day (depending on payment) and added to the beginning, end, and special section of the skill. With the sponsorship, we can create exclusive promo codes for our users. Second, a subscription in-purchase item. The subscription will have a robust database (AuroraDB), where users can search by categories like fashion boxes, cooking boxes, arts & crafts boxes, etc.
Later I would like to add Skill Cards. I wasn't able to create skill cards before the skill was due. However, I would like users to have the information on their Alexa App.