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.
If you select an output node, various panels on the right side of the window can be used to alter the output nodes' behavior.
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.
If you define more than one answer text, the final text will be used as a fallback, meaning it will be repeated after all the other answer texts in the output have been given once. For the block of answers texts preceding the fallback you can specify specify whether the bot should pick one at random, or show them in the order provided. To do this, use the toggle 'Order random'/ 'Use current Order'.
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.
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.
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 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 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.
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?