While fighting boredom at home due to COVID restrictions, I looked to do something interesting and new. Having worked on backend systems for most of my projects, I had very little exposure to front end, mobile app development and the likes. I wanted to learning something new but also do not want it to be so intimidating that it would put me off in the half way. I have been using an Echo device for quite some time. My interaction with Alexa is limited to playing music. So thought of extending it little bit and making it work for my needs.
I am a huge huge fan of GoodBerry’s Frozen Custard. I have tried almost all of their special flavors that they have on rotation. A word of caution: Their frozen custard is so addictive that you will never visit another ice cream or froyo or custard point ever.
It has been a habit for few years for me to check the flavor of the day page very often, especially when driving past it. One disadvantage of that page is that entries show up in a calendar format and not very mobile friendly. I even tried to extract the text from the calendar using a ML library, but it didn’t work well. So I wanted an Alexa Skill to which I can simply ask to get the flavor of the day. For example, I can ask
What is the flavor tomorrow?,
What is the flavor this Friday?,
What's todays flavor?. I surprisingly found few skills in the store already published for this purpose. Much to my dismay, all of them are broken and not working at all. They either return invalid response or simply errors. So I decided to write one for myself and publish it.
It took some time to set up the developer environment (AWS account, Alexa developer console, AWS Lambda if hosting using Lambda functions, etc.). I found the docs to be super expansive and helpful. The boilerplate code included in the skill itself covers many of the mandatory actions so we can focus on the core functionality of the skill. The primary languages for the Alexa Skills Kit SDK are Node.js and Java. Python SDK is still in beta. I am glad they have at least in beta support as I am more comfortable with Python than the other two SDKs.
I worked on sample skills such as City Guide and Pet Match to familiarize myself with the skill development process and the SDK. That gave a good reference to start my own skill. The end point for Alexa Skill can be any HTTPS endpoint, however many go with an AWS Lambda for ease of simplicity and flexibility. I chose to go with Alexa Hosted Skills to get started on the fast track. It comes with the following resources:
- 1 million free AWS Lambda requests, 3.2 million seconds of compute time per month
- 5 GB of Amazon S3 storage, 20,000 get requests, 2,000 put requests, and 15 GB egress transfer per month
- 50GB storage for the skill code and 10K git requests per month.
That was way more than what my skill would need. So it was a no brainer to go with Alexa Hosted Skills instead of hosting my own AWS Lambda and S3 buckets. After couple of weekends, I got my skill to a pretty good working state and submitted for approval. My skill GoodBerry’s Day is now officially available in the Skill Store after passing the certification.
It turned out to be a great learning exercise. I refreshed some of my AWS knowledge, learnt the ASK SDK, basics of Voice UI, SSML, Alexa Skill certification and many more. I am planning to follow it up with some new features (such as date lookups, reminders, e.g.
Alexa, ask Goodberry's Day to remind me when Pumpkin is available) regular updates going forward.
- Get availability data by asking your favorite flavor. e.g When will I get pumpkin?, Is smores available today?
- Get flavor data for the entire week - e.g. What’s special this week?
- Click here to try out the skill