How to use action_back?

Was any solution found? I’m struggling with the same issue " No registered action found for name ‘action_back’."

Someone help!

I did not find a solution to it in the end. Sorry I can’t help more!

Hey, how are you? May I ask you how you make Rasa work as in those screeshots?

@YordanBonne I’m fine thanks for asking. I hope you are also doing great. Yes, I have a good experience whilst developing the Conversation AI Chatbot and in my past major company project I develop the same.

Can you be more elaborative in your query? Thanks.

1 Like

Thanks for answering. I’m trying to use action_back in my bots. Searching, I ended up in this thread. I saw the answer you gave to @ronankff and is exactly what I need. Could you tell me how you make “action_back” work that way?

@YordanBonne you just want the buttons to be displayed and get back to you on the previous menu?

I want to create an “go_back” intent and, everytime the user types “back” or “go back”, the boy display the previous message.

@YordanBonne it will be displayed by button like using previous menu or next menu. There is no such feature I personally used as action_back. If you required that solution do let me know and always tag me and else you post will be ignored by my. Thanks.

Hello, after a long time of searching regarding the use of action_back I always end up in this thread. So can this action be used to go back one step in the caster? And how can this be achieved?

This is what I want to achieve: action_back

you can use slots and create a previous menu button it will be -1 level then -2 and so on.

Hello @lukrad

I have a similar requirement and I’ve succesfully managed to create this flow by using rules and custom actions.

My form’s last required slot is called confirm, which I made categorical:

slots:
  first_slot:
    type: text
  second_slot:
    type: text
  confirm:
    type: categorical
    influence_conversation: true
    values:
      - true
      - false
      - back_1
      - back_2

I ask for confirmation using buttons:

  utter_ask_back_min_form_confirm:
  - buttons:
    - payload: /affirm
      title: Yes
    - payload: /deny
      title: No
    - payload: /back_1
      title: Change 1st slot
    - payload: /back_2
      title: Change 2nd slot
    text: "Are we all set with 1st slot={first_slot} and 2nd slot = {second_slot} ?"

Then, I have a rule where I call a custom action to reset previously set slots:

# submit form if success
- rule: submit my form
  condition:
  - active_loop: back_min_form
  steps:
  - action: back_min_form
  - active_loop: null
  - slot_was_set:
    - requested_slot: null
  - slot_was_set:
    - confirm: true
  - action: action_log_form

# reset first slot
- rule: Reset first slot
  condition:
  - active_loop: back_min_form
  steps:
  - action: back_min_form
  - active_loop: null
  - slot_was_set:
    - requested_slot: null
  - slot_was_set:
    - confirm: back_1
  - action: action_reset_slot

# Redefines 2nd field
- rule: Reset second slot
  condition:
  - active_loop: back_min_form
  steps:
  - action: back_min_form
  - active_loop: null
  - slot_was_set:
    - requested_slot: null
  - slot_was_set:
    - confirm: back_2
  - action: action_reset_slot

Finally, my custom action code to clear previously set fields:

  def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

        last_intent = tracker.get_intent_of_latest_message()

        if last_intent == "back_1":
            return [SlotSet("first_slot", None), SlotSet("confirm", None), FollowupAction("back_min_form")]
        
        if last_intent == "back_2":
            return [SlotSet("second_slot", None), SlotSet("confirm", None),  FollowupAction("back_min_form")]
        
        return []
1 Like

@otmarjr nice approach.