The use of active_loop: null followed by action: utter_submit tell the bot that once a form is completed (aka all the required slots have been filled), it should execute utter_submit.
To start a form, I would suggest doing this:
- story: Activate form
- intent : ask_about_specials
- action : utter_specials_info
- action : restaurant_specials_form
- active_loop : restaurant_specials_form # Stay in the form while all the required slots have not been filled
And to stop it, I would suggest doing it in a separate story (or rule):
- rule: Submit form
condition: # Condition that the loop is active, aka still in the form
- active_loop: restaurant_specials_form
steps:
- action: restaurant_form
- active_loop: null # The form has been completed
- slot_was_set:
- requested_slot: null # All the required slots have been filled
- action: utter_submit