# Events

Conversations in Rasa are represented as a sequence of events. This page lists the event types defined in Rasa Core.

Note

If you are using the Rasa SDK to write custom actions in python, you need to import the events from `rasa_sdk.events`, not from `rasa.core.events`. If you are writing actions in another language, your events should be formatted like the JSON objects on this page.

## General Purpose Events

### [Set a Slot](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id3)

**Short**  
Event to set a slot on a tracker

**JSON**  
```  
evt = {"event": "slot", "name": "departure_airport", "value": "BER"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker._set_slot(self.key, self.value)
```

### [Restart a conversation](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id4)

**Short**  
Resets anything logged on the tracker.

**JSON**  
```  
evt = {"event": "restart"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    from rasa.core.actions.action import (  # pytype: disable=pyi-error
        ACTION_LISTEN_NAME,
    )

tracker._reset()
    tracker.trigger_followup_action(ACTION_LISTEN_NAME)
```

### [Reset all Slots](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id5)

**Short**  
Resets all the slots of a conversation.

**JSON**  
```  
evt = {"event": "reset_slots"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker) -> None:
    tracker._reset_slots()
```

### [Schedule a reminder](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id6)

**Short**  
Schedule an intent to be triggered in the future.

**JSON**  
```  
evt = {
  "event": "reminder",
  "intent": "my_intent",
  "entities": {"entity1": "value1", "entity2": "value2"},
  "date_time": "2018-09-03T11:41:10.128172",
  "name": "my_reminder",
  "kill_on_user_msg": True,
}
```

#### Effect
When added to a tracker, Rasa Core will schedule the intent (and entities) to be triggered in the future, in place of a user input. You can link this intent to an action of your choice using the [Mapping Policy](https://legacy-docs-v1.rasa.com/1.10.24/core/policies/#mapping-policy).

### [Cancel a reminder](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id7)

**Short**  
Cancel one or more reminders.

**JSON**  
```  
evt = {
  "event": "cancel_reminder",
  "name": "my_reminder",
  "intent": "my_intent",
  "entities": [
        {"entity": "entity1", "value": "value1"},
        {"entity": "entity2", "value": "value2"},
    ],
  "date_time": "2018-09-03T11:41:10.128172",
}
```

#### Effect
When added to a tracker, Rasa Core will cancel any outstanding reminders that match the `ReminderCancelled` event.

### [Pause a conversation](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id8)

**Short**  
Stops the bot from responding to messages. Action prediction will be halted until resumed.

**JSON**  
```  
evt = {"event": "pause"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker) -> None:
    tracker._paused = True
```

### [Resume a conversation](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id9)

**Short**  
Resumes a previously paused conversation. The bot will start predicting actions again.

**JSON**  
```  
evt = {"event": "resume"}  
```

### [Force a followup action](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id10)

**Short**  
Instead of predicting the next action, force the next action to be a fixed one.

**JSON**  
```  
evt = {"event": "followup", "name": "my_action"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker.trigger_followup_action(self.action_name)
```

## Automatically tracked events

### [User sent message](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id12)

**Short**  
Message a user sent to the bot.

**JSON**  
```  
evt = {
    "event": "user",
    "text": "Hey",
    "parse_data": {
        "intent": {
            "name": "greet",
            "confidence": 0.9
        },
        "entities": []
    },
    "metadata": {},
}
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker.latest_message = self
    tracker.clear_followup_action()
```

### [Bot responded message](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id13)

**Short**  
Message a bot sent to the user.

**JSON**  
```  
evt = {"event": "bot", "text": "Hey there!", "data": {}}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker.latest_bot_utterance = self
```

### [Undo a user message](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id14)

**Short**  
Undoes all side effects that happened after the last user message (including the `user` event of the message).

**JSON**  
```  
evt = {"event": "rewind"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker._reset()
    tracker.replay_events()
```

### [Undo an action](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id15)

**Short**  
Undoes all side effects that happened after the last action (including the `action` event of the action).

**JSON**  
```  
evt = {"event": "undo"}  
```

### [Log an executed action](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id16)

**Short**  
Logs an action the bot executed to the conversation. Events that action created are logged separately.

**JSON**  
```  
evt = {"event": "action", "name": "my_action"}  
```

### [Start a new conversation session](https://legacy-docs-v1.rasa.com/1.10.24/api/events/#id17)

**Short**  
Marks the beginning of a new conversation session. Resets the tracker and triggers an `ActionSessionStart` which by default applies the existing `SlotSet` events to the new session.

**JSON**  
```  
evt = {"event": "session_started"}  
```

#### Effect
When added to a tracker, this is the code used to update the tracker:
```python

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker._reset()
```
