-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
92 lines (73 loc) · 2.68 KB
/
app.py
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from flask import Flask, request
from flask_ask import Ask, statement, question, session
from menu import get_menu
from location_status import generate_place_info
from responses import get_user_input_value, get_open_places, statement_helper, read_menu
import responses
app = Flask(__name__)
ask = Ask(app, "/ub_dining")
@app.route('/')
def homepage():
return responses.HOMEPAGE_TEXT
@ask.launch
def start_skill():
return question(responses.WELCOME_MESSAGE)
# Three things: Ask what is open at any day; Ask if that a particular location is open or not; Ask the menu for a dining center.
@ask.intent("AMAZON.HelpIntent")
def help():
return question(responses.HELP_RESPONSE)
@ask.intent("AMAZON.CancelIntent")
@ask.intent("AMAZON.StopIntent")
@ask.session_ended
def no_intent():
return statement(responses.EXIT_RESPONSE)
@ask.intent("OpenByLocation")
def open_by_date(time):
try:
content = request.json
location = get_user_input_value(content, "location")
if location is None:
location = responses.DEFAULT_LOCATION
places = get_open_places(location, time)
return question(statement_helper(places, location))
except:
return question(responses.ERROR_STATEMENT)
@ask.intent("IsPlaceOpen")
def check_place_open(time):
try:
content = request.json
place = get_user_input_value(content, "place")
if place is None:
raise Exception("Invalid on-campus dining location")
place_info = generate_place_info(place, time)
msg = ""
if place_info == "Closed":
msg = f"{place} is {place_info}..."
else:
duration = place_info.replace("-", "to")
msg = f"{place} is open from {duration}..."
msg += responses.ADDITIONAL_QUESTION
return question(msg)
except:
return question(responses.ERROR_STATEMENT)
@ask.intent("Menu")
def menu(time):
try:
content = request.json
dining_place = get_user_input_value(content, "diningCenter")
meal_time = get_user_input_value(content, "mealTime")
dining_place_id = get_user_input_value(content, "diningCenter", True)
if dining_place_id is None:
raise Exception("Invalid dining location id")
menu = get_menu(dining_place_id, time, meal_time)
out_msg = read_menu(menu, dining_place, meal_time)
out_msg += responses.ADDITIONAL_QUESTION
return question(out_msg)
except Exception as ex:
msg = responses.ERROR_STATEMENT
return question(msg)
@ask.intent("AMAZON.FallbackIntent")
def default_fallback():
return question(responses.ERROR_STATEMENT)
if __name__ == "__main__":
app.run(debug=True)