Many games currently available for Alexa are some form of quizzes (which gets old), or word/card/spacial games that feel clumsy in a voice interface, seeming to need (but lack) supporting visuals.
I wanted to create a different type of game designed from the ground up for voice interaction; something that uses wording variation to seem friendly and non-robotic... something that uses linguistic devices like dramatic pauses to add to the excitement and fun!
I also wanted the game to be so accessible, users immediately pick it up without the need for complicated instruction.
The result of my efforts is an entertaining, easy-to-understand game that uses voice interations to reach beyond the Echo and into living rooms so families (or very close acquaintances) can laugh and bond together.
The Skill is called... Tickle Monster!
Tickle Monster In ActionAs a first step, users activate the Alexa Skill, at which point they are automatically sent to a participant setup page.
After set up, gameplay is intentionally simple; just ask Tickle Monster "Who's Next?".
You can see the game in action in this brief demo:
The Voice User InterfaceThe voice user interface (VUI) for Tickle Monster is intentionally straightforward, so much so that young children understand the basics and adults can easily grasp the nuance!
There are three main flows:
- "Launch Tickle Monster" - which gives instruction on available commands (per VUI best practices).
- "Ask Tickle Monster 'Who's Next?'" - which is the main phrase that drives the game.
- "Ask Tickle Monster to Reset The Names" - which initiates the process of sending the user back to the participant setup page.
Note, however, that the actual voice responses vary somewhat from their representations above for brevity's sake.
The actual responses get a little interesting!
Making Voice Responses More Human, Unpredictable and Fun!For starters, I'll explain the techniques used to make voice responses more engaging. The first technique Tickle Monster uses is randomization, not only in the name of the next tickle victim, but also in the phrase used to make the annoucement.
Specifically, instead of only dryly stating "Tickle Mom" or "Tickle Dad", we have an array of phrases Tickle Monster pulls from. This minimizes any robotic feeling in the interaction, which is helpful in maintaining user engagement in VUIs.
Additionally, Tickle Monster makes use of dramatic pauses through the use of "break" element in SSML. The actual templates look like this (where "break" tags are included and "{TickleVictim}" is a placeholder for the chosen name). These can easily change or expand per taste:
Putting it all together in an example, two back-to-back responses to the question "Ask Tickle Monster who's next", might read:
"You want to know who's next? ... Dad!"
then...
"This time? ... I think Mom!"
And since we've broken the ice with introduction of some code, it's time to show how the Tickle Monster Skill takes steps to keep things simple for not only users, but also developers!
Simplifying The Codebase Through Creative Use of OAuthI mentioned previously how users go through a Tickle Monster participant setup process.
In practice, participant setup is handled through a process called account linking and it's worth going over the basics of how that process works.
Account linking uses the OAuth 2 protocol, specifically an "implicit grant" flow in Tickle Monster's case. OAuth implicit grant typically involves users verifying their identity via a login to your site, whence a user-associated "access token" is sent to Amazon for storage; after assoicating a user with an access token, Amazon will then send the token to your Alexa Skill with each request.
In my case (following the theme of simplicity), I didn't want to require credentials or account setup and I wanted to eliminate the complexity of a database for storing passwords & preferences. I therefore hacked the OAuth protocol to store participant choices as the access token.
It's nice, simple and slightly mischievous: just like the Tickle Monster!
Want to see how that looks in a real world demonstration? Stay tuned.
Basic Set UpIf your interest is piqued enough to set up a Tickle Monster-like Skill for yourself, you should know about the three tiers in play:
- To power Tickle Monster, I chose AWS Lambda to host service code, since it's the easiest/simplest approach (see the "AWS Lambda" resource below for Node.js source code).
- For account linking/participant setup I uploaded an HTML page to my existing HTTPS-enabled web host (see "The Account Linking Web Page" and "TickleMonster.css" for the page's source code).
- Naturally, every skill, including Tickle Monster must use the Alexa Skills Kit for configuration.
If interested, you can deploy everything and get tinkering in minutes. This impressively brief (if I do say so myself) video shows you how!
Alexa Tools And Tickle Monster Code ExplainedIf you've just been intrigued enough to keep reading, you may be curious about the code, how Amazon's toolsets work, or about the specifics of how Tickle Monster uses OAuth to store user selections. This video provides more in-depth detail on the code, tools and trickery!
Alexa Skill ConfigurationFor reference and easy copy/pasting (if following the setup video), the intent schema configuration is:
{
"intents": [
{
"intent": "WhosNextIntent"
},
{
"intent": "ResetNamesIntent"
},
{
"intent": "AMAZON.YesIntent"
},
{
"intent": "AMAZON.NoIntent"
},
{
"intent": "AMAZON.HelpIntent"
},
{
"intent": "AMAZON.StopIntent"
}
]
}
...where the intents map to these sample utterances:
WhosNextIntent who's next
WhosNextIntent who should I tickle next
WhosNextIntent name the next person to tickle
ResetNamesIntent to reset the names
ResetNamesIntent to change the names
ResetNamesIntent to reset participant names
ConclusionThere you have it, the anatomy of "The Tickle Monster" Alexa Skill.
As you can see, fun, engaging voice-driven experiences can happen with only a couple pages of code and a little ingenuity!
I hope you and yours enjoy Tickle Monster as much as my family did!
Comments