Hi, I have return a custom action for storing the name, mobile and email in google sheets. but bot get struck after giving the email id. please help for this issue.
class StoreForm(FormAction): “”“Collects sales information and adds it to the spreadsheet”“”
def name(self):
return "store_form"
@staticmethod
def required_slots(tracker):
return [
"PERSON",
"mobile",
"business_email",
]
def slot_mappings(self):
# type: () -> 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 {
"PERSON": [
self.from_entity(entity="name"),
self.from_text(intent="enter_data"),
],
"mobile": [
self.from_entity(entity="number"),
self.from_text(intent="enter_data"),
],
"business_email": [
self.from_entity(entity="business_email"),
self.from_text(intent="enter_data"),
],
}
def validate_business_business_email(self, value, dispatcher, tracker, domain):
"""Check to see if an business_email entity was actually picked up by duckling."""
if any(tracker.get_latest_entity_values("business_email")):
# entity was picked up, validate slot
return {"business_email": value}
else:
# no entity was picked up, we want to ask again
dispatcher.utter_template("utter_no_business_email", tracker)
return {"business_email": None}
def submit(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[Dict]:
"""Once we have all the information, attempt to add it to the
Google Drive database"""
import datetime
business_email = tracker.get_slot("business_email")
PERSON = tracker.get_slot("PERSON")
mobile = tracker.get_slot("mobile")
date = datetime.datetime.now().strftime("%d/%m/%Y")
sales_info = [mobile, date, PERSON, business_email]
try:
gdrive = GDriveService()
gdrive.store_data(sales_info)
dispatcher.utter_template("utter_confirm_salesrequest", tracker)
return []
except Exception as e:
logger.error(
"Failed to write data to gdocs. Error: {}" "".format(e.message),
exc_info=True,
)
dispatcher.utter_template("utter_salesrequest_failed", tracker)
return []
out1.txt (24.5 KB)
i have seen that slot are not filled with values
domain.yml
stories.md