# How to repeat a story ,to repeat itself until satisfied for user

**URL:** <https://forum.rasa.com/t/how-to-repeat-a-story-to-repeat-itself-until-satisfied-for-user/4103>\
**Category:** Rasa Open Source\
**Created:** [January 7, 2019, 2:29pm UTC](https://forum.rasa.com/t/how-to-repeat-a-story-to-repeat-itself-until-satisfied-for-user/4103 "2019-01-07T14:29:50Z")\
**Posts on this page:** 1\
**Showing post:** 17

<div class="post-metadata">

**Author:** ![IsraaMohamedHamid](https://avatars.discourse-cdn.com/v4/letter/i/a9a28c/32.png) [@IsraaMohamedHamid](https://forum.rasa.com/u/IsraaMohamedHamid)\
**Post date:** [March 13, 2021, 10:41pm UTC](https://forum.rasa.com/t/how-to-repeat-a-story-to-repeat-itself-until-satisfied-for-user/4103/17 "2021-03-13T22:41:24Z")

</div>

> [@enzechua](#):
>
> ```auto
> def validate(self, dispatcher, tracker, domain):
> value = tracker.latest_message.get("text")
> slot_to_fill = tracker.get_slot("requested_slot")
> intent = tracker.latest_message.get("intent", {}).get("name")
> if slot_to_fill == "user_confirm": 
> if intent =="true":
> return [SlotSet("user_confirm", value)]
> else:
> return [SlotSet("user_confirm", None)]
> return [SlotSet(slot, value) for slot, value in slot_values.items()]
> 
> ```

HI @littlerain2310, I have the same issue and was wondering if you can help? I am creating a loop based on whether the user would like to pay or order more. This is my function:

```
class FormGetRestaurantMenuCategoryOrderMoreDishes_en(FormValidationAction):
	
	
    def name(self):
        return 'form_get_restaurant_menu_category_order_more_dishes_en'
		
    @staticmethod
    def required_slots(tracker: Tracker) -> List[Text]:
        """A list of required slots that the form has to fill"""
        return ["order_more_or_pay_en"]

    def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:
        """A dictionary to map required slots to
            - an extracted entity
            - intent: value pairs
            - a whole message
            or a list of them, where a first match will be picked"""

        return {"order_more_or_pay_en":[self.from_text()]}
    
    def validate(self, dispatcher, tracker, domain):
        value = tracker.latest_message.get("text")
        slot_to_fill = tracker.get_slot("requested_slot")
        intent = tracker.latest_message.get("intent", {}).get("order_more_or_pay_en")
        if slot_to_fill == "order_more_or_pay_en": 
            if intent =="pay":
                return [SlotSet("order_more_or_pay_en", value)]
            else:
                return [SlotSet("order_more_or_pay_en", None)]
        return [SlotSet(slot, value) for slot, value in slot_values.items()]
   
    #def submit(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any], ) -> List[Dict]:

    # if tracker.get_slot('order_more_or_pay_en') == 'Order More':
    # dispatcher.utter_message(text="Choose wisely...")

    # elif tracker.get_slot('order_more_or_pay_en') == 'Pay':
    # dispatcher.utter_message(text="Please be patient you will need to answer more questions before you can pay :)")

    # return []

```

I want it to repeat if the user chooses from a button that he/she wants to order more but it continues with the story for if the user wants to pay. Can you please tell me what I did wrong?

---

_[View the full topic](https://forum.rasa.com/t/how-to-repeat-a-story-to-repeat-itself-until-satisfied-for-user/4103)._
