What should your voice application do when it receives an unexpected user input?
As discussed in my previous blog post, the ability of machines to understand human speech has improved enormously in the past few years. However, no matter how good technology becomes, there will always be situations (caused by background noise, additional people talking, etc…) where what the user says is misunderstood. There will also always be situations where what the user says is perfectly understood, but it’s just not an input that the application expects.
The best way to handle a misunderstood input is very different than the best way to handle an unexpected input. But, distinguishing between them can be extremely difficult, if not impossible, and so a well designed voice application should by necessity gracefully handle either the same way.
Let’s look at an example. Suppose you have an application that provides breakfast recipes, and suppose your user requests a recipe for “french toast”, but the input gets clipped and misunderstood as “wrench toes”. In this case, the best way for the skill to handle it would be something like:
What breakfast would you like to try today?
French toast. (Heard as “wrench toes”)
I’m sorry, I didn’t understand. Could you repeat that?
French toast.
Delicious! We’ve got an excellent recipe for french Toast. Would you like to hear it?
What the application absolutely should not do in this situation is tell the user that no recipe is available, as this would cause the false impression that the breakfast skill lacked a french toast recipe!
On the other hand, were the user to request “breakfast octopus”, it’s entirely possible that, even if the application understands the input perfectly, it doesn’t have a corresponding recipe. In this case, the best interaction would be something like this:
What breakfast would you like to try today?
Breakfast octopus.
I’m sorry, we don't currently have a recipe for breakfast octopus. Can I help you find a recipe for something else?
This presents an issue for the voice application designer. If the input has been misunderstood, the most appropriate response is to politely request that the user repeat the input. On the other hand, if the input is understood but unexpected, the most appropriate response is to tell the user the request cannot be fulfilled, and prompt for a different request.
So, how can these two possibilities both be managed in practice? The most straightforward way is to include what the application heard in the reprompt text. So, in the misunderstanding example above, it would go like:
What breakfast would you like to try today?
French toast. (Heard as “wrench toes”)
I heard you say “wrench toes”, which isn’t a recipe we currently have available. Is this what you requested?
No.
OK. Sorry about that. Could you please repeat your request?
French toast.
We’ve got an excellent recipe for french toast. Would you like to hear it?
This introduces an additional turn, but it makes the application more robust, because the same logic could also handle an unexpected request:
What breakfast would you like to try today?
Breakfast octopus.
I heard you say “breakfast octopus”, which isn’t a recipe we currently have available. Is this what you requested?
Yes.
OK. Sorry we don’t have that one. Is there another breakfast we could help you find?
There are additional design practices that should be kept in mind when following this approach. For example, in response to the question “Is this what you requested?”, the skill should not only accept “yes” or “no” intents, but should also be prepared for responses like “No. I asked for french toast”. This is part of the “be available” design principle we’ll discuss on our next blog post.
It’s worth noting that unexpected inputs can be a very strong indication that your users are confused as to how to use your application. Uncovering points of confusion, and figuring out how to fix them, is one of the major benefits derived from good usability testing. If you’re looking for usability testing for your skill, Pulse Labs would love to help you with it! You can get in touch with us at sales@pulselabs.ai.