Context is important in conversational design. Context can be defined as the state of the conversation and depends on previous messages. The NLP engine keeps track of the state of the conversation, allowing for switching flows during a conversations.
Steps provide context
The way you design flows using steps provides the NLP engine the context it needs to determine which step and flow to match.
We can illustrate that using the following example.
It shows two different flows with the same contextual follow up step: And which is the closest.
So whenever a user triggers the second step by sending
And which one is the closest the context of the first question
How many stars are there in the Milky way? or
I am looking for a restaurant is used as context to match the second step and send a reply.
How context works
You might notice the designing of Flows looks linear, but this is not the case. A user does not get stuck inside a flow whenever a step was matched.
With each new message, like a user sending text, the NLP engine will decide based on context (probabilistic model) what step inside a specific flow to match.
Switching between flows
Below is an another example of a conversation combining two flows.
- A customer starts a conversation with
I want to order pizza(order flow)
- The app replies
Delivery or Carry out?
- The customer doesn't answer that question but instead asks
What's on the menu?(menu flow)
- The app then replies with a menu
- The customer can continue with
I want my pizza delivered(order flow)
Note: Context applies to every trigger
When a user shares an image, shares a location or triggers and event, this also works with context, not just text. The only exception is events, those can be triggered mid-flow.
There are some best practices to follow when designing flows.
Don't combine multiple topics in one flow. For example,
goodbyes are separate topics, try not to combine these with flows like the above
order pizza example. This allows the engine to switch between greetings, pizza ordering and goodbyes without a problem.
Instead, try to make your flows as focussed as possible and keep your app flexible. Create separate flows for each topic. This helps the NLP engine keep track of the position of the conversation.
It's also best practice to start your flows with triggers that are not within context.
In other words, never start a flow with something like a
no text trigger. Such a trigger should best be in context of any previous question or response.
In stead of creating these specific flows you can use branching for these contextual follow ups.
Context builds up and exists for at least 24 hours. Sometimes context can lead to unexpected behavior and for that you can clear context by using a reset action.