Flow represents an innovative feature within Rasa, aimed at creating intuitive, conversation-focused business logic for your chatbots. These flows are primarily constructed using Studio's Flow builder. However, as part of Rasa's core functionality, they also provide a YAML counterpart, allowing you to define Flow primitives in YAML format.
In its essence, a Flow serves as a conversational state machine in the form of a directed graph. The fundamental component of a Flow is a Step, which can be equated to a node in this graph. Each step defines potential subsequent steps, often associated with specific conditions. Therefore, graph vertices are encapsulated within these steps.
Flows are governed by the flow policy.
name field is a required human readable name for the flow.
description field is a summary of the flow. It is required, and should describe the purpose of the flow. Other components, such as the LLMCommandGenerator, use the description to decide when to start the flow.
A flow is made up from a list of steps. The steps are executed in the order they are defined in the list. Every step in a flow has a type. The type determines what the step does and what properties it supports. A step must have exactly one of they following keys:
- Message: a step to generate a simple message that will be sent to the user.
- Collect information: a question to be asked to the user to collect user input in a slot.
- Custom action: a custom action or utterance action to be run by the flow.
- Link: a step to link to another flow.
- Logic: a step to branch based on a condition.