The form code for 1 use case is following, other form is also similar to this
class MigrationIssuesForm(FormAction):
def name(self) -> Text:
return “migration_issues_form”
@staticmethod
def required_slots(tracker: Tracker) -> List[Text]:
return ["application_name"]
def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:
return {
"application_name": [self.from_entity(entity="application_name"), self.from_text()],
}
def validate_application_name(
self,
value: Text,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> Dict[Text, Any]:
"""Validate application name"""
if value.lower() in self.application_name_list():
return {"application_name": value}
else:
dispatcher.utter_template("utter_wrong_application_name", tracker)
return {"application_name": None}
@staticmethod
def application_name_list() -> List[Text]:
return [
"SNAP",
"KSNAP",
"LSNAP",
"MSNAP",
]
def submit(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[Dict]:
given_application_name=tracker.get_slot("application_name").lower()
if given_application_name == 'snap':
dispatcher.utter_template("utter_facing_issue_during_snap_migation",tracker)
return [SlotSet("application_name",given_application_name)]