Events

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

Short: Event to set a slot on a tracker

JSON

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

Class rasa.core.events.SlotSet

The user has specified their preference for the value of a slot. Every slot has a name and a value. This event can be used to set a value for a slot on a conversation.

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

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

Restart a conversation

Short: Resets anything logged on the tracker.

JSON

evt = {"event": "restart"}

Class rasa.core.events.Restarted

Conversation should start over & history wiped.

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

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

Reset all Slots

Short: Resets all the slots of a conversation.

JSON

evt = {"event": "reset_slots"}

Class rasa.core.events.AllSlotsReset

All Slots are reset to their initial values.

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

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

Schedule a reminder

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
}

Class rasa.core.events.ReminderScheduled

Schedules the asynchronous triggering of a user intent (with entities if needed) at a given time.

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.

Cancel a reminder

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"
}

Class rasa.core.events.ReminderCancelled

Cancel certain jobs.

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

Pause a conversation

Short: Stops the bot from responding to messages.

JSON

evt = {"event": "pause"}

Class rasa.core.events.ConversationPaused

Ignore messages from the user to let a human take over.

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

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

Resume a conversation

Short: Resumes a previously paused conversation.

JSON

evt = {"event": "resume"}

Class rasa.core.events.ConversationResumed

Bot takes over conversation.

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

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

Force a followup action

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

JSON

evt = {"event": "followup", "name": "my_action"}

Class rasa.core.events.FollowupAction

Enqueue a followup action.

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

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

Automatically tracked events

User sent message

Short: Message a user sent to the bot.

JSON

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

Class rasa.core.events.UserUttered

The user has said something to the bot.

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

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

Bot responded message

Short: Message a bot sent to the user.

JSON

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

Class rasa.core.events.BotUttered

The bot has said something to the user.

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

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

Undo a user message

Short: Undoes all side effects that happened after the last user message.

JSON

evt = {"event": "rewind"}

Class rasa.core.events.UserUtteranceReverted

Bot reverts everything until before the most recent user message.

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

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

Undo an action

Short: Undoes all side effects that happened after the last action.

JSON

evt = {"event": "undo"}

Class rasa.core.events.ActionReverted

Bot undoes its last action.

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

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

Log an executed action

Short: Logs an action the bot executed to the conversation.

JSON

evt = {"event": "action", "name": "my_action"}

Class rasa.core.events.ActionExecuted

An operation describes an action taken + its result.

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

def apply_to(self, tracker: "DialogueStateTracker") -> None:
    tracker.set_latest_action_name(self.action_name)
    tracker.clear_followup_action()

Start a new conversation session

Short: Marks the beginning of a new conversation session.

JSON

evt = {"event": "session_started"}

Class rasa.core.events.SessionStarted

Mark the beginning of a new conversation session.

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

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