# 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](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id4)
To define an utterance action (`ActionUtterTemplate`), add a response to the domain file that starts with `utter_`:

```
responses:
  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 response in your custom actions, but the response cannot be directly predicted as its own action. See [Responses](https://legacy-docs-v1.rasa.com/1.10.5/core/responses/#responses) for more details.

## [Retrieval Actions](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id5)
Retrieval actions make it easier to work with a large number of similar intents like chitchat and FAQs. See [Retrieval Actions](https://legacy-docs-v1.rasa.com/1.10.5/core/retrieval-actions/#retrieval-actions) to learn more.

## [Custom Actions](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id6)
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.

To specify your action server use the `endpoints.yml`:

```
action_endpoint:
  url: "http://localhost:5055/webhook"
```

### [Custom Actions Written in Python](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id7)
For actions written in python, we have a convenient [Rasa SDK](https://legacy-docs-v1.rasa.com/1.10.5/api/rasa-sdk/#rasa-sdk) which starts this action server for you.

### [Execute Actions in Other Code](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id8)
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. [Action Server](https://legacy-docs-v1.rasa.com/1.10.5/api/action-server/#action-server) shows the detailed API spec.

## [Default Actions](https://legacy-docs-v1.rasa.com/1.10.5/core/actions/#id9)
The available default actions are:

|     |     |
| --- | --- |
| `action_listen` | Stop predicting more actions and wait for user input. |
| `action_restart` | Reset the whole conversation. Can be triggered during a conversation by entering `/restart` if the [Mapping Policy](https://legacy-docs-v1.rasa.com/1.10.5/core/policies/#mapping-policy) is included in the policy configuration. |
| `action_session_start` | Start a new conversation session. This action is triggered automatically after an inactivity period defined by the `session_expiration_time` parameter in the domain’s [Session configuration](https://legacy-docs-v1.rasa.com/1.10.5/core/domains/#session-config). |
| `action_default_fallback` | Undo the last user message and utter a message that the bot did not understand. See [Fallback Actions](https://legacy-docs-v1.rasa.com/1.10.5/core/fallback-actions/#fallback-actions). |
| `action_deactivate_form` | Deactivate the active form and reset the requested slot. See [Handling unhappy paths](https://legacy-docs-v1.rasa.com/1.10.5/core/forms/#section-unhappy). |
| `action_revert_fallback_events` | Revert events that occurred during the TwoStageFallbackPolicy. |
| `action_default_ask_affirmation` | Ask the user to affirm their intent. It is suggested to overwrite this default action with a custom action to have more meaningful prompts. |
| `action_default_ask_rephrase` | Ask the user to rephrase their intent. |
| `action_back` | Undo the last user message. Can be triggered during a conversation by entering `/back` if the MappingPolicy is included in the policy configuration. |

All the default actions can be overridden. To do so, add the action name to the list of actions in your domain:

```
actions:
- action_default_ask_affirmation
```
