Contradiction in Rules when using different "slot_was_set" with the same intent

Have two rules which have the bot respond with different sequence of actions to the same intent, based on different “slot_was_set” slots. The idea is to take a different action on an intent depending if a certain slot had already been set.:

rule: Say goodbye anytime the user says goodbye with a color slot set.

condition:

  • slot_was_set:

    • color steps:
  • intent: goodbye

  • action: utter_congratulations

  • action: utter_goodbye2

  • rule: Say goodbye anytime the user says goodbye with a mood slot set condition:

    • slot_was_set:
      • mood steps:
    • intent: goodbye
    • action: utter_goodbye2
  • rule: Say goodbye if user says bye and no slots set steps:

    • intent: goodbye
    • action: utter_goodbye

When I train, I get the following: InvalidRule: Contradicting rules or stories found :rotating_light:

  • the prediction of the action ‘utter_congratulations’ in rule ‘Say goodbye anytime the user says goodbye with a color slot set’ is contradicting with rule(s) ‘Say goodbye anytime the user says goodbye with a mood slot set, Say goodbye if user says bye and no slots set’ which predicted action ‘utter_goodbye2’.
  • the prediction of the action ‘utter_goodbye’ in rule ‘Say goodbye if user says bye and no slots set’ is contradicting with rule(s) ‘Say goodbye anytime the user says goodbye with a mood slot set, Say goodbye anytime the user says goodbye with a color slot set’ which predicted action ‘utter_goodbye2’. Please update your stories and rules so that they don’t contradict each other. You can find more information about the usage of rules at Rules.

Why is this a contradiction if the these rules would not be invoked in the same circumstances?

Running Rasa version 3.3.1 Running Python version: 3.7.15

Hi there,

is your slot type by any chance "text" or "any"? Because as far as I've understood it, in the case of text-types for example ...

If influence_conversation is set to true, the assistant’s behavior will change depending on whether the slot is set or not.

If you want to use different actions depending on the slot value, I think you have to use the type “categorical”:

If influence_conversation is set to true, the assistant’s behavior will change depending on the concrete value of the slot.

That what it says here.

Right, but I think you are referring to stories. But in my case I am using rule.

I have this in rules. In the rules there is a “slot_was_set” condition. I am trying to use that in rules. But without specifying any value. That is if the user told me what their mood was, the mood slot would be set, otherwise its value would be “None”.