notice
This is documentation for Rasa Action Server Documentation v2.x, which is no longer actively maintained.
For up-to-date documentation, see the latest version (3.x).
Rasa SDK Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning starting with version 0.11.0.
[2.8.3] - 2021-11-25
Miscellaneous internal changes
[2.8.2] - 2021-09-02 No significant changes.
[2.8.1] - 2021-07-22
Miscellaneous internal changes
[2.8.0] - 2021-07-08
Improvements
#441: Slots will be validated in order they are requested. Previously, they were validated in reverse order.
Already extracted slots are now immediately visible during extraction of subsequent slots. Same goes for validation.
[2.7.0] - 2021-06-03
No significant changes.
[2.6.0] - 2021-05-06
Improvements
- #261: Adding support for forms with the
required_slots
key which is introduced as part of Rasa Open Source 2.6. - #434: - The action server can now listen on a specific network address using the environment variable
SANIC_HOST
instead of listening on all host interfaces by default- Corrected url which is logged at action server startup
[2.5.0] - 2021-04-12
Miscellaneous internal changes
[2.4.1] - 2021-03-23
Bugfixes
#419: Missing
typing_extensions
module addedMinor dependency updates
#8223:
utter_message
inCollectingDispatcher
now explicitly takes in bothresponse
andtemplate
. Note that the parametertemplate
will be deprecated in Rasa SDK 3.0.0. Please usedispatcher.utter_message(response=...)
instead.
[2.4.0] - 2021-03-11
Bugfixes
#406: Fix bug where ActionQueryKnowledgeBase incorrectly issues a template message with the string representation of the function for getting the string representation of the knowledge base item and not the actual string representation of the knowledge base item.
For example, before the fix, the query knowledge base demo bot would utter this
'<function ActionMyKB.init.. at 0x7fb23b7fddd0>' has the value 'True' for attribute 'breakfast-included'.instead of this:
'Hilton (Berlin)' has the value 'True' for attribute 'breakfast-included'.
[2.3.1] - 2021-02-11
Bugfixes
- #404: Only pin the
uvloop
dependency for non-Windows systems asuvloop
is not available for Windows.
[2.3.0] - 2021-02-11
Features
#306: Added command line argument option
--log-file
for the action server to save logs to a log file.Usage :
rasa run actions --log-file log_file.log
[2.2.0] - 2020-12-15
No significant changes.
[2.1.2] - 2020-11-19
No significant changes.
[2.1.1] - 2020-11-17
Bugfixes
- #344: Fix a bug in the
FormValidationAction
which immediately deactivated the form.
[2.1.0] - 2020-11-17
Features
#329: Extend
FormValidationAction
with support for extracting slots. If you want to extract an additional slot, add the slot's name to the list ofrequired_slots
and add a methodextract_<slot name>
to your action:from typing import Text, Dict, Any, List, Optionalfrom rasa_sdk.forms import (FormValidationAction,)class FormWithSlotExtractions(FormValidationAction):def name(self) -> Text:return "some_form"async def required_slots(self,slots_mapped_in_domain: List[Text],dispatcher: "CollectingDispatcher",tracker: "Tracker",domain: "DomainDict",) -> Optional[List[Text]]:return slots_mapped_in_domain + ["my_slot"]async def extract_my_slot(self,dispatcher: "CollectingDispatcher",tracker: "Tracker",domain: "DomainDict",) -> Dict[Text, Any]:return {"my_slot": "some value"}If all slots returned by
required_slots
are filled, the action will automatically return an event to disable the form. If not all required slots are filled, the SDK will return an event to Rasa Open Source to fill the first missing slot next.
Improvements
- #7078: Adds the method
get_intent_of_latest_message
to theTracker
allowing easier access to the user's latest intent in case of annlu_fallback
.
[2.0.0] - 2020-10-07
Deprecations and Removals
#246: Using the
Form
event is deprecated. Please use the newActiveLoop
event instead. Using theactive_form
property of theTracker
object is now deprecated. Please use theactive_loop
property instead.The usage of the
FormAction
is deprecated. Please see the migration guide for Rasa Open Source 2.0 for instructions how to migrate yourFormAction
s.#250: Removed support for the
rasa_core_sdk
python module: useimport rasa_sdk
syntax instead.#6463: The
FormValidation
event was renamed toLoopInterrupted
as part of Rasa Open Source 2.0. Using theFormValidation
is now deprecated and will be removed in the future. Please useLoopInterrupted
instead.
Features
#238: Added the method
slots_to_validate
toTracker
. This method is helpful when using a custom action to validate slots which were extracted by a form as shown by the following example.from typing import Text, Dict, List, Anyfrom rasa_sdk import Action, Trackerfrom rasa_sdk.events import EventType, SlotSetfrom rasa_sdk.types import DomainDictfrom rasa_sdk.executor import CollectingDispatcherclass ValidateSlots(Action):def name(self) -> Text:return "validate_your_form"def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: DomainDict) -> List[EventType]:extracted_slots: Dict[Text, Any] = tracker.slots_to_validate()validation_events = []for slot_name, slot_value in extracted_slots.items():# Check if slot is valid.if self.is_valid(slot_value):validation_events.append(SlotSet(slot_name, slot_value))else:# Return a `SlotSet` event with value `None` to indicate that this# slot still needs to be filled.validation_events.append(SlotSet(slot_name, None))return validation_eventsdef is_valid(self, slot_value: Any) -> bool:# Implementation of the validate function.return TruePlease note that
tracker.form_slots_to_validate
only works with Rasa Open Source 2.
Improvements
#239: Validate user input during form activation even if there is an action in between.
#246: Rasa Open Source 2.0 renamed the
Form
event toActiveLoop
. TheActiveLoop
event was added to the SDK and support for theactive_loop
field in JSON payloads was added.#267: The
actions
package in a Rasa project may contain multiple files containing custom action code. The Rasa SDK Docker container now loads the entireactions
package.#288: Add the
FormValidationAction
abstract class that can be used to validate slots which were extracted by a Form.Example:
from typing import Text, Any, Dictfrom rasa_sdk import FormValidationAction, Trackerfrom rasa_sdk.types import DomainDictfrom rasa_sdk.executor import CollectingDispatcherclass MyFormValidationAction(FormValidationAction):def name(self) -> Text:return "some_form"def validate_slot1(self,slot_value: Any,dispatcher: "CollectingDispatcher",tracker: "Tracker",domain: "DomainDict",) -> Dict[Text, Any]:if slot_value == "correct_value":return {"slot1": "validated_value",}return {"slot1": None,}#6463: Added support for the
LoopInterrupted
event.
Bugfixes
- #280:
tracker.applied_events
now correctly deals with restart, undo, and rewind events
Miscellaneous internal changes
[1.10.3] - 2020-09-23
Bugfixes
- #273: Only fill other slots if slot mapping contains a role or group restriction and the entity type matches.
[1.10.2] - 2020-06-25
Bugfixes
- #220: Re-added an
Action endpoint is up and running
log that was removed in Rasa SDK 1.6.0.
[1.10.1] - 2020-05-11
Bugfixes
- #212: Fix
ActionExecutor
sometimes not loading user-defined actions that inherit from other user-defined ones.
[1.10.0] - 2020-04-28
Features
- #164: Added new
--auto-reload
CLI argument. When specified, modules containingAction
subclasses will be automatically reloaded if they have been modified since the last HTTP request. By using this, one can avoid having to re-start the actions server when developing new actions.
#3765: Add support for entities with role and group labels.
If you use
from_entity
in your custom slot mapping, you can now also specify a role and group label. If you set a role or group label, the slot is only filled if the entity has the specific role or group label set. If you don’t specify a role or group label, the function behaves as before.
Improvements
- #176: The Rasa SDK image now uses Python 3.7 instead of Python 3.6.
Bugfixes
- #176: Updated
pyyaml
dependency to5.3.1
to fix CVE-2020-1747
[1.9.0] - 2020-03-24
Bugfixes
- #110: Exit program (
python -m rasa_sdk --actions actions
orrasa run actions --actions actions
) if a requested module under the--actions
command-line option cannot be found.
[1.8.1] - 2020-03-09
Bugfixes
- #153: Make it possible to use the
requests
library inside the default Rasa SDK container.
[1.8.0] - 2020-02-26
Improvements
- #130: Copied over instance methods
last_executed_action_has()
,get_last_event_for()
andapplied_events
from the RasaDialogueStateTracker
class to the SDKTracker
class.
- #145: Add
poetry
for dependency management and reduce the size of Docker image.
Miscellaneous internal changes
- #148, #149
[1.7.0] - 2020-01-29
Improvements
ReminderScheduled
andReminderCancelled
now takeintent
andentities
as options, instead ofaction
. This is because starting with Rasa 1.7 reminders trigger intents (with entities) instead of actions.
- The following
FormAction
methods are nowasync
by default:validate_slots
,validate
,submit
andrun
. User-defined classes inheriting fromFormAction
should be adapted to useasync
for these methods. Existing synchronous implementations will continue to work as normal, but this behaviour will be deprecated in the future.
- The following
ActionQueryKnowledgeBase
methods are nowasync
:utter_objects
andrun
.
- The following
KnowledgeBase
methods are nowasync
:get_attributes_of_object
,get_key_attribute_of_object
,get_representation_function_of_object
,get_objects
andget_object
. Same warning forFormAction
applies here - user-defined classes should be updated to useasync
, but will continue to work for the moment.
- The following
InMemoryKnowledgeBase
methods are nowasync
:get_attributes_of_object
,get_objects
andget_object
.
[1.6.1] - 2020-01-07
Bugfixes
- Pinned
sanic~=19.9.0
to fix breaking changes introduced in sanic 19.9.12.
[1.6.0] - 2019-12-18
Features
- Added
SessionStarted
event for compatibility with conversation sessions in Rasa 1.6.0.
[1.5.2] - 2019-12-11
Bugfixes
- Pinned
multidict
dependency to 4.6.1 to prevent sanic from breaking, see https://github.com/huge-success/sanic/issues/1729
[1.5.1] - 2019-11-27
Features
- Added
LOG_LEVEL_LIBRARIES
environment variable to set log level of libraries, such assanic
Improvements
DeprecationWarning
s are nowFutureWarning
s, as they should be seen by end users
text
is now the first positional argument inutter_message
instead ofimage
Bugfixes
- The deprecated
utter_elements
now correctly usesutter_message
[1.5.0] - 2019-11-22
Features
- Add support for multiple sanic workers (configurable with the
ACTION_SERVER_SANIC_WORKERS
environment variable).
- Add support for async
run
methods in theAction
class.
- Return status code
404
in case requested action was not found.
- Return status code
400
in case an empty request body was sent to the/webhook
endpoint.
Improvements
- Replace
flask
server framework withsanic
.
- Replace
flask_cors
withsanic-cors
.
CollectingDispatcher.utter_message
can now do anything that other dispatcher methods can do.
- The
CollectingDispatcher
methodsutter_custom_message
,utter_elements
,utter_button_message
,utter_attachment
,utter_button_template
,utter_template
,utter_custom_json
andutter_image_url
were deprecated in favor ofutter_message
.
- Updated format strings to f-strings where appropriate.
Deprecations and Removals
- Remove
requests
dependency
- Remove
gevent
dependency
[1.4.0] - 2019-10-19
Features
- Added Python 3.7 support.
Deprecations and Removals
- Removed Python 2.7 support.
- Removed Python 3.5 support.
[1.3.3] - 2019-09-28
Features
- SSL support, certificates can be passed with –ssl-certificate and –ssl-keyfile
[1.3.2] - 2019-09-06
Bugfixes
- fixed TypeError on
request_next_slot
method ofFormAction
class
[1.3.1] - 2019-09-05
Bugfixes
- undid Removed unused
tracker
argument fromutter_template
andutter_button_template
methods as it resulted in compatibility issues
[1.3.0] - 2019-09-05
Compatibility release for Rasa 1.3.0.
Features
- add
InMemoryKnowledgeBase
implementation as a defaultKnowledgeBase
- add
ActionQueryKnowledgeBase
as a default action to interact with a knowledge base
Improvements
- Removed unused
tracker
argument fromutter_template
andutter_button_template
methods
[1.2.0] - 2019-08-13
Compatibility release for Rasa 1.2.0. There have not been any additional changes.
[1.1.1] - 2019-07-25
Features
dispatcher.utter_image_url()
to dispatch images from custom actions
Bugfixes
- correct slots print in debug mode before submitting a form
[1.1.0] - 2019-06-13
Compatibility release for Rasa 1.1.0. There have not been any additional changes.
[1.0.0] - 2019-05-21
Features
- validate events returned from action - checks for sanity
- endpoint to retrieve all registered actions at
/actions
Improvements
- package renamed from
rasa_core_sdk
torasa_sdk
- please make sure to update your imports accordingly
[0.14.0] - 2019-04-26
Compatibility release for Rasa Core 0.14.0. There have not been any
additional changes when compared to 0.13.1
.
[0.13.1] - 2019-04-16
Features
- add formatter ‘black’
- Slots filled before the start of a form are now validated upon form start
- In debug mode, the values of required slots for a form are now printed before submitting
Improvements
- validate_{} functions for slots now return dictionaries of form {slot: value} instead of value
Bugfixes
- Slots extracted from entities in user input upon calling form activation are now correctly validated
[0.13.0] - 2019-03-26
Features
- Abstract Actions can now be subclassed
- add warning in case of mismatched version of rasa_core and rasa_core_sdk
FormAction.from_trigger_intent
allows slot extraction from message triggering the FormAction
Tracker.active_form
now includestrigger_message
attribute to allow access to message triggering the form
[0.12.2] - 2019-02-17
Features
- add optional validate_{slot} methods to FormAction
- forms can now be deactivated during the validation function by returning self.deactivate()
- Function to get latest input channel from the tracker with
tracker.get_latest_input_channel()
Improvements
self._deactivate()
method from theFormAction
class has been renamed toself.deactivate()
- changed endpoint function so that it is now accessible with Python as well
[0.12.1] - 2018-11-11
Bugfixes
- doc formatting preventing successful rasa core travis build
[0.12.0] - 2018-11-11
Features
- added Dockerfile for rasa_core_sdk
- add
active_form
andlatest_action_name
properties toTracker
- add
FormAction.slot_mapping()
method to specify the mapping between user input and requested slot in the form
- add helper methods
FormAction.from_entity(...)
,FormAction.from_intent(...)
andFormAction.from_text(...)
- add
FormAction.validate(...)
method to validate user input
- add warning in case of mismatched version of rasa_core and rasa_core_sdk
Improvements
FormAction
class was completely refactored
required_fields()
is changed torequired_slots(tracker)
- moved
FormAction.get_other_slots(...)
functionality toFormAction.extract_other_slots(...)
- moved
FormAction.get_requested_slot(...)
functionality toFormAction.extract_requested_slot(...)
- logic of requesting next slot can be customized in
FormAction.request_next_slot(...)
method
Deprecations and Removals
FormField
class and its subclasses
Bugfixes
[0.11.5] - 2018-09-24
Bugfixes
- current state call in tracker
[0.11.4] - 2018-09-17
Bugfixes
- wrong event name for the
AgentUttered
event - due to the wrong name, rasa core would deserialise the wrong event.