I've recently bought an Amazon Echo and I have to say it's brilliant! For anyone without an Echo, it's basically a speaker coupled with the Alexa voice service (AVS). AVS is an intelligent cloud service that enables voice interaction with Internet enabled skills. The current skills offerings include some from well known sources such as Uber (order a car to your home), Just Eat (order some food) and Capital One (manage your creditcard).
Being a developer I've also been looking into how I can create skills for the Alexa Voice Service (AVS) and have created a few sample skills. But it took me a while to get the development environment set-up and certification to the AVS store (as with any app store) isn't trivial! With that in mind I thought it would be helpful for myself and others if I documented the steps I've gone through from setting up my development environment to getting my first skill certified by Amazon.
The posts in this series will take us through the following:
1. Overview and prerequisites (this post).
2. How to set-up your development environment.
3. How to develop a custom skill.
4. How to test your skill on an Alexa-enabled device.
5. How to successfully certify your skill.
All the source code for this project can be found on Github.
Alexa Voice Service (AVS)
Alexa has a set of capabilities she can perform, known as skills. There are built-in skills (such as asking the time, date, weather, etc.). But we can also create custom skills and give Alexa new abilities.
A custom skill consists of the following:
- Invocation Name - This is the name that uniquely identifies your custom skill.
- Intents - These represent the actions users can perform using your custom skill.
- Utterances - These are the phrases that users can say to activate the different intents (actions) in your skill.
- Configuration - This is required so that the AVS knows where to route your skills requests from the Alexa-enabled device.
- Service - We must provide an Internet accessible web service or AWS Lambda service to accept the intent requests and provide a response. I'll be using AWS Lambda in this example custom skill.
The Custom Skill
Now I don't know about you, but quite often my partner and I can't decide between two options (should we eat here or there, go to the cinema or the pub, etc.). With that in mind, wouldn't it be useful if I could ask Alexa who is right? Should we go with what Simon wants or what Claire wants?
That's the intention of our sample custom skill. We're going to be able to ask Alexa who is right and she'll use her widsom to discern the best course of action (via random number generation).
So we'll be able to say things like "Alexa... open Who Is Right", and then ask "Is it Simon or Claire?". Disclaimer: The app might be biased in favour of anyone called Simon...
So, what do we need to have set-up in order to start off creating our custom skill? Well, you need an Amazon Developer Account, an AWS account (Free Tier) and an Alexa-enabled device.
- Amazon Developer Account - To set-up a developer account, simply go to the developer website and sign-up. Once signed up, take a look at some of the help docs around the Alexa Skills Kit.
- AWS Account - Go to the AWS homepage and sign up for the Free Tier.
- Alexa-Enabled Device - Go buy an Echo or Echo Dot. Failing that you can set-up Alexa on a Raspberry Pi. I've done this and it's good fun to mess with. Some instructions are here.
Once that's done you're all set to move onto the next post.