Rasa SDK

These docs are for version 1.x of Rasa Open Source. Docs for the new version 2.0 can be found here.

User Guide

NLU

Core

Conversation Design

API Reference

Migrate from (beta)

Reference

Versions

viewing: 1.10.6

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

Note You do not need to install rasa for your action server. E.g. if you are running Rasa in a docker container, it is recommended to create a separate container for your action server. In this separate container, you only need to 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().

In a restaurant bot, if the user says “show me a Mexican restaurant”, your bot could execute the action ActionCheckRestaurants, which might look like this:

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 [])]

You should add the action name action_check_restaurants to the actions in your domain file. The action’s run() method receives three arguments. You can access the values of slots and the latest message sent by the user using the tracker object, and you can send messages back to the user with the dispatcher object, by calling dispatcher.utter_message.

Tracker

The rasa_sdk.Tracker lets you access the bot’s memory in your custom actions. You can 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: