Backupcode - Rasa

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

from rasa_sdk.

forms import FormAction


from typing import Any, Text, Dict, List, Union
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.events import SlotSet, EventType
from rasa_sdk import Tracker, FormValidationAction

class actionForm(FormAction):
def name(self) -> Text:
return "det_form"

@staticmethod
def required_slots(self, tracker: Tracker) -> List[Text]:
print("required slots:")
return ["name", "number"]

def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:


return {
"name": [self.from_entity(entity="name")],
"number": [self.from_entity(entity="number")],
}
def validate_name(
self,
slot_value: Text,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> Dict[Text, Any]:

if len(slot_value) < 8:
dispatcher.utter_message("Please provide a name with at least 8
characters.")
return {"name": None}

return {"name": slot_value}

def validate_number(
self,
slot_value: Any,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> Dict[Text, Any]:
if len(slot_value) < 10:
dispatcher.utter_message("Please provide a number with at least 10
characters.")
return {"number": None}

return {"number": slot_value}

def submit(self, dispatcher: CollectingDispatcher,


tracker: Tracker,
domain: Dict[Text, Any],
) -> List[Dict]:

dispatcher.utter_message(template="utter_details_thanks")

def required_slots(self, tracker: Tracker) -> List[Text]:


return ["name", "number"]

def slot_mappings(self) -> Dict[Text, Union[Dict, List[Dict]]]:


return {
"name": [self.from_entity(entity="name")],
"number": [self.from_entity(entity="number")],
}
def validate_name(
self,
slot_value: Text,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> Dict[Text, Any]:

if len(slot_value) < 8:
dispatcher.utter_message("Please provide a name with at least 8
characters.")
return {"name": None}

return {"name": slot_value}

def validate_number(
self,
slot_value: Any,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> Dict[Text, Any]:
if len(slot_value) < 10:
dispatcher.utter_message("Please provide a number with at least 10
characters.")
return {"number": None}

return {"number": slot_value}

class ActionSubmit(Action):
def name(self) -> Text:
return "action_submit"

def run(
self,
dispatcher,
tracker: Tracker,
domain: "DomainDict",
) -> List[Dict[Text, Any]]:
dispatcher.utter_message(template="utter_details_thanks",
Name=tracker.get_slot("name"),
Mobile_number=tracker.get_slot("number"))

- story: Activate Form


steps:
- intent: request_details
- action: det_form
- active_loop: det_form
- slot_was_set:
- requested_slot: name
- requested_slot: number
- slot_was_set:
- name: AkshyS
- number: 35712345
- slot_was_set:
- requested_slot: null
- active_loop: null
- action: utter_details_thanks

- rule: Auth form


steps:
- intent: request_details
- action: det_form
- active_loop: det_form

- rule: Auth submit and deactivate form


condition:
- active_loop: det_form
steps:
- action: det_form
- active_loop: null
- action: validate_form

You might also like