Outputs
The Output(s) in the Flow editor is used to specify one or more answers that are displayed to the end user as the answer to their request.
The pages in this section provide information about the various aspects of Outputs:
Concept
Output nodes in a Flow contains the answer that our application provides to the end user. This can, for example, be a simple answer text, a follow-up question or the results of an information lookup. Whatever the information is that needs to be displayed to the user, it is specified in the Output node of a Flow.
The answer that the end-user receives is extremely important; it dictates how the user perceives the bot and whether or not their query was ultimately solved. It is also where the personality of the bot is decided, and where the company behind the bot can display to their end users what kind of company it is by means of tone of voice, for example.
You can also use Generative AI to generate an output to the end-user. A Gen AI Output is based on a prompt defined in three sections: Personality, Goals, and Gen AI Output node. Generative AI gives more flexibility to the answers, avoids repetition, and helps the user to develop a bot more efficiently. However, you may want to define static answers or use the Teneo Dialogue Resources to handle greetings, chit-chat and other simple, repetitive queries which do not require different answers every time.
When defining static answers, it is recommended to provide multiple answer texts for each Output node so the bot does not repeat itself in case the end-user reaches the same Output node more than once during the conversation. Varying answer texts makes the application sound more intelligent and less repetitive.
The Output's answer(s) specifies how the bot should respond to the user and it is displayed to the end user in response to their request when reaching a given Flow. In the following example, the bot asks the user if they would like to reserve a product. The logic of the Flow then follows one of two paths, depending on whether the user says 'Yes' or 'No'.
To learn more about implementing this logic, read about Flows and matching.
Output nodes without any Answer Text or Input Parameters gets labeled with a “TODO”. These labels are shown in the Flow editor when an implementation is still pending, allowing the solution designer to sketch the Flow by creating the global structure before specifying the details. The "TODO" labels do not affect the functionality of the solution at execution time, the only purpose of the labels is to remind the solution developer of the pending implementation.

