Spaces:
Sleeping
Sleeping
File size: 3,670 Bytes
f55b6f7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# 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
|