# Actions  
Actions are the things your bot runs in response to user input.  
There are four kinds of actions in Rasa:

> 1. **Utterance actions**: start with `utter_` and send a specific message to the user  
> 2. **Retrieval actions**: start with `respond_` and send a message selected by a retrieval model  
> 3. **Custom actions**: run arbitrary code and send any number of messages (or none).  
> 4. **Default actions**: e.g. `action_listen`, `action_restart`, `action_default_fallback`

## Utterance Actions  
To define an utterance action (`ActionUtterTemplate`), add an utterance template to the domain file that starts with `utter_`:

```
templates:
  utter_my_message:
    - "this is what I want my action to say!"
```

It is conventional to start the name of an utterance action with `utter_`. If this prefix is missing, you can still use the template in your custom actions, but the template cannot be directly predicted as its own action.

## Retrieval Actions  
Retrieval actions make it easier to work with a large number of similar intents like chitchat and FAQs.

## Custom Actions  
An action can run any code you want. Custom actions can turn on the lights, add an event to a calendar, check a user’s bank balance, or anything else you can imagine.

Rasa will call an endpoint you can specify when a custom action is predicted. This endpoint should be a webserver that reacts to this call, runs the code and optionally returns information to modify the dialogue state.

### Custom Actions Written in Python
For actions written in Python, we have a convenient SDK which starts this action server for you.

The only thing your action server needs to install is `rasa-sdk`:

```
pip install rasa-sdk
```

The file that contains your custom actions should be called `actions.py`. Alternatively, you can use a package directory called `actions` or else manually specify an actions module or package with the `--actions` flag.

## Execute Actions in Other Code  
Rasa will send an HTTP `POST` request to your server containing information on which action to run. Furthermore, this request will contain all information about the conversation.

## Proactively Reaching Out to the User Using Actions  
You may want to proactively reach out to the user, for example, to display the output of a long-running background operation or notify the user of an external event.

## Default Actions  
There are eight default actions:

| Action | Description |
| --- | --- |
| `action_listen` | Stop predicting more actions and wait for user input. |
| `action_restart` | Reset the whole conversation.  |
| `action_default_fallback` | Undo the last user message and utter a message that the bot did not understand. |
| `action_deactivate_form` | Deactivate the active form and reset the requested slot. |
| `action_revert_fallback_events` | Revert events that occurred during the TwoStageFallbackPolicy. |
| `action_default_ask_affirmation` | Ask the user to affirm their intent. |
| `action_default_ask_rephrase` | Ask the user to rephrase their intent. |
| `action_back` | Undo the last user message. |
