Helo! :3
I have a form that asks user for information (name, city, etc) and collects that information, storing it.
In the form, I have set up a condition where - mid form - if a user opts to not share that information, the form will display a reassuring message, then skip to the next question.
The way I tried to do this is to set the slot to None
in actions.py, then continue with the questions.
Here is my code:
rules.yml
- rule: interruption in info-collect form
condition:
- active_loop: user_info_form
steps:
- intent: refuse info form
- action: utter_skip_form_question
- action: action_skip_form_question
- action: user_info_form
- active_loop: user_info_form
actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import SlotSet
#from rasa_sdk.forms import FormValidationAction
class ActionSkipInfoFormQuestion(Action):
def name(self):
return "action_skip_form_question"
def run(self, dispatcher, tracker, domain):
current_slot = tracker.get_slot('requested_slot')
return [SlotSet(current_slot, None)]
In my rasa interactive, it’s clear that the rule runs, and it recognizes the action_skip_form_question
, and sets the value of the slot to None
, but then it loops at the same question again and again.
How do I combat this, and make it skip the question when told to?