Spaces:
Sleeping
Sleeping
# This module is made to parse the configuration file and to create the botchat reponds | |
import os | |
import yaml | |
import random | |
from datetime import datetime | |
SRC_PATH = os.path.dirname(__file__) | |
def load_yaml(filepath): # A function to open the .yaml configuration files | |
with open(filepath, "r") as f: | |
return yaml.safe_load(f) | |
QUESTION_CONFIG_FILE = os.path.join(SRC_PATH, "QnA.yaml") # Saving the configuration file path | |
QUESTIONS_CONFIGS = load_yaml(QUESTION_CONFIG_FILE) # Load the configuration file | |
QUESTIONS = None # A list for the prompted user chat / questions / responds | |
for q in QUESTIONS_CONFIGS['questions']: # Filling the list with the user questions in the configuration files | |
string = str(q.keys()) | |
splitted = string.split("'")[1] | |
if QUESTIONS is None: | |
QUESTIONS = [splitted] | |
else: | |
QUESTIONS.append(splitted) | |
def automaticAnswer(question): | |
answer = "Hey, what can I do for you?" # A default respond of teh chatbot | |
index = 0 | |
if question is None: | |
return answer # If the user does not choose a prompted question of the dropdown, then return defult respond | |
for qe in QUESTIONS_CONFIGS['questions']: | |
dt = datetime.now() # Saving the current time for the questions related to time | |
string1 = str(qe.keys()) # Load the questions from the configuration files | |
splitted1 = string1.split("'")[1] | |
if splitted1 == question: | |
randomNumber = random.randint(0, 1) # Give a random number (either 0 or 1) to determine which version of | |
# the answer will be displayed | |
if randomNumber == 0: # If the random number is 0, then display the first version of the answer | |
if splitted1 == "What day is today?": # For the question related to current day of the week | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][0]['response_1'] + " " + dt.strftime('%A') | |
elif splitted1 == "Could you please tell the time?": # For the question related to the current time | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][0]['response_1'] + " " + dt.strftime( | |
"%H:%M") | |
elif splitted1 == "Can you tell the date?": # For the question of the current date | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][0]['response_1'] + " " + dt.strftime( | |
"%B %d, %Y") | |
else: # Other questions | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][0]['response_1'] | |
else: # If the random number is 1, then display the second version of the answer | |
if qe == "What day is today?": # For the question related to current day of the week | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][1]['response_2'] + " " + dt.strftime('%A') | |
elif splitted1 == "Could you please tell the time?": # For the question related to the current time | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][1]['response_2'] + " " + dt.strftime( | |
"%H:%M") | |
elif splitted1 == "Can you tell the date?": # For the question of the current date | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][1]['response_2'] + " " + dt.strftime( | |
"%B %d, %Y") | |
else: # Other questions | |
answer = QUESTIONS_CONFIGS['questions'][index][splitted1][1]['response_2'] | |
break | |
index = index + 1 # Iterate through the list of questions | |
return answer | |