Rasa SDK
These docs are for version 1.x of Rasa Open Source.
User Guide
- Installation
- Tutorial: Rasa Basics
- Tutorial: Building Assistants
- Command Line Interface
- Architecture
- Messaging and Voice Channels
- Evaluating Models
- Validate Data
- Configuring the HTTP API
- Deploying your Rasa Assistant
- Cloud Storage
NLU
- About
- Using NLU Only
- Training Data Format
- Choosing a Pipeline
- Language Support
- Entity Extraction
- Components
Core
- About
- Stories
- Domains
- Responses
- Actions
- Policies
- Slots
- Forms
- Retrieval Actions
- Interactive Learning
- Fallback Actions
- Knowledge Base Actions
Conversation Design
API Reference
- Action Server
- HTTP API
- Jupyter Notebooks
- Agent
- Custom NLU Components
- Rasa SDK
- Events
- Tracker
- Tracker Stores
- Event Brokers
- Lock Stores
- Training Data Importers
- Featurization of Conversations
- Migration Guide
- Rasa OSS Change Log
Migrate from (beta)
Reference
Rasa SDK
Rasa SDK provides the tools you need to write custom actions in python.
Installation
Use pip to install rasa-sdk on your action server.
pip install rasa-sdk
Running the Action Server
If you have rasa installed, run this command to start your action server:
rasa run actions
Otherwise, if you do not have rasa installed, run this command:
python -m rasa_sdk --actions actions
You can verify that the action server is up and running with the command:
curl http://localhost:5055/health
You can get the list of registered custom actions with the command:
curl http://localhost:5055/actions
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.
Actions
The Action class is the base class for any custom action. It has two methods that both need to be overwritten, name() and run().
from rasa_sdk import Action
from rasa_sdk.events import SlotSet
class ActionCheckRestaurants(Action):
def name(self) -> Text:
return "action_check_restaurants"
def run(self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
cuisine = tracker.get_slot('cuisine')
q = "select * from restaurants where cuisine='{0}' limit 1".format(cuisine)
result = db.query(q)
return [SlotSet("matches", result if result is not None else [])]
Details of the run() method:
Execute the side effects of this action.
Parameters
- dispatcher – used to send messages back to the user.
- tracker – the state tracker for the current user.
- domain – the bot’s domain
Returns a dictionary of rasa_sdk.events.Event instances returned through the endpoint.
Customising the session start action
The default behaviour of the session start action is to take all existing slots and to carry them over into the next session.
from typing import Text, List, Dict, Any
from rasa_sdk import Action, Tracker
from rasa_sdk.events import SlotSet, SessionStarted, ActionExecuted, EventType
from rasa_sdk.executor import CollectingDispatcher
class ActionSessionStart(Action):
def name(self) -> Text:
return "action_session_start"
async def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[EventType]:
events = [SessionStarted()]
return events
Events
An action’s run() method returns a list of events.
Tracker
The rasa_sdk.Tracker lets you access the bot’s memory in your custom actions. This allows you to get information about past events and the current state of the conversation through Tracker attributes and methods.
The following are available as attributes of a Tracker object:
sender_idslotslatest_messageeventsactive_formlatest_action_name
You can get the value of a slot by using tracker.get_slot(key).