I’m trying to train a table reservation bot for a restaurant and the test case requires to intake a time or an amount of the time interval from user, add the time amount to the system time and finally check a condition if the result time belongs in the available time slot for the restaurant. Below is the sample bot-user convo and later is the condition -
" User: I want to reserve a table
Bot: How many seats would you like to reserve
Step 2
User: 2 seats
Bot: Which section would you like to book
- AC
- Non-AC
Step 3
User: (Clicks on Button 1)
Bot: When would you like to book a reservation? (We are only open from 7pm to 10pm)
Step 4 (Assuming conversation time is 7:10pm)
User: In half an hour
Bot: You have reserved 2 seats in our AC section for 7:30pm. Thanks!"
Explanation: “…In step 4, it extracts the reservation time (7:10pm + 30 mins → 7:30pm slot) based on the relative time input by the user (‘In half an hour’).”
I have written this python code in actions.py -
from datetime import datetime import datetime as dt
class CheckWorkingHours(Action): def name(self): # type: () → Text return “action_check_working_hours”
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
now = dt.datetime.now()
today19pm = now.replace(hour=19, minute=0, second=0, microsecond=0)
today22pm = now.replace(hour=22, minute=0, second=0, microsecond=0)
if today19pm <= now <= today22pm:
message = 'You have reserved {number} seats in our {section} section for {7:30pm.} Thanks!'
else:
message = 'We are not open at that time. We are only open from 7pm to 10pm'
dispatcher.utter_message(message)
return []
But I’m confused how to take the time input from the customer and also in a form of a string ("…half an hour") and convert it to the integer form to add the hour to the current hour and output it.
N.B.- I am a noob in RASA. I’m trying to do an industry level project which has given me only 1 day of time to learn and implement rasa and python. I’m still struggling with understanding the logics and implementations. Any detailed lead would help.