Dispatcher

You are viewing documentation for our open source project which is maintained by the community. If you want to get started building assistants with Rasa please check out our latest documentation here.

A dispatcher is an instance of the CollectingDispatcher class used to generate responses to send back to the user.

CollectingDispatcher #

CollectingDispatcher has one method, utter_message, and one attribute, messages. It is used in an action's run method to add responses to the payload returned to the Rasa server. The Rasa server will in turn add BotUttered events to the tracker for each response. Responses added using the dispatcher should therefore not be returned explicitly as events. For example, the following custom action returns no events explicitly but will return the response, "Hi, User!" to the user:

class ActionGreetUser(Action):

def name(self) -> Text:
        return "action_greet_user"

async def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[EventType]:
        dispatcher.utter_message(text="Hi, User!")
        return []

CollectingDispatcher.utter_message #

The utter_message method can be used to return any type of response to the user.

Parameters #

The utter_message method takes the following optional arguments. Passing no arguments will result in an empty message being returned to the user. Passing multiple arguments will result in a rich response (e.g. text and buttons) being returned to the user.

dispatcher.utter_message(text="Hey there")
dispatcher.utter_message(image="https://i.imgur.com/nGF1K8f.jpg")
date_picker = {
    "blocks": [
        {
            "type": "section",
            "text": {
                "text": "Make a bet on when the world will end:",
                "type": "mrkdwn"
            },
            "accessory": {
                "type": "datepicker",
                "initial_date": "2019-05-21",
                "placeholder": {
                    "type": "plain_text",
                    "text": "Select a date"
                }
            }
        }
    ]
}

dispatcher.utter_message(json_message=date_picker)
dispatcher.utter_message(response="utter_greet")
dispatcher.utter_message(attachment="")
dispatcher.utter_message(buttons=[
    {"payload": "/affirm", "title": "Yes"},
    {"payload": "/deny", "title": "No"},
])
responses:
  utter_greet_name:
    - text: Hi {name}!

You could specify the name with:

dispatcher.utter_message(response="utter_greet_name", name="Aimee")

Return type #

None