From 75fb0f873b8d901ea7d88a0fd7da0c01747ff3da Mon Sep 17 00:00:00 2001 From: kb Date: Thu, 13 Jun 2024 16:36:17 +0200 Subject: [PATCH] =?UTF-8?q?Dopytujemy=20o=20kompletne=20zam=C3=B3wienie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/dialog_policy.py | 5 ++++- src/service/template_selector.py | 22 ++++++++++++++++------ src/service/templates.py | 3 +++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/service/dialog_policy.py b/src/service/dialog_policy.py index 133998a..d447c17 100644 --- a/src/service/dialog_policy.py +++ b/src/service/dialog_policy.py @@ -24,10 +24,13 @@ class DialogPolicy: return Frame(source="system", act = "bye_and_thanks") match(current_active_stage['name']): case "collect_food": - # current_active_stage['confirmed'] = True return Frame(source="system", act = "request/food", slots = [Slot("menu", dsm.state['constants']['menu'])], act_understood=act_processed) case "collect_drinks": return Frame(source="system", act = "request/drinks", slots = [Slot("drink", dsm.state['constants']['drink'])], act_understood=act_processed) + case "more_food": + return Frame(source="system", act = "request/food-more", slots = [Slot("menu", dsm.state['constants']['menu'])], act_understood=act_processed) + case "more_drinks": + return Frame(source="system", act = "request/drinks-more", slots = [Slot("drink", dsm.state['constants']['drink'])], act_understood=act_processed) case "collect_address": return Frame(source="system", act = "request/address", act_understood=act_processed) case "collect_payment_method": diff --git a/src/service/template_selector.py b/src/service/template_selector.py index b4f9669..0f513ae 100644 --- a/src/service/template_selector.py +++ b/src/service/template_selector.py @@ -37,7 +37,8 @@ def generate_ingredients_response(slots): return "Nie podano składników." -def generate_drinks_response(slots): +def generate_drinks_response(slots, act): + more = 'drinks-more' in act drinks = [slot['value'] for slot in slots if slot['name'] == 'drink'] if drinks: drink_details = [] @@ -45,11 +46,18 @@ def generate_drinks_response(slots): for name, details in drink.items(): # price = details.get('price', 'unknown') drink_details.append(f"{name}") # w cenie {price} zł") - if len(drink_details) > 1: - response = f"Czy chcesz coś do picia? Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}." + if not more: + if len(drink_details) > 1: + response = f"Czy chcesz coś do picia? Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}." + else: + response = f"Czy chcesz coś do picia? Dostępne napoje to: {drink_details[0]}." + return response else: - response = f"Czy chcesz coś do picia? Dostępne napoje to: {drink_details[0]}." - return response + if len(drink_details) > 1: + response = f"Czy chcesz coś jeszcze picia? Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}." + else: + response = f"Czy chcesz coś jeszcze picia? Dostępne napoje to: {drink_details[0]}." + return response return "Nie podano napojów." def generate_size_response(slots): @@ -80,7 +88,7 @@ def select_template(act, slots): if "ingredients" in slot_names: return generate_ingredients_response(slots) elif "drink" in slot_names: - return generate_drinks_response(slots) + return generate_drinks_response(slots, act) elif "sauce" in slot_names: return generate_sauce_response(slots) elif "size" in slot_names: @@ -154,6 +162,8 @@ def select_template(act, slots): return random.choice(templates["request/drinks"]) elif act == "request/food": return random.choice(templates["inform/menu"]) + elif act == "request/food-more": + return random.choice(templates["inform/menu-more"]) elif act == "inform/name": return random.choice(templates["inform/name"]) elif act == "bye": diff --git a/src/service/templates.py b/src/service/templates.py index b7719a4..4b8a906 100644 --- a/src/service/templates.py +++ b/src/service/templates.py @@ -9,6 +9,9 @@ templates = { "inform/menu": [ "Oferujemy następujące pizze: {menu}.", ], + "inform/menu-more": [ + "Czy chcesz jeszcze jakąś pizzę? Dla przypomnienia w menu mamy {menu}.", + ], "inform/name": [ "Twoje imię to {name}.", "Podane imię: {name}.",