For example I want to pay a bill how this we can be done in a single function and we get input in same function

class ActionChooseBill(Action): def name(self) → Text: return “action_choose_bill”

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

    # Display options for bill payment
    dispatcher.utter_message("Choose which bill you want to pay:")
    dispatcher.utter_message("1. Press 1 For Electricity Bill\n2. Press 2 For Gas Bill\n3. Press 3 For Telephone Bill")

    selected_bill_number = input("Bill Type: ")
    # selected_bill_number = tracker.latest_message.get('text')
    if selected_bill_number.isdigit():
        selected_bill_number = int(selected_bill_number)

        bill_type = ["Electricity", "Gas", "Telephone"]
        if 1 <= selected_bill_number <= len(bill_type):
            selected_bill_type = bill_type[selected_bill_number - 1]

            dispatcher.utter_message(f"You have selected {selected_bill_type} bill.")
        else:
            dispatcher.utter_message("Invalid selection. Please choose a valid bill number.")
    else:
        dispatcher.utter_message("Invalid input. Please provide a valid number.")
	    
    bill_number = input("Enter Bill Number: ")
    dispatcher.utter_message(f"Your bill number is: {bill_number}.")
    return [SlotSet("bill_number", bill_number)]

this code get input in rasa action prompt how i get this input in rasa shell prompt

1 Like