Rasa does not ask the action server for the next slot in the form after returning from unhappy path

So I was trying to replicate the unhappy path behavior for chitchat during a large form, as specified in the docs. I defined some rules and stories to support this behavior and in the run()-method of the FormValidationAction I am implicitly raising a ActionExecutionRejection by not returning any SlotSets.

Until here, everything works fine: The form is rejected when I want it to and the chitchat is handled as defined in the stories. But once I want to return to the form, there are some issues. The form is activated again and rasa correctly chooses the FormAction, but it seemingly does not communicate with my Action Server (rasa sdk) and the FormValidationAction that is specified there anymore, but simply decides which slot to ask for next based on the slots in the domain, without ever calling the custom required_slots()-method I defined. This is a major problem, as my required_slots() dynamically skips some of the predefined slots from the domain file, which rasa obviously does not know, so the bot asks for these slots again, effectively breaking the form.

Unfortunately I have not found any way to make rasa contact the action server in this case. Is this intended behaviour? And if so, how can I change my approach to allow me to continue with the form appropriately?

Defined stories:

- story: start search
  steps:
  - intent: request_search
  - action: couch_requirements_form
  - active_loop: couch_requirements_form
  - checkpoint: checkpoint_search_ongoing
        
- story: handle mid-form chitchat
  steps:
  - checkpoint: checkpoint_search_ongoing
  - intent: conv_chitchat
  - active_loop: null
  - action: utter_chitchat
  - active_loop: couch_requirements_form
  - action: couch_requirements_form

Chitchat rule:

- rule: Answer chitchat
  steps:
  - intent: conv_chitchat
  - action: utter_chitchat
  wait_for_user_input: false

Excerpt from the form action definition:

forms:
  couch_requirements_form:
    req_size_num_persons:
    - type: from_entity
      entity: custom_number
    req_size:
    - type: from_intent
      value: frei
      intent: conv_dont_know
    req_size_width:
    - type: from_entity
      entity: custom_number
      role: size_width
...

My system:

Rasa Version     : 2.1.0
Rasa SDK Version : 2.1.2
Python Version   : 3.8.5
Operating System : Windows-10-10.0.18362-SP0

Hello Jo_Nathan,

maybe you could consider using FormValidationAction as mentioned here and write a validation function to replicate the conditional slot logic you have.

Thank you for your reply, but I am already using the FormValidationAction, I just forgot to explicitly state that. The run() and required_slots() methods in the Action Server that i was referring to, are specified in the respective FormValidationAction.