This post is a continuation of a series of posts describing how to create a custom skill for the Alexa Voice System (AVS). The posts in this series are:
1. Overview and prerequisites.
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. (this post).
All the source code for this project can be found on Github.
Applying for Certification
So, you've tested your skill thoroughly and now you're ready for certification? Great! Now all the remains is to enter the details on the Publishing Information and Privacy and Compliance pages of the Alexa Skill configuration on the developer portal.
I won't step through each section of this area of the configuration as it's pretty self-explanatory. However, I would suggest you read the guidelines for this data as Amazon can be strict and will reject your skill if there are spelling or grammatical errors.
You also need to specify large and small icons for your skill. Make sure these are of sufficient quality as they're used in the skills store.
Privacy and Compliance
Again this step is really self-explanatory and requires minimal input for the simple skill I've created.
When you're happy with the information that's been entered select Submit for Certification.
After applying to certify my skill, the first two attempts resulted in failure. The following are details of where I fell over and what I did to fix it!
One area I'd not tested properly was the built-in intents (i.e. help, cancel, etc.). Fortunately the response from the Alexa skill certification team is really useful and they provide a step-by-step walkthrough of the problem they've found (shown below).
So you can see here that I'd not properly wired up the stop/cancel intent when the application is launched (as opposed to an instantly executed intent). This was quite simple to fix in the code. But it was totally due to neglecting to read the Submission Checklist.
Ending the Session
The second failure I had for my certification was around when the session ended (i.e. when the skill terminated). Here I'd made the mistake of mistakenly thinking I shouldn't terminate the skill after the main intent had been executed. For example, I thought after the user had asked Alexa "who is right" that I should keep the session open to enable future questions. However, again a quick scan of the Submission Checklist soon put me on the right track again.
To verify this behaviour was correct I added tests to ensure when the session was left open (on launch intent) and when it was closed (after the main "who is right" intent and exit/close).
So from the issues I had, my main tips would be:
Read the Submission Checklist. I know this is common sense, but easy to miss when you're excited to release your skill!
Write unit tests to verify the session ending behaviour. After making changes it's all too easy to alter the way the skill session ends. Having tests means we can always check that our intents are exhibiting the correct behaviour.
So there we have it. As I said at the start of these posts the skill I created was very basic and more of a practice run creating a bit of a fun skill. Next I'm going to tackle something a bit more tricky. But for now it's been a fun and valuable experience and I've got a skill in the store!