[ Rasa SDK ]
events
from rasa_sdk.events import (
Restarted, SlotSet, SessionStarted, ActionExecuted, EventType,
FollowupAction, ActiveLoop, Form, UserUtteranceReverted, ConversationPaused , AllSlotsReset
)
* FollowupAction
한 액션의 실행 후 즉시 다른 액션을 실행하도록 제어.
from rasa_sdk import Action
from rasa_sdk.events import FollowupAction
from rasa_sdk.interfaces import Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionProvideInfo(Action):
def name(self):
return "action_provide_info"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict):
# 사용자에게 정보 제공
dispatcher.utter_message(text="여기 필요한 정보를 제공합니다.")
# 정보 제공 후 추가 정보 요청을 위해 다른 액션 실행
return [FollowupAction("action_request_additional_info")]
class ActionRequestAdditionalInfo(Action):
def name(self):
return "action_request_additional_info"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict):
# 사용자에게 추가 정보를 요청
dispatcher.utter_message(text="추가로 필요한 정보를 알려주세요.")
# 이 액션을 처리한 후 자동으로 사용자의 입력을 기다리도록 설정
return []
=> action_provide_info 액션 실행 이후 곧바로 action_request_additional_info 액션을 실행.
** FollowupAction 으로 지정한 액션이 rule & story 에 지정된 액션보다 우선적으로 실행 (액션이 충돌하는 경우)
- story: 사용자 정보 요청과 추가 정보 요청
steps:
- intent: request_info
- action: action_provide_info
- action: action_after_info
# 이 액션은 FollowupAction에 의해 우선적으로 실행된 action_request_additional_info 후에 실행
stroy에 위와 같이 지정되어 있다면,
action_provide_info => action_after_info 순서로 실행.
FollowupAction 으로 액션 순서를 제어한다면,
action_provide_info => action_request_additional_info (FollowupAction) => action_after_info 순서로 실행.
조건에 따라 대화 흐름을 제어해야 할 때 유용 ***
* Restarted
대화 상태를 초기화하고 모든 슬롯 값을 비워준다. (대화 세션을 재시작.)
from rasa_sdk import Action
from rasa_sdk.events import Restarted, FollowupAction
from rasa_sdk.interfaces import Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionRestartConversation(Action):
def name(self):
return "action_restart"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: dict):
# 대화 재시작 메시지 전송
dispatcher.utter_message(text="대화를 재시작합니다.")
# 대화를 재시작하고, 사용자 입력을 기다리는 액션으로 다시 전환
return [Restarted(), FollowupAction("action_listen")]
=> action_restart 액션이 실행되면,
return값으로 Restarted() => 대화 세션 초기화. (모든 슬롯값 초기화)
FollowupAction("action_listen") => 사용자 입력 대기상태로 전환.
'업무 > 챗봇 (Rasa)' 카테고리의 다른 글
[Rasa] Fallback 커스텀액션 및 이벤트 ( UserUtteranceReverted, ActionExecuted ) (0) | 2024.07.24 |
---|---|
[Rasa] rasa built-in actions (0) | 2024.07.23 |
[Rasa] 챗봇_ slot 이벤트에 따른 action진행 (SlotSet) (2) | 2024.07.10 |
[Rasa] rule & stroy (0) | 2024.07.08 |
[Rasa] 설정파일 정리 (endpoints.yml , credentials.yml) (0) | 2024.07.05 |