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