Understanding How People Text
Note: Article originally written and published by Stéphane Nguyen, VP of Product & Engineering @assist. We agree with Stéphane’s approach to messaging and wanted to share with our audience.
By observing how people text, is it possible to improve a chatbot experience to make it feel more natural?
In this nascent automated messaging space, there is one sentence in the context of hotel booking that developers have spent hours on trying to understand the sentence structure and identify values which will make this query successful:
“I want to book a room in San Francisco on Monday for 3 nights.”
Leveraging natural language processing (NLP) the ability to extract intent in form of identifying a city, the number of people involved and check-in and check-out dates is what a lot of developers working in this space consider to be the holy grail of messaging.
But is this how people really text?
While I believe that understanding a full sentence lays the foundation of understanding, the way people interact with a bot can vary from one full sentence to groups of snippets, rectifying typos or even changing their mind.
The way most bots are built is to process every input to trigger another question or action within the same experience.
If you are a conversational developer, you are probably familiar with how a message is received from the user, processed and sent back. Without going too deep in technical terms, all messaging platforms allow the developer to receive the content of each message (via a webhook).
One input, one command. Not always true
The first mistake developers or product people make is to process each input as a command to trigger an action from the bot. After all, we are used to entering a command to a computer and expect something to happen? More interesting, this is not how a normal conversation unfolds between 2 people.
In any (civilized, non-angry) conversation, people would wait until the other party is done talking/texting before responding. Empathic listening (also called active listening or reflective listening) is a way of listening and responding to another person that improves mutual understanding and trust.
So why not apply this to how a bot understands?
As you can see below, we observe that people don’t write long paragraphs, they write in groups of snippets. When a user texts in groups of snippets, the bot should interpret them as one query instead of 3.
This example also shows that treating 3 inputs as separate query does not help with context either. Additionally, if you build your bot to ask a series of questions in a certain order it will not work appropriately. This is why tree flows don’t work.
Tree flows don’t work. So now what?
How do you code the act of listening?
To make sure the user is done “texting” or “talking” we have to introduce the concept of waiting on hold while acknowledging we are still listening for more input.
One UI artifact most messaging platforms provide is the typing indicator. It sounds simple and unsurprising, but this little element makes the user understand that we are processing something as opposed to “I don’t know if the bot actually works or understands.”
While the user is still typing a text, you can show the typing indicator to acknowledge that something is on hold and processing. If the typing stops, and we receive a message, it is appended to the previous text received.
current query [‘book’, ‘San Francisco’] + appending [‘3 nights’, ‘Monday’]
On the other hand, if nothing is received, there is a wait an idle time (decided by a machine learning engine) to make sure another message is not received and the query is processed as a group.
Taking it a step further: Fixing typos
While thinking about this concept of listening, notice how many times people re-send another text right after they send a text with a typo. Fixing a typo also implies that you want to replace an existing value with a new one.
Because its already possible to identify a date to be a check-in date we know that the user wants to replace the previously entered date.
An eye towards the future
Thinking towards building better conversational experiences while focusing on user empathy opens the conversation to other small but effective improvements.
Looking at the current ecosystem today, it will be important to work on implementing these simple but impactful improvements. This presents a massive opportunity to change the way we interact with machines.
Assist is the leading platform powering automation for businesses on messaging and voice. They power great brands like Sephora, Hyatt, Fandango, 1800Flowers, Lonely Planet, and more. Say hello hi@assi.st or learn more about them here http://assi.st.
Square One Labs is a startup studio powering and automating better messaging experiences. We’re building technology messaging services that help you bridge the gap between your online and offline life.