One of the trickiest things in bot design, is to bring your various flows together in conversations. It's easy to create a bot that handles a single task, but this is rarely enough. In fact, even when your bot is designed for one task only, users may ask about other things. This is a fundamental difference between for example GUI design and bot design. In a GUI users may only interact by means of the things that are actually there. Conversations on the other hand, have no obvious borders. So even the smallest bot, needs to have at least one extra flow for dealing with things out-of-scope.

Another special (and cool) thing about conversations is that users may jump from one topic to another without following some anticipated pattern. The user may even interrupt an ongoing flow to ask for supplementary information and then expect the flow to be resumed.

The good news is that these things are exactly what Teneo is built to help you with.

Conversations vs Flows

Flows implement the logic needed to resolve a specific user's question. They can be simple (e.g. a flow that answers the question "What is your favorite color?") or complex (e.g. a flow that helps the user booking a flight), but they always represent some kind of pre-defined conversational pattern. In contrast, a full conversation is rarely foreseeable. Luckily however, you don't have to map it all out!

Let's look at an example:

User: I want to buy a ticket
Bot: Which ticket would you like, A or B?

User: What is the price of ticket A? (buy ticket flow is interrupted)
Bot: Ticket A is 1 million dollars!
Bot: Which ticket would you like, A or B? (buy ticket flow is resumed)

User: Ticket B please!
Bot: Great, ticket B is free!

Two flows are at play in this conversation. First a flow for buying tickets, and then, in the middle of that flow, another flow for giving price information. These flows have been designed independently of each other. And when designing them, this particular interruption may not even have crossed the designer's mind. Still it works, as Teneo takes care of interruptions and resumption automatically.

Teneo also makes it easy to control which flows should be remembered and kept alive (on stack) if interrupted. In fact, you may even control for which particular outputs you want the flow to remain on stack. In Teneo that is called making an output revisitable.

In the example below, the designer has decided not to make the first output revisitable. When the user ignores the offer to open a map, the flow is thus simply dropped:

User: Where am I?
Bot: We are in Stockholm, would you like me to open a map?

User: What time is it in New York?
Bot: It's midnight in New York.

Was this page helpful?