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()