Custom Actions
Note: This is material for Rasa 2.x. The syntax has updated slightly in Rasa 3.0 so we recommend new users to check the new course found here.
In this lesson we will show you how to make a basic custom action in Rasa.
Video
Code
In this video we're demonstrating how to write a custom action in Rasa. In the
video we show a custom action that will fetch the current time. Here's the code
from the actions/actions.py
file.
import datetime as dt from typing import Any, Text, Dict, List
from rasa_sdk import Action, Trackerfrom rasa_sdk.executor import CollectingDispatcher
class ActionHelloWorld(Action):
def name(self) -> Text: return "action_show_time"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
dispatcher.utter_message(text=f"{dt.datetime.now()}")
return []
Note that it is very important to get the name
right, you can see it
highlighted in the codeblock. If this does not correspond with the domain.yml
file then the action won't be found.
If you want to run these custom actions you'll need to make sure that
your endpoints.yml
file is properly configured.
action_endpoint: url: "http://localhost:5055/webhook"
Assuming that you've also gotten your nlu/stories/domain file you're now all set to interact with your custom action. Just remember to run the action server first.
rasa run actions
With the action server running you should be able to interact with your custom action from the rasa shell.
rasa shell
Links
Exercises
Try to answer the following questions to test your knowledge.
- When you just wrote a custom action in your
actions/actions.py
file, what are the next steps that you must do before you can use it inrasa shell
? - What does the
tracker
allow you to do in therun
method of a custom action? - What does the
dispatcher
allow you to do in therun
method of a custom action?