Components of an Output
Answers
The main component of the Output node is the answer text: a response from the bot in natural language. Answer texts are specified in the edit view in the Output. Several answer texts can be added, for example to add several variations of the same answer in order for the bot's responses to sound more natural and less repetitive. As mentioned above, it is also possible to use answers texts generated by the Generative AI system.
The quality and style of these answers have a massive impact on how an end user perceives the final application and therefore they need to be planned carefully. The style of answers, e.g., the tone of voice, should reflect the company that the bot represents and, Teneo makes it simple to tailor such design choices to different companies.
See also best practices for writing answers.
Dynamic Values
Sometimes we need to add some dynamic values to the Output node that change depending on the user input. In this case, you can add a placeholder surrounded by ${…} in the Output text. The placeholder should be a Flow Variable or Global Variable which can get the value in the runtime.
- For example, the answer "Okay, a ${orderedCoffeeType} will be ready for pickup in 5 minutes", where the placeholder orderedCoffeeType at runtime is replaced with a value collected from the user input and stored in a variable.
To learn more about how to extract and store information mentioned by the user, see the page on After Matches.
Hyperlinks
Hyperlinks are currently only available in Teneo Studio Desktop.
Hyperlinks can optionally be added to Output nodes. These are included as separate fields in the bot's response. The frontend application can use this field to automatically open a webpage, for example.
Emotions
Emotions are currently only available in Teneo Studio Desktop.
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.
The emotions can be found and added in the 'Globals' section of the solution's backstage.
Skip Conditions
Skip conditions are currently only available in Teneo Studio Desktop.
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 to order one cappuccino please, you want your bot to ask: Ok, what coffee would you like?. But when the user says: I would like to order one cappuccino please, you want your bot to skip the next question, since the user has already mentioned which coffee they would like.
With a skip condition, you can specify that an output node should be skipped (or jumped over) if a particular condition is true.
Skip conditions can be added to an 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.
Resume Prompts
Resume prompts are currently only available in Teneo Studio Desktop.
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 revisited after an interruption. You add resume prompts in the 'Resume Prompts' panel.
Revisitability
Revisitability is currently only available in Teneo Studio Desktop.
You can specify if an output node can be revisited or not in the 'Resume Prompts' section. Revisitability is used to handle 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.
In these cases, the revisitability allows the Output node to survive the interruption and be revisitable, i.e., if a Flow is interrupted after a revisitable Output node, the application will return to that point of the Flow after it has completed the Flow that was triggered by the interruption.
On the contrary, if a Flow is interrupted after a non-revisitable Output node, the application will simply exit the Flow at that point and continue with the Flow that was triggered by the interruption.
The revisitability is specified with a checkbox and it is also possible to limit how many times an Output can be revisited. If the limit is exceeded, the Flow is dropped to avoid that the user perceives the application as being too stubborn.
Note that adding a resume prompt in the same section of the Output node allows the application to give the resume prompt instead of the ordinary answer in cases where the node is revisited after an interruption.
You can see an example of how to Handle Interruptions in the Practical Examples section.
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 application 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.
Output parameters are added to the Output node in the configuration panel. Each output node can have as many output parameters as desired. Each parameter needs to have a name and a value. The name field should contain the name of the Output parameter (without spaces), while the value contains either a static value or a variable (or script) by enclosing it with ${ and }, for example, ${myFlowVariable}.
You can see an example of how to use Output Parameters in the Practical Examples section.
Metadata
Metadata is currently only available in Teneo Studio Desktop.
Metadata can be used to analyze a bot's performance. With Metadata, you create the tags you need and use them to annotate the relevant parts of the solution. In this way, Metadata tags are flexible and can be applied to different solutions in different ways. Once you have applied Metadata tags to your solution, they can be queried with Teneo Query Language, making it easier to get the information you need from the solution logs after a bot has been published and used.
How To
Add
- Teneo Studio Desktop
- Teneo Studio Web
In the open Flow, follow these steps to add a new Output node:
-
Click the Plus icon and, depending on the icon's location in the Flow graph and the desired behavior, select one of the following options:
- Continue With > a transaction element to interact with the end user > queue an Output to be given to the end user Use this option to add an Output node to the existing path.
- Split Path > to a transaction element to interact with the end user > queue an Output to be given to the end user Use this option to create a new path for the new Output node.
- Fork To > Multiple transaction elements > queue an Output to be given to the end user Use this option to create multiple new paths at once, each with a new Output node.
-
Alternatively, select the node in the Flow editor after which the new node should be added and click the Output button in the top ribbon.
-
Remember to Save the Flow to preserve the changes.
When adding an Output node from the top ribbon directly after the User Intent, the new node might be disconnected from the Flow graph. In this case adding a Junction node, selecting it and clicking Set start node allows the user to continue drawing transitions from the Junction to the Output node.
In the open Flow, follow these steps to add a new Output node:
-
Click the Plus icon and, depending on the icon's location in the Flow graph and the desired behavior, select one of the following options:
- Under Continue With > a transaction element to interact with the end user select queue an Output to be given to the end user to add a Output at this point in the Flow dialogue, or
- Under Split Path > to a transaction element to interact with the end user select queue an Output to be given to the end user to split the path and add the Output
- Under Fork To > multiple transaction elements to interact with the end user select queue an Output to be given to the end user to fork the path to various Outputs
-
Lastly, remember to Save the Flow to preserve the changes.
Edit
This section concerns Teneo Studio Desktop.
To edit the different components of an Output node, open a Flow in edit mode, select the Output node to open the Output panel in the right side of the Flow window. Below, you will find more information on the different options available for editing the node.
In the Output panel, simply click in any of the fields or texts to update the name and description of the Output node.
Remember to Save the Flow to preserve the changes.
Hyperlink
Click on 'Add output hyperlink' to add a link.
If the hyperlink referred to in the Output should open in a new tab, add an Output parameter namedLINK_TARGET and give it the value _BLANK.
Answers
- Teneo Studio Desktop
- Teneo Studio Web
- Click in the Answer field to update an existing answer.
- Click Add to create a new answer.
- Click Generate to generate new answers based on either existing answers or a description. Note that this is only available when LLM Settings have been defined for the Account.
- Set the order of multiple answers by clicking the Set Order button.
- When Set Order is clicked, the user is able to select Cycle for the answers to be given in the defined order and when reaching the end, return to the first answer again.
- Use the Drag and Drop to move the answers up or down.
- Select an emotion in the dropdown in the right side of the answer field.
- Delete an answer by clicking the X.
You can include Flow Variables or Global Variables in your outputs using the syntax ${VARIABLE_NAME}.
To edit the answer text:
- Click the Plus icon to add lines for more answers.
- Click an existing answer text to update or write a new answer on one of the empty lines; use Tab to jump to the next existing line.
- Delete an answer by hovering over the text and clicking X in the right side of the node.
You can include Flow Variables or Global Variables in your outputs using the syntax ${VARIABLE_NAME}.
Skip Conditions
Skip Conditions work with Listeners and Variables. Set them up first before following these steps:
- In the Skip Conditions section in the Output configuration panel, click Add.
- Write the raw script expression in the script editor, for example,
variableName == "variableValue". - Choose the transition to Skip to if the script evaluates to true.
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 revisited after an interruption. You add resume prompts in the 'Resume Prompts' panel.
- In the Resume Prompts section in the Output configuration panel, click Add.
- Write the answer text in the text field.
- Optionally select an emotion.
- The Allow output to be revisited option should be activated for the Resume Prompt functionality to work.
Allow output to be revisited is by default set to Limit number of revisits to 2.
Output Parameters
Add Output parameters to provide the frontend with information that has no place in the regular answer text:
- Click Add to create an Output parameter.
- Fill in the Name. The name needs to be written without any spaces and to be unique within the Output node.
- Fill in the Value.
The value can be added directly in the value field for static values; variables or scripts should be preceded with the dollar sign and embraced by curly brackets, e.g.
${myVariable}.
Metadata
Metadata needs to be defined in Globals in Teneo Studio's backstage before they can be assigned to Output nodes:
- Click Add to add a new Metadata definition.
- Select the Metadata from the drop-down menu.
- Set the value of the Metadata.
- Click the Eye button to see/hide the Metadata.
To edit the different components of an Output node, in the open Flow, navigate to the Output node. Below, you will find more information on the different options available for editing the node.
Click Add name to give the Output a name.
Remember to Save the Flow to preserve the changes.
Generate
To enable the option to Generate answer variations, make sure to define the LLM Settings for the Account.
Teneo's copilot features allow you to quickly generate new answer variations based on the answer(s) you've written so far. This can be done with the Generate button as described below.
- Teneo Studio Desktop
- Teneo Studio Web
To automatically generate answer variations, follow these steps:
- In the open Flow, first select the Output node.
- In the Output panel, below Answers, click Generate.
- In the pop-up, select if the answers should be generated from existing answers or from a description and also how many answers should be generated.
- Click Generate; alternatively click Cancel to abort.
- When the data generation has finished, review the answer variations in the preview and click Apply to add them to the Answers.
- Remember to Save the Flow to preserve the changes.
The new answers are highlighted with a yellow border for easy recognizability.
To automatically generate answer variations, follow these steps:
- In the open Flow, first navigate to the Output node.
- Now, click the Generate icon in the side panel of the node.
- In the pop-up, select if the answer variations should be generated from existing answers or a description and also how many answers should be generated.
- Click Generate.
- When the data generation has finished, review the answer variations in the preview and click Apply to add them to the Output node.
- Remember to Save the Flow to preserve the changes.
The new answers are highlighted with a yellow border for easy recognizability.
Delete
- Teneo Studio Desktop
- Teneo Studio Web
With the Flow open, follow the below steps to delete an Output node:
- Select the Output node in the Flow editor.
- Click Delete in the top ribbon.
- Remember to Save the Flow to preserve the changes.
In the open Flow, follow the below steps to delete an Output node:
- Locate the Output node in the Flow graph.
- Click the Recycle Bin in the sidebar.
- Remember to Save the Flow to preserve the changes.
UI
- Teneo Studio Desktop
- Teneo Studio Web
When selecting an Output node in the Flow editor, the Output panel opens in the right side of the Flow window.

