https://szkolazpieklarodem.pl/
Jak sama nazwa wskazuje, jest to konkretne działanie, które można podjąć. Zgodnie z dokumentacją Rasa jest napisane: „Następna akcja, którą należy podjąć w odpowiedzi na stan okna dialogowego”. Przykładowo, jeśli użytkownik zapyta o horoskop na dzisiaj, nasz bot może wykonać akcję „GetTodaysHoroskop”. Zobaczmy jak wyglądałaby akcja „GetTodaysHoroskop” w formie kodu.
from rasa_core.actions import Action
from rasa_core.events import SlotSet
class GetTodaysHoroscope(Action):
def name(self):
return “get_todays_horoscope”
def run(self, dispatcher, tracker, domain):
# type: (Dispatcher, DialogueStateTracker, Domain) -> List[Event]
user_horoscope_sign = tracker.get_slot(‘horoscope_sign’)
“””Write your logic to get today’s horoscope details
for the given Horoscope sign based on some API calls
or retrieval from the database”””
return [SlotSet(“horoscope_sign”, user_horoscope_sign)]
Metoda name zwraca nazwę akcji, do której będziemy odnosić się w pliku domeny jako niestandardową nazwę metody.
Metoda run wykonuje główne zadanie polegające na wykonaniu akcji — to znaczy, że tutaj znajduje się podstawowa logika biznesowa. Jak widać, pobiera trzy parametry: wysyłkę, moduł śledzący i domenę. Przyjrzyjmy się kolejno tym parametrom:
- dyspozytor: dyspozytor służy do wysyłania wiadomości do naszych użytkowników. Aby osiągnąć to samo, możemy użyć funkcji dipatcher.utter_message().
- moduł śledzący: moduł śledzący stan bieżącego użytkownika. Dostęp do wartości slotów możemy uzyskać za pomocą tracker.get_slot(nazwa_slotu), a aby uzyskać najnowszą wiadomość użytkownika, możemy użyć tracker.latest_message.text.
- domena: domena bota. Bardziej szczegółowo omówimy tę domenę w dalszej części rozdziału.
Uwaga: metoda run zwraca listę instancji zdarzeń.