templatki
This commit is contained in:
parent
fded76596b
commit
e7a8814438
@ -1,35 +1,203 @@
|
||||
import random
|
||||
from service.templates import templates
|
||||
|
||||
def generate_pizza_info(slots):
|
||||
pizza_name = None
|
||||
query_type = None
|
||||
|
||||
for slot in slots:
|
||||
if slot['name'] == 'pizza':
|
||||
pizza_name = slot['value'].lower()
|
||||
elif slot['name'] == 'ingredient':
|
||||
query_type = 'ingredient'
|
||||
elif slot['name'] == 'price':
|
||||
query_type = 'price'
|
||||
|
||||
if pizza_name not in pizza_data:
|
||||
return f"Nie mamy w ofercie pizzy o nazwie {pizza_name}."
|
||||
|
||||
if query_type == 'ingredient':
|
||||
ingredients = pizza_data[pizza_name]['ingredient']
|
||||
return f"Składniki pizzy {pizza_name} to: {', '.join(ingredients)}."
|
||||
elif query_type == 'price':
|
||||
price = pizza_data[pizza_name]['price']
|
||||
return f"Cena pizzy {pizza_name} to {price} zł."
|
||||
|
||||
return f"Informacje o pizzy {pizza_name}: składniki to {', '.join(pizza_data[pizza_name]['ingredient'])}, cena to {pizza_data[pizza_name]['price']} zł."
|
||||
|
||||
|
||||
def generate_ingredients_response(slots):
|
||||
ingredients = [slot['value'] for slot in slots if slot['name'] == 'ingredients']
|
||||
if ingredients:
|
||||
ingredient_list = []
|
||||
for ingredient in ingredients:
|
||||
ingredient_list.extend(ingredient.keys())
|
||||
response = f"Składniki to: {', '.join(ingredient_list)}."
|
||||
return response
|
||||
return "Nie podano składników."
|
||||
|
||||
|
||||
def generate_drinks_response(slots):
|
||||
drinks = [slot['value'] for slot in slots if slot['name'] == 'drink']
|
||||
if drinks:
|
||||
drink_details = []
|
||||
for drink in drinks:
|
||||
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"Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}."
|
||||
else:
|
||||
response = f"Dostępne napoje to: {drink_details[0]}."
|
||||
return response
|
||||
return "Nie podano napojów."
|
||||
|
||||
def generate_size_response(slots):
|
||||
sizes = [slot['value'] for slot in slots if slot['name'] == 'size']
|
||||
if sizes:
|
||||
size_details = []
|
||||
for size in sizes:
|
||||
for name, details in size.items():
|
||||
rozmiar = details.get('rozmiar', 'unknown')
|
||||
size_details.append(f"{name} o średnicy {rozmiar} cm")
|
||||
if len(size_details) > 1:
|
||||
response = f"Dostępne rozmiary to: {', '.join(size_details[:-1])} oraz {size_details[-1]}."
|
||||
else:
|
||||
response = f"Dostępne rozmiary to: {size_details[0]}."
|
||||
return response
|
||||
return "Nie podano rozmiarów."
|
||||
|
||||
def generate_sauce_response(slots):
|
||||
sauces = [slot['value'] for slot in slots if slot['name'] == 'sauce']
|
||||
if sauces:
|
||||
sauce_list = []
|
||||
for sauce in sauces:
|
||||
if isinstance(sauce, list):
|
||||
sauce_list.extend(sauce)
|
||||
else:
|
||||
sauce_list.append(sauce)
|
||||
return f"Dostępne sosy to: {', '.join(sauce_list)}."
|
||||
return "Nie podano sosów."
|
||||
|
||||
|
||||
def select_template(act, slots):
|
||||
slot_names = {slot['name'] for slot in slots}
|
||||
|
||||
if act == "welcomemsg":
|
||||
return random.choice(templates["welcomemsg"])
|
||||
if act == "request/menu":
|
||||
return random.choice(templates["request/menu"])
|
||||
if act == "inform/address":
|
||||
|
||||
if "ingredients" in slot_names:
|
||||
return generate_ingredients_response(slots)
|
||||
elif "drink" in slot_names:
|
||||
return generate_drinks_response(slots)
|
||||
elif "sauce" in slot_names:
|
||||
return generate_sauce_response(slots)
|
||||
elif "size" in slot_names:
|
||||
return generate_size_response(slots)
|
||||
elif "price" in slot_names:
|
||||
return random.choice(templates["inform/price"])
|
||||
|
||||
if act == "inform":
|
||||
if "menu" in slot_names:
|
||||
return random.choice(templates["inform/menu"])
|
||||
elif "address" in slot_names:
|
||||
return random.choice(templates["inform/address"])
|
||||
if act == "inform/delivery":
|
||||
elif "phone" in slot_names:
|
||||
return random.choice(templates["inform/phone"])
|
||||
elif "order-complete" in slot_names:
|
||||
return random.choice(templates["inform/order-complete"])
|
||||
elif "delivery" in slot_names:
|
||||
return random.choice(templates["inform/delivery"])
|
||||
if act == "inform/payment":
|
||||
elif "payment" in slot_names:
|
||||
return random.choice(templates["inform/payment"])
|
||||
if act == "affirm":
|
||||
return random.choice(templates["affirm"])
|
||||
if act == "request/drinks":
|
||||
return random.choice(templates["request/drinks"])
|
||||
if act == "bye":
|
||||
return random.choice(templates["bye"])
|
||||
if act == "inform/order":
|
||||
if "quantity" in slot_names and "food" in slot_names and "pizza" in slot_names:
|
||||
elif "time" in slot_names:
|
||||
return random.choice(templates["inform/time"])
|
||||
elif "name" in slot_names:
|
||||
return random.choice(templates["inform/name"])
|
||||
elif "price" in slot_names and "pizza" in slot_names:
|
||||
return generate_pizza_info(slots)
|
||||
elif act == "inform/order":
|
||||
if "quantity" in slot_names and "pizza" in slot_names and "size" in slot_names:
|
||||
return templates["inform/order"][1]
|
||||
elif "quantity" in slot_names and "pizza" in slot_names:
|
||||
return templates["inform/order"][4]
|
||||
elif "food" in slot_names and "pizza" in slot_names:
|
||||
return templates["inform/order"][2]
|
||||
elif "quantity" in slot_names and "food" in slot_names:
|
||||
return templates["inform/order"][0]
|
||||
elif "food" in slot_names and "pizza" in slot_names and "price" in slot_names:
|
||||
return templates["inform/order"][5]
|
||||
elif "quantity" in slot_names:
|
||||
return templates["inform/order"][3]
|
||||
else:
|
||||
return templates["inform/order"][4]
|
||||
elif act == "request/menu":
|
||||
return random.choice(templates["request/menu"])
|
||||
elif act == "inform/address":
|
||||
return random.choice(templates["inform/address"])
|
||||
elif act == "request/price":
|
||||
return random.choice(templates["request/price"])
|
||||
elif act == "inform/menu":
|
||||
return random.choice(templates["inform/menu"])
|
||||
elif act == "request/ingredients":
|
||||
return random.choice(templates["request/ingredients"])
|
||||
elif act == "request/sauce":
|
||||
return random.choice(templates["request/sauce"])
|
||||
elif act == "inform/phone":
|
||||
return random.choice(templates["inform/phone"])
|
||||
elif act == "inform/order-complete":
|
||||
return random.choice(templates["inform/order-complete"])
|
||||
elif act == "request/time":
|
||||
return random.choice(templates["request/time"])
|
||||
elif act == "request/size":
|
||||
return random.choice(templates["request/size"])
|
||||
elif act == "inform/delivery":
|
||||
return random.choice(templates["inform/delivery"])
|
||||
elif act == "inform/payment":
|
||||
return random.choice(templates["inform/payment"])
|
||||
elif act == "request/delivery-price":
|
||||
return random.choice(templates["request/delivery-price"])
|
||||
elif act == "inform/time":
|
||||
return random.choice(templates["inform/time"])
|
||||
elif act == "request/drinks":
|
||||
return random.choice(templates["request/drinks"])
|
||||
elif act == "request/food":
|
||||
return random.choice(templates["request/food"])
|
||||
elif act == "inform/name":
|
||||
return random.choice(templates["inform/name"])
|
||||
elif act == "bye":
|
||||
return random.choice(templates["bye"])
|
||||
|
||||
return "default/template"
|
||||
return None
|
||||
|
||||
|
||||
# def select_template(act, slots):
|
||||
# slot_names = {slot['name'] for slot in slots}
|
||||
|
||||
# if act == "welcomemsg":
|
||||
# return random.choice(templates["welcomemsg"])
|
||||
# if act == "request/menu":
|
||||
# return random.choice(templates["request/menu"])
|
||||
# if act == "inform/address":
|
||||
# return random.choice(templates["inform/address"])
|
||||
# if act == "inform/delivery":
|
||||
# return random.choice(templates["inform/delivery"])
|
||||
# if act == "inform/payment":
|
||||
# return random.choice(templates["inform/payment"])
|
||||
# if act == "affirm":
|
||||
# return random.choice(templates["affirm"])
|
||||
# if act == "request/drinks":
|
||||
# return random.choice(templates["request/drinks"])
|
||||
# if act == "bye":
|
||||
# return random.choice(templates["bye"])
|
||||
# if act == "inform/order":
|
||||
# if "quantity" in slot_names and "food" in slot_names and "pizza" in slot_names:
|
||||
# return templates["inform/order"][1]
|
||||
# elif "quantity" in slot_names and "pizza" in slot_names:
|
||||
# return templates["inform/order"][4]
|
||||
# elif "food" in slot_names and "pizza" in slot_names:
|
||||
# return templates["inform/order"][2]
|
||||
# elif "quantity" in slot_names:
|
||||
# return templates["inform/order"][3]
|
||||
# else:
|
||||
# return templates["inform/order"][4]
|
||||
|
||||
# return "default/template"
|
||||
|
@ -6,12 +6,25 @@ templates = {
|
||||
"Dziękujemy za zamówienie {quantity} x {food}.",
|
||||
"Na jaką pizzę masz ochotę?"
|
||||
],
|
||||
"request/menu": [
|
||||
"Oto nasze menu: {menu}.",
|
||||
"Nasze menu obejmuje: {menu}.",
|
||||
"Proszę, oto lista dostępnych dań: {menu}.",
|
||||
"Dostępne dania to: {menu}.",
|
||||
"W naszym menu znajdziesz: {menu}."
|
||||
"inform/menu": [
|
||||
"Oferujemy następujące pizze: {menu}.",
|
||||
"Nasze pizze to: {menu}.",
|
||||
"W naszym menu znajdziesz pizze: {menu}.",
|
||||
"Dostępne pizze to: {menu}.",
|
||||
"Proszę, oto lista dostępnych pizz: {menu}."
|
||||
],
|
||||
"inform/name": [
|
||||
"Twoje imię to {name}.",
|
||||
"Podane imię: {name}.",
|
||||
"Twoje imię: {name}.",
|
||||
"Masz na imię {name}.",
|
||||
"Imię: {name}."
|
||||
],
|
||||
"inform/price": [
|
||||
"Cena wybranej pizzy to {price} zł.",
|
||||
"Koszt pizzy to {price} zł.",
|
||||
"Wybrana pizza kosztuje {price} zł.",
|
||||
"Cena pizzy wynosi {price} zł."
|
||||
],
|
||||
"inform/address": [
|
||||
"Twój adres to: {address}.",
|
||||
@ -20,6 +33,92 @@ templates = {
|
||||
"Dostarczymy na adres: {address}.",
|
||||
"Twój podany adres to: {address}."
|
||||
],
|
||||
"inform/sauce": [
|
||||
"Dostępne sosy to: {sauce}.",
|
||||
"Możesz wybrać spośród następujących sosów: {sauce}.",
|
||||
"Oferujemy następujące sosy: {sauce}."
|
||||
],
|
||||
"inform/phone": [
|
||||
"Twój numer telefonu to: {phone}.",
|
||||
"Podany numer telefonu: {phone}.",
|
||||
"Numer telefonu, który podałeś, to: {phone}.",
|
||||
"Twoje dane kontaktowe: {phone}.",
|
||||
"Telefon kontaktowy: {phone}."
|
||||
],
|
||||
"inform/order-complete": [
|
||||
"Twoje zamówienie zostało zrealizowane. Dziękujemy!",
|
||||
"Zamówienie zakończone. Dziękujemy za zakupy!",
|
||||
"Zamówienie zrealizowane. Czekaj na dostawę!",
|
||||
"Twoje zamówienie jest gotowe. Dziękujemy!",
|
||||
"Realizacja zamówienia zakończona. Dziękujemy!"
|
||||
],
|
||||
"inform/delivery": [
|
||||
"Twoje zamówienie zostanie dostarczone na {address}.",
|
||||
"Dostarczymy zamówienie na adres: {address}.",
|
||||
"Dostawa na adres: {address}.",
|
||||
"Twoje zamówienie jedzie na {address}.",
|
||||
"Adres dostawy: {address}."
|
||||
],
|
||||
"inform/address": [
|
||||
"Twoje zamówienie zostanie dostarczone na adres: {address}.",
|
||||
"Dostawa będzie na adres: {address}.",
|
||||
"Adres dostawy: {address}."
|
||||
],
|
||||
"inform/payment": [
|
||||
"Metoda płatności to: {payment-method}.",
|
||||
"Płatność realizujesz przez: {payment-method}.",
|
||||
"Wybrałeś metodę płatności: {payment-method}.",
|
||||
"Płatność: {payment-method}.",
|
||||
"Możesz zapłacić kartą, gotówką lub blikiem"
|
||||
],
|
||||
"affirm": [
|
||||
"Świetnie! Napisz co Ci chodzi po głowie.",
|
||||
"Dobrze! Co dalej?",
|
||||
"OK! Co chciałbyś zamówić?",
|
||||
"Super! Co dalej?",
|
||||
"Dobrze! Jakie dalsze zamówienia?"
|
||||
],
|
||||
"request/delivery-price": [
|
||||
"Koszt dostawy wynosi {delivery-price} zł.",
|
||||
"Cena dostawy to {delivery-price} zł.",
|
||||
"Za dostawę zapłacisz {delivery-price} zł.",
|
||||
"Dostawa kosztuje {delivery-price} zł.",
|
||||
"Koszt dostawy: {delivery-price} zł."
|
||||
],
|
||||
"request/menu": [
|
||||
"Oto nasze menu: {menu}.",
|
||||
"Nasze menu obejmuje: {menu}.",
|
||||
"Proszę, oto lista dostępnych dań: {menu}.",
|
||||
"Dostępne dania to: {menu}.",
|
||||
"W naszym menu znajdziesz: {menu}."
|
||||
],
|
||||
"inform/time": [
|
||||
"Aktualny czas to {time}.",
|
||||
"Jest teraz {time}.",
|
||||
"Czas: {time}.",
|
||||
"Godzina: {time}.",
|
||||
"Obecny czas: {time}."
|
||||
],
|
||||
"request/drinks": [
|
||||
"Jakie napoje chciałbyś zamówić?",
|
||||
"Proszę wybrać napoje do zamówienia.",
|
||||
"Jakie napoje dołączamy do zamówienia?",
|
||||
"Co chciałbyś pić?",
|
||||
"Proszę podać napoje do zamówienia."
|
||||
],
|
||||
"welcomemsg": [
|
||||
"Witaj w naszej wspaniałej pizzerii. W czym mogę pomóc?",
|
||||
"Halo, halo, tu najlepsza pizza w mieście. Masz głoda?",
|
||||
"Dzieńdoberek, gdyby wszyscy jedli nasze pizze, na świecie nie byłoby wojen. Jaką pizzę sobie dziś gruchniesz?",
|
||||
],
|
||||
"request/menu": [
|
||||
"W naszym menu znajdują się pizze, spaghetti, gnocci oraz aranchini. Polecam potrawkę śląską po grecku.",
|
||||
"Smażymy, gotujemy, prażymy, ale najlepiej nam wychodzi pizza. Na co masz ochotę?",
|
||||
],
|
||||
"request/drink": [
|
||||
"Oferujemy napoje zimne, ciepłe i letnie. Cola, fanta, woda mineralna, kawa, herbata lub frappe.",
|
||||
"Może z alkoholem? Mamy świeżo warzone piwo",
|
||||
],
|
||||
"request/price": [
|
||||
"Cena za {food} wynosi {price} zł.",
|
||||
"Koszt {food} to {price} zł.",
|
||||
@ -41,19 +140,10 @@ templates = {
|
||||
"Które sosy mają być do {food}?",
|
||||
"Wybierz sosy do {food}."
|
||||
],
|
||||
"inform/phone": [
|
||||
"Twój numer telefonu to: {phone}.",
|
||||
"Podany numer telefonu: {phone}.",
|
||||
"Numer telefonu, który podałeś, to: {phone}.",
|
||||
"Twoje dane kontaktowe: {phone}.",
|
||||
"Telefon kontaktowy: {phone}."
|
||||
],
|
||||
"inform/order-complete": [
|
||||
"Twoje zamówienie zostało zrealizowane. Dziękujemy!",
|
||||
"Zamówienie zakończone. Dziękujemy za zakupy!",
|
||||
"Zamówienie zrealizowane. Czekaj na dostawę!",
|
||||
"Twoje zamówienie jest gotowe. Dziękujemy!",
|
||||
"Realizacja zamówienia zakończona. Dziękujemy!"
|
||||
"request/food": [
|
||||
"Co chciałbyś zamówić?",
|
||||
"Proszę podać na jaką pizzę masz ochotę",
|
||||
"Którą pizzę wybrałeś?"
|
||||
],
|
||||
"request/time": [
|
||||
"Oczekiwany czas dostawy to {time} minut.",
|
||||
@ -69,73 +159,6 @@ templates = {
|
||||
"Proszę wybrać rozmiar {pizza}: {sizes}.",
|
||||
"Mamy następujące rozmiary {pizza}: {sizes}."
|
||||
],
|
||||
"affirm": [
|
||||
"Świetnie! Napisz co Ci chodzi po głowie.",
|
||||
"Dobrze! Co dalej?",
|
||||
"OK! Co chciałbyś zamówić?",
|
||||
"Super! Co dalej?",
|
||||
"Dobrze! Jakie dalsze zamówienia?"
|
||||
],
|
||||
"inform/delivery": [
|
||||
"Twoje zamówienie zostanie dostarczone na {address}.",
|
||||
"Dostarczymy zamówienie na adres: {address}.",
|
||||
"Dostawa na adres: {address}.",
|
||||
"Twoje zamówienie jedzie na {address}.",
|
||||
"Adres dostawy: {address}."
|
||||
],
|
||||
"inform/address": [
|
||||
"Twoje zamówienie zostanie dostarczone na adres: {address}.",
|
||||
"Dostawa będzie na adres: {address}.",
|
||||
"Adres dostawy: {address}."
|
||||
],
|
||||
"inform/payment": [
|
||||
"Metoda płatności to: {payment-method}.",
|
||||
"Płatność realizujesz przez: {payment-method}.",
|
||||
"Wybrałeś metodę płatności: {payment-method}.",
|
||||
"Płatność: {payment-method}.",
|
||||
"Możesz zapłacić kartą, gotówką lub blikiem"
|
||||
],
|
||||
"request/delivery-price": [
|
||||
"Koszt dostawy wynosi {delivery-price} zł.",
|
||||
"Cena dostawy to {delivery-price} zł.",
|
||||
"Za dostawę zapłacisz {delivery-price} zł.",
|
||||
"Dostawa kosztuje {delivery-price} zł.",
|
||||
"Koszt dostawy: {delivery-price} zł."
|
||||
],
|
||||
"inform/time": [
|
||||
"Aktualny czas to {time}.",
|
||||
"Jest teraz {time}.",
|
||||
"Czas: {time}.",
|
||||
"Godzina: {time}.",
|
||||
"Obecny czas: {time}."
|
||||
],
|
||||
"request/drinks": [
|
||||
"Jakie napoje chciałbyś zamówić?",
|
||||
"Proszę wybrać napoje do zamówienia.",
|
||||
"Jakie napoje dołączamy do zamówienia?",
|
||||
"Co chciałbyś pić?",
|
||||
"Proszę podać napoje do zamówienia."
|
||||
],
|
||||
"inform/name": [
|
||||
"Twoje imię to {name}.",
|
||||
"Podane imię: {name}.",
|
||||
"Twoje imię: {name}.",
|
||||
"Masz na imię {name}.",
|
||||
"Imię: {name}."
|
||||
],
|
||||
"welcomemsg": [
|
||||
"Witaj w naszej wspaniałej pizzerii. W czym mogę pomóc?",
|
||||
"Halo, halo, tu najlepsza pizza w mieście. Masz głoda?",
|
||||
"Dzieńdoberek, gdyby wszyscy jedli nasze pizze, na świecie nie byłoby wojen. Jaką pizzę sobie dziś gruchniesz?",
|
||||
],
|
||||
"request/menu": [
|
||||
"W naszym menu znajdują się pizze, spaghetti, gnocci oraz aranchini. Polecam potrawkę śląską po grecku.",
|
||||
"Smażymy, gotujemy, prażymy, ale najlepiej nam wychodzi pizza. Na co masz ochotę?",
|
||||
],
|
||||
"request/drink": [
|
||||
"Oferujemy napoje zimne, ciepłe i letnie. Cola, fanta, woda mineralna, kawa, herbata lub frappe.",
|
||||
"Może z alkoholem? Mamy świeżo warzone piwo",
|
||||
],
|
||||
"bye": [
|
||||
"Dziękujemy i do zobaczenia wkrótce.",
|
||||
"Polecamy się na przyszłość. Do zobaczenia!",
|
||||
|
Loading…
Reference in New Issue
Block a user