# Flow

/\* Title: About Flow Sort: 1 \*/

### What are Flows?

A flow is a structured way of interacting with users. In a flow the chatbot will ask questions to guide the user down a certain path, collecting information and providing outcomes and responses based on the users specific needs.

Flows are made by building a sequence of Modules.

### When do I use Flows?

Flows allow you to create scripted or controlled conversations. If you need to collect information from the end user in order to process a request, or you need the user to make a number of choices to reach a conclusion, then Flow is the ideal tool.

### How is a Flow initiated?

You can create as many Flows as you like, but they are only initiated when they are connected to a Q\&A. When you create an Q\&A you select what type of response you want to create and, by selecting Flow Type you can then choose which of your Flows you wish to trigger.

### What are Modules?

A Module is a part of a Flow that performs an action and is represented as a box in the Flow Editor. A sequence of Modules can, for instance, ask the end-user a series of questions and gather the data given in order to fulfil their intent.

Different types of Modules allow you to perform different actions -

* **Gather** modules allow you to ask for information and record it in an **Entity** or a **Variable**. Set prompts, and success & failure responses.
* **Confirmation** modules allow you to present a list of data that you have collected from the end-user and give them the option to make corrections or confirm them.
* **Response** modules allow you to send a response to the end-user. You can use a combination of free text, entities, and variables if needed.
* **Set Variables** modules can set the content of one or more unassigned variables.
* **Integration** modules allow you to initiate an Integration that references an outside service, such as an API call.
* **Jump To** modules let you jump the conversation to another Module or Condition within the same Flow, or to the start of another external Flow.
* **Component** modules will jump the conversation to a [**Component**](https://humley.gitbook.io/humley-studio/enhance-assistant/broken-reference). You can create new Components from this module type, or from the Flow page.

### What are Conditions?

Using only the Modules described above, you can build simple, linear conversations. If you need to build a Flow that could head off down different paths then you need to use Conditions.

Conditions allow you to add logic using comparators (e.g. Equals To, Exists, Not Contains etc.) so that you can branch the Flow depending on end-users' answers and data passed back from external APIs or from within your own service.

### What are Related Q\&As?

The purpose of a Flow is to flip the usual "end-user asks, assistant answers" conversation format to a more structured "assistant asks, end-user answers" format. What happens when you need more flexibility though? Perhaps the end-user cannot answer your question and needs to ask a clarifying question in response, for instance.

Related Q\&As allow you to add Q\&As to a Flow, or even to a specific Gather module in a Flow, to allow an end-user to ask clarifying questions. This is useful to offer information that will help them continue the conversation.

### What are Components?

Components are partial conversations (made up of a number of Modules) that you may want to re-use for different purposes. Think of them as unfinished, mini-Flows. For example, if you wanted to capture some information about a user and email a member of the support team afterwards, you could build an 'Email Support' Component and re-use that, calling it from multiple Flows. At the end of a number of different problem diagnosis Flows the end-user is asked if their problem is resolved. If not, they are sent to the Flow Component to email customer support.

You can jump a Flow's conversation to a Component using a Component module. When the conversation reaches the end of a Component it will return to the original point of origin in the Flow where it was called from.

### Further help

[**Creating Flows and Components**](https://humley.gitbook.io/humley-studio/enhance-assistant/flow/creating-flow-components)\
[**Flow Conditions**](https://humley.gitbook.io/humley-studio/enhance-assistant/flow/flow-conditions)\
[**Related Intents**](https://humley.gitbook.io/humley-studio/enhance-assistant/flow/related-q-and-as)\
[**Quick-Reply Buttons**](https://humley.gitbook.io/humley-studio/enhance-assistant/flow/quick-reply-buttons)\
[**Managing Flows and Components**](https://humley.gitbook.io/humley-studio/enhance-assistant/flow/managing-flow-components)
