Slot list does not stay empty - Rasa Open Source - Rasa Community Forum

Slot list does not stay empty

post by MartinJaskulla on Feb 15, 2021

I have a slot of type list containing options the user can choose from (displayed as buttons).

Each time the user picks an option:

This works. Also explained in a previous topic.

- rule: Show remaining options
  steps:
    - intent: show_remaining_options
    - action: action_remaining_options

- rule: After choosing an option, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - action: action_remaining_options

rasa shell

/show_remaining_options
a
b
c
-> a
b
c
-> b
c
-> c
<empty>
/show_remaining_options
<empty>

However if I want one of the options to not display the remaining options, I cannot empty the list. More precisely rasa shell --debug and log statements in the action server show that the slot list is empty, but as soon as I show the remaining options with /show_remaining_options the last options get refilled.

- rule: After choosing an option A, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_a
    - action: action_remaining_options
- rule: After choosing an option B, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_b
    - action: action_remaining_options
- rule: After choosing an option C, do not show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_c

rasa shell

/show_remaining_options
a
b
c
-> a
b
c
-> b
c
-> c
/show_remaining_options
c

Here is the code in a GitHub repo. It is a minimal working example straight from rasa init. head~1 has the working example, current commit has the problem described.

If I add a rule to also show the remaining options after c, I have the same problem:

- rule: After choosing an option A, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_a
    - action: action_remaining_options
- rule: After choosing an option B, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_b
    - action: action_remaining_options
- rule: After choosing an option C, show remaining options
  steps:
    - intent: choose_option
    - action: action_choose_option
    - slot_was_set:
      - option: utter_c
    - action: action_remaining_options

post by fkoerner on Feb 16, 2021

Hi, I wasn’t able to replicate this. I cloned your repository, trained the model, and ran rasa shell. Am I missing something? Or have I misunderstood the problem?

Your input ->  /show_remaining_options
listing options [{'title': 'Option A', 'payload': '/choose_option{"option": "utter_a"}'}, {'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}, {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
? None  1: Option A (/choose_option{"option": "utter_a"})
option utter_a
before deletion [{'title': 'Option A', 'payload': '/choose_option{"option": "utter_a"}'}, {'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}, {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
deleting {'title': 'Option A', 'payload': '/choose_option{"option": "utter_a"}'}
after deletion [{'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}, {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
listing options [{'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}, {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
Option A chosen
? None  1: Option B (/choose_option{"option": "utter_b"})
option utter_b
before deletion [{'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}, {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
deleting {'title': 'Option B', 'payload': '/choose_option{"option": "utter_b"}'}
after deletion [{'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
listing options [{'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
Option B chosen
? None  1: Option C (/choose_option{"option": "utter_c"})
option utter_c
before deletion [{'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}]
deleting {'title': 'Option C', 'payload': '/choose_option{"option": "utter_c"}'}
after deletion []
none
Option C chosen
Your input ->  /show_remaining_options
Hey! How are you?
Your input ->

post by MartinJaskulla on Feb 17, 2021

Thanks for checking it out. It works now. No idea why

post by fkoerner on Feb 17, 2021

Glad to hear it. Happy bot-building!