We’re entering a promising new era of computing, where advances in machine learning and artificial intelligence are creating a resurgence of interest in voice interfaces and natural language processing.
It’s a new way to talk with your users.
Thus, we need to think on the voice user interface from the start and see how we can do a better job.
In this post, we will go over some of the most common challenges and how to overcome them.
Welcome users differently when they return
Let your users feel special. It’s good to welcome them with customized message each time.
You should keep an entry in a db for that user’s key. Then simply lookup that entry when welcoming the user, in order to determine which prompt to use. If you want to do even better, save the last time that the user was active and tailor the response base on that. For example, if the user wasn’t active for few months, you can response (almost) as if they are new users and ‘remind’ them what are the popular options.
As we know there are many ways to say “I love you” and anything else.
It’s critical that we will handle different variations for each task.
You should give a thought for all the main ways to say the same thing. In API.AI you should enter all the common options into the “User says” input. That will help the ML to better parse the different variations.
Provide helpful re-prompts and fail gracefully
The conversation should be flowing. It’s your responsibility to offer your users help when things go wrong.
For example (from my bitcoin code lab):
“I didn’t quite get that. I can tell you about bitcoin price, block size or total amount. What do you want to know?”
From here it should be clear to the user what she can do. If the user can not get back to a happy path you can adopt “escalating re-prompts.
- Initialize some fallbackCount variable in your data object, starting from 0.
- Prepare an array of fallback prompts (escalating in clarity) of size 3, and a final fallback prompt which closes the conversation.
- Create a fallback intent (ideally one for each actionable intent in the agent). In the intent handler, pull the fallback count from the data object, increment it, and if it is less than 2, pull the prompt from the array of 2. If the count is greater than 2, close the conversation using the final prompt.
- In all intents which are not fallbacks, reset the fallback count to 0.
(!) When the user is slot-filling in API.AI, the developer will have to enable “web-hook for slot-filling” in the intent, and check for the “action_incomplete” flag in the incoming request to properly handle escalating re-prompts for slot parameters.
Be prepared to help at any time
“Customers may forget what you said but they’ll never forget how you made them feel.” So do your best to make them feel valued by providing them help when they ask for it.
- Create a general help intent, listening for help phrases like:
- ״What can I do?״
- ״What can you tell me?״
- ״Help me!״
- In this intent, you should offer some (rotating) response which offers an overview of what the agent can do, and directs them to a possible action.
- Ideally you also got follow-up help intents in API.AI to create different help scenarios for different actionable intents.
Let user replay information
Always be ready to ‘say it again’. It’s easy way to offer the user an immediate help when they didn’t pay attention or didn’t hear your agent well.
That’s it for now.
I hope that these tips will be helpful for you. A Special thanks to +SachitMishraDeveloper who is the co-founder of these ideas.
If you want to dive deeper please check this check-list.