What to do when users refuse to use your buttons or quick replies.
You’ve laboured for hours and you’ve finally designed the perfect chatbot. You’ve even hooked your bot up with Dialogflow for natural language processing skills. Your conversational flow is smooth but witty, occasionally broken up with quick replies to keep the user engaged. It’s all looking sweet.
Except for one problem.
Despite the slick flow that you designed, users simply refuse to press the buttons that you offer. The result — a stalled bot.
It’s a common design flaw, one that’s present even in high profile bots like Victoria Beckham.
Why? Users don’t use bots like apps — they want to chat, not click on buttons. Global data from bot analytics firm Dashbot.io shows that users press buttons (postbacks) and quick replies less than 40% of the time.
This means that if the success of your bot is dependent on the user clicking on your buttons or quick replies, your bot will fail 60% of the time.
So how do you fix that?
Solution 1: Blindly ignore the user 🙈🙉
In Chatfuel, one option would be to toggle off the button for “Text replies processed by AI”.
However, there is substantial risk of this option backfiring.
In this situation, you’re essentially designing a bot that completely ignores the user, so that you can bulldoze all the way through with your flow.
After all, who cares about the user says anyway? 😝
Solution 2: Build a Circular Death Loop ☠️
If you need a valid response from the user, you could build a circular loop that throws the same question to the user until your buttons are clicked.
How this is done
Save the quick replies to an attribute, then use a “Go To Block” to redirect the user to a new block if the attribute is not set.
In the Answer the Question block, prompt the user to click your buttons and redirect them back to the previous block.
What could go wrong? The user could type a response that matched one of your quick replies.
In this situation, your bot will not be able to understand and respond appropriately. The result — a very frustrated user.
Solution 3: Use Context and NLP with your Quick Replies 🙋♀️
(To learn more about context, check out this tutorial)
How this is done (Note this setup assumes you are using Janis to connect Chatfuel and Dialogflow)
Set up the block with attribute context = giveaway. Turn on the “Text replies processed by AI” option.
In Dialogflow, add “giveaway” to input context of the intent. In training phrases, put all the variants of what a user could say
In the response section, use a custom payload to redirect to the relevant block.
In this situation, your bot will be able to handle any free text response that corresponds to either Red or Pink.
BONUS #1: Set Output Context with lifespan = 1 if you want to cater for incidences where the user changes his or her mind
You can extend the lifespan of the context to allow for users to change their mind. This works well if your users are indecisive, or mildly schizophrenic.
How this is done
Add output context = giveaway with lifespan 1 to both your Pink and your Red color preference intents.
BONUS #2: Cater for any other response!
How this is done
Add new intents to cater for different responses you might receive from the user. (Remember to add input context = giveaway)
In this case, I have output context = “giveaway” with lifespan = 3 to allow the user to exchange more messages with the bot while maintaining the context of the giveaway. This means that the bot will able to recognise when the user has decided on their color preference, within the predefined lifespan (in this case, even if up to three additional messages are exchanged).
Note: The responses to “what about purple lipstick” was triggered by a pre-existing intent in my lipstick agent (i.e. an intent not designed for this tutorial, without any context).
However, because of the extended lifespan, the context is maintained such that when the user finally decides on the red lipstick, the bot is smart enough to recognise that it is in the context of the giveaway.