The Output panel contains the following options to configure:
| Output panel | Description | Related Pages |
|---|---|---|
| Output | Add Output node name, description, and/or Output hyperlink. | |
| Hyperlinks Currently only in Studio Desktop | Hyperlinks can be specified in answers and the application will then open the page when the Output node is reached. | |
| Answers | Main component of the Output node. Answer texts should be written in natural language and may contain dynamic values. It is the text that is given to the end user. | Answers |
| Generate | Generates answers using Generative AI. | Generate |
| Emotions Currently only in Studio Desktop | In case the application makes use of an avatar, emotions can be added to give it more personality. | Emotions |
| Skip Conditions Currently only in Studio Desktop | Define skip conditions to skip an Output node if a certain condition is met. | Skip Conditions |
| Resume prompts Currently only in Studio Desktop | Prompts given when returning to the Output node after the Flow logic was interrupted. | Resume prompts |
| Output parameters | Output Parameters can be added to include information which has no place in the regular answer text. | Output parameters |
| Metadata Currently only in Studio Desktop | Metadata allows to add a specific value to an Output node which is then logged and can be queried later in the logs. | Metadata |
Practical Examples
Use Output Parameters
Give structured output
It is possible to include JSON as an Output Parameter value which can be particularly useful when wanting to provide structured data rendered by a client application. Let's look at an example from Teneo Web Widget.
Teneo Web Widget offers various Message Types that can be 'attached' to the bot's Output. This is achieved by adding an Output Parameter named teneowebclient with a JSON specific for the message type to the Output node. Below is an example JSON for an image message type:
{
"type": "image",
"image_url": "https://url.to/an/image.png",
"alt": "This is an image"
}
This JSON can be added direct as an Output Parameter value. Or, for clear formatting, it is also possible to use Groovy's JsonOutput to produce this JSON by first adding the following script to a Script node in the Flow:
// create object that contains the image details
def image = [:]
// add details to the object
image.type = "image"
image.image_url = "https://url.to/an/image.png"
image.alt = "This is an image"
// convert object to JSON and store the result in a flow variable
JSON = new groovy.json.JsonOutput().toJson(image)
The last line of the script stores the resulting JSON as a string in a (Flow) variable called JSON which now can be used to populate the Output Parameter by setting its value to ${JSON}.
Use Resume prompts
Handle Interruptions
Handle Interruptions is currently only available in Teneo Studio Desktop.
When building dialogues it is important to also think about what should happen in the use case where the application asks the user for more information, but the user decides not to answer that question at first and rather asks something else.
In the following example, we will adjust a Flow so that it may be interrupted and then resumed with a dedicated Prompt to the end user to continue the Flow where it was left off.
User: I'd like to order a coffee.
Bot: Ok, what coffee would you like?
User: Which coffees do you have? (the coffee-ordering Flow is interrupted)
Bot: We offer a variety of handcrafted coffee drinks - from espressos to macchiatos to flat whites and more.
Bot: Let's continue with your order. Which coffee would you like? (the coffee-ordering Flow is resumed)
User: A flat white, please.
Bot: Ok, a flat white will be ready for pickup in 5 minutes.
In our example, a coffee-ordering Flow is interrupted when the user triggers a second Flow by asking a question about what coffee types are available. These Flows are designed independently of each other, and there is nothing inside the Flows that link them to each other. In fact, once we have adjusted the coffee order Flow to survive interruptions, it may be interrupted by any other Flow and still be resumed at the point it was interrupted.
To cater for the conversation above, you only need to do two things:
- Check that the Output node in the coffee order Flow is prepared to survive interruptions (set it to revisitable).
- Add a resume prompt (optional).
Check that the Output Node is Revisitable
To allow the Output node to survive interruptions you need to make it revisitable. This is how you do that:
-
Open the Flow in edit mode.
-
Select the Output node; this opens the Output panel to the right.
-
Located in the Resume Prompts section is the option for Allow Output to be revisited.
Per default, the option is activated and the limit is set to 2. The limit defines how many interruptions in a row the Output node should survive. If you deactivate the option, you will note that a border around the node in the graph appears! This signals that the node is not revisitable.
There are no clear-cut rules about which Flows (or Outputs) you should make revisitable. Rather, it's an act of balance. On one hand, you don't want your bot to be annoyingly stubborn. On the other hand, if the interruption happens in the middle of a complex Flow, you don't want to drop that Flow and force the user to start all over once the interruption is dealt with. Regardless of your design skills, revisitability is something that you are likely to fine-tune once you've gathered some log data with real interactions.
Interrupt your bot in Tryout
Now test the revisitability feature in Tryout; when the flow has been triggered, try interrupting the bot by triggering a different flow in your solution.
User: I'd like to order a coffee.
Bot: Ok, what coffee would you like?
User: Which coffees do you have?
Add a resume prompt (Optional)
If you want your bot to say something slightly different when the Output is resumed, you can add a resume prompt. This is how you do that:
- Select the Output node that may be interrupted; in our case, 'Ask for coffee type'.
- Scroll down to the 'Resume prompts' section on the 'Output configuration' panel.
- Click 'Add' and enter an answer text. For example,
Let's continue with your order. Which coffee would you like? - Hit 'Save'.
Interrupt your bot again
Test the revisitability feature again in Tryout. In the example conversation below, we interrupt the first flow and can see how it is later resumed.
User: I'd like to order a coffee.
Bot: Ok, what coffee would you like?
User: Which coffees do you have? (the coffee ordering Flow is interrupted)
Bot: We offer a variety of handcrafted coffee drinks - from espressos to macchiatos to flat whites and more.
Bot: Let's continue with your order. Which coffee would you like? (the coffee ordering Flow is resumed)
User: A flat white, please.
Bot: Ok, a flat white will be ready for pickup in 5 minutes.

