I’m having difficulty calling different custom actions within the same form.
In a form with a series of slots to be filled, some slots call different custom actions. for example, when the slot is asking for a task name, it will call an API.
Then, when a different slot is requested, a custom function will extract the latest text and call a different API.
But, it’s not working.
I tried two different strategies in the action below.
- 
I tried tracker.get_slot, but this triggered the custom action each time. I only wanted this if statement to be triggered on the latest slot requested, but it’s triggering it every time the validation form is run. 
- 
I tried validate_ within the validate_form, but this did not run the custom action I needed. 
In the action below, you’ll see that when asana_task_name is requested, it should run an api call.
Then, when the next slot is requested, it should also call the action associated with the next slot.
how do I do this?
Thanks and let me know if I can clarify this question
class ValidateAsanaForm(FormValidationAction):
    def name(self) -> Text:
        return "validate_asana_form"
    
    def run(
        self,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any],
    ) -> List[Dict]:
        """Create an incident and return details or
        if localmode return incident details as if incident
        was created
        """
        
    def validate_asana_task_name(
        self,
        slot_value: Any,
        dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: DomainDict,
    ) -> Dict[Text, Any]:
        print ('validation run')
        if tracker.get_slot('asana_task_name'):
            print ('triggered asana task name')
            text_of_last_user_message = tracker.latest_message.get("text")
            print ('last user message', text_of_last_user_message)
            tasklist = list_tasks_numbered_names(text_of_last_user_message)
            resp = "Here is your task list: \n"+str(tasklist)
        
            print ('DEBUG: which task would you like to select from this list?', tasklist)
            dispatcher.utter_message(resp)
            return [SlotSet('asana_select_options_slot', tasklist)]
        else:
            pass
        if tracker.get_slot('asana_number_select'):
            print ('asana number select triggered')
            text_of_last_user_message = tracker.latest_message.get("text")
            print ('this the last text sent from number', text_of_last_user_message) I will find your solution tomorrow.
 I will find your solution tomorrow.