Outputs

Output nodes are flow nodes that specify how the bot should respond. Most importantly they contain the answer texts, but they also let you specify various other properties.

Examples of outputs in a flow

If you select an output node, various panels on the right side of the window can be used to alter the output nodes' behavior.

Answer texts

The most common thing to add to an output node is an answer text: a response from your bot in natural language. Answer texts are specified in the 'Answers' panel. You may add several answer texts that are phrased slightly differently. Having multiple variations of an answer text is mostly relevant when you expect that the flow which contains the answer, might be triggered several times in the same conversation. That way your bot won't sound repetitive if a user runs into the same output node more than once.

Example of multiple answer text in an output node

If you define more than one answer text, you can specify whether the bot should pick one at random, or in the order provided. To do this, use the toggle 'Order random'/ 'Use current Order'. Teneo will repeat the final answer (marked as 'Fallback') if all answer texts in the output have already been given once.

Revisitability

Still in the 'Answers' panel, you can specify if an output node can be revisited or not. Revisitability has to do with interruptions, for example situations where your bot has asked a question to the user and the user responds with a request for clarification, switches topic, or simply responds in a way that is not understood.

Let's look at an example:

User: I'd like to order a coffee.
Bot: Ok, what coffee would you like?
At this point the flow that handles coffee orders is triggered and the bot asks for the coffee preference of the user.

User: Which coffees do you have?
The user does not answer the bot's question, but asks a different question instead. In other words: the flow that handles coffee orders is interrupted.

Bot: We offer a variety of handcrafted coffee drinks - from espressos to macchiatos to flat whites and more.
The bot finds another flow to answer the users question and...
Bot: Let's continue with your order. Which coffee would you like?
...then continues the with the flow that handles coffee orders. To be more specific: the output node that asks for the coffee preference is revisited.

User: A large flat white, please.
Bot: Ok, a large flat white will be ready for pickup in 5 minutes.
The flow that handles coffee orders is finished.

In short: if you want your output node to 'survive' an interruption, you make it revisitable. Otherwise, you make it non-revisitable.

  • If a flow is interrupted after a revisitable output node, your bot will return to that point of the flow after your bot has completed the flow that was triggered by the interruption.
  • If a flow is interrupted after a non-revisitable output node, your bot will simply exit your flow at that point and continue with the flow that was triggered by the interruption. You can thus think of non-revisitable output nodes as optional end nodes, or exit points. They even have the same appearance as end nodes: they have a purple border.

Examples of revisitable and non revisitable outputs

You specify revisitability with a toggle in the 'Answers' panel. Here you can also limit how many times you allow the output to be revisited. If the limit is exceeded, the flow is dropped. This way you can avoid your bot to become too stubborn.

Resume prompts

If you add a resume prompt to an output node, that prompt will be given instead of the ordinary answer texts when the node is revisted after an interruption. You add resume prompts in the 'Resume Prompts' panel.

Skip conditions

Skip conditions are used to prevent your bot from asking for information that is already known.

For example, if a user says: I would like an ice cream please, you want your bot to ask: Ok, what flavor would you like?. But when the user says: I would like a strawberry ice cream please, you want your bot to skip the question: Ok, what flavor would you like?.

With a skip condition, you can specify that an output node should be skipped (or jumped over) if a particular condition is true.

You add skip conditions to your output node under its 'Skip conditions' panel. There you specify the condition when it should be skipped (e.g. if the variable for flavor has already been set), and where it should skip to, i.e. which transition to follow after the output has been skipped.

The page How to build a slot filling flow shows how to build a flow that can handle coffee orders and it uses skip conditions to avoid redundant questions.

Output parameters

Output parameters can be used to provide your app with information that has no place in the regular answer text. For example, suppose a bot can provide weather information in a mobile app. The answer text of an output might contain a humanlike description of the weather (It's quite sunny in Amsterdam at the moment, make sure to wear sunscreen!). But in addition to that, the app could display a widget with more detailed weather info. The information that needs to be displayed in the widget could be passed on as JSON in an output parameter. Each output node can have as many output parameters as you like, each parameter needs to have a name and a String as value.

You add output parameter to your output node under its 'Output Parameters' panel.

URLs and emotions

Each output node has a separate URL field. This URL is included as a separate field in your bot's response. The frontend application can use this field to for example automatically open a webpage. The same is true for 'emotions': each answer text can have an emotion associated with it. This emotion is included as a separate field in your bot's response and can for example be used by frontends that display avatars.

For more technical details on how applications can connect to your bot and Teneo's response format, please refer to Connect to your bot.

Was this page helpful?