From 8f85af7f7f54d4f428a914b406fc2215fd299ac3 Mon Sep 17 00:00:00 2001 From: s464951 Date: Tue, 11 Jun 2024 18:23:36 +0200 Subject: [PATCH] move responses to json --- chatbot/data/response.json | 46 ++++++++++++++++++++---------------- chatbot/main.py | 2 +- chatbot/modules/generator.py | 42 +++++++------------------------- 3 files changed, 36 insertions(+), 54 deletions(-) diff --git a/chatbot/data/response.json b/chatbot/data/response.json index c3fe424..6ed13e4 100644 --- a/chatbot/data/response.json +++ b/chatbot/data/response.json @@ -1,27 +1,33 @@ { - "name_response": [ - "Witaj, nazywam się Dia.", - "Cześć! Jestem Dia.", - "Hej, jestem Dia.", - "Witaj! Nazywam się Dia.", - "Cześć, jestem Dia.", - "Hej! Jestem Dia.", - "Jestem Dia. Miło mi Cię poznać.", - "Witaj, jestem chatbot Dia." - ], - "unknown": [ + "inform": { + "item": "Nasz sklep oferuje szeroki wybór artykułów, takich jak\n artykuły spożywcze,\n ogrodowe\n oraz kosmetyki. Proszę podaj produkt.", + "address": "Nasz sklep nie ma fizycznego adresu. To sklep internetowy.", + "delivery_method": "Dostępne formy dostawy: INPOST, DPD, DHL.", + "payment_method": "Dostępne formy płatności: Karta, przy odbiorze", + "email": "Obsługa klienta: cs2137@gmail.com", + "card_nr": [ + "Dzięki karcie rabatowej zbierasz punkty, które poźniej przekładają się na rabat.", + "Dzisiaj z kartą rabatową meble ogrodowe 200zł taniej!", + "Dzisiaj z kartą rabatową szampony 2 w cenie 1!" + ] + }, + "canthelp": { + "unknown": [ "Przepraszam, nie rozumiem. Możesz to powtórzyć?", "Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?", "Nie rozumiem. Możesz to powtórzyć?", "Nie jestem pewien, co masz na myśli. Możesz to wyjaśnić?", "Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?" - ], - "repeat": [ - "Wygląda na to, że krążymy wokół tego samego tematu. Czy możemy przejść do czegoś innego?", - "Znowu to samo pytanie, może zmienimy temat?", - "Ponownie pytasz o to samo, czy jest coś innego, o co chciałbyś zapytać?" - ], - "give_price": [ - "Cena to 20zl" - ] + ] + }, + "request": { + "card_nr": "Podaj proszę numer karty rabatowej", + "address": "Podaj proszę adres do wysyłki", + "item": "Jaki produkt chcesz kupić?", + "email": "Podaj proszę email.", + "delivery_method": "Jaką formą dostawy jesteś zainteresowany?", + "payment_method": "Jaką formą płatności jesteś zainteresowany?" + }, + "bye": "Miłego dnia!", + "confirmation": "Zamówienie zostało złożone!" } diff --git a/chatbot/main.py b/chatbot/main.py index ee78dc9..3e79c86 100644 --- a/chatbot/main.py +++ b/chatbot/main.py @@ -19,7 +19,7 @@ def main(): nlu = NLU() dst = DialogStateMonitor() dp = DialoguePolicy() - generator = ResponseGenerator() + generator = ResponseGenerator(config) print(Fore.CYAN + "Witaj w chatbocie! Rozpocznij rozmowę.") print(Fore.YELLOW + "Wpisz 'quit' aby zakończyć program.\n") diff --git a/chatbot/modules/generator.py b/chatbot/modules/generator.py index 6246831..5db339c 100644 --- a/chatbot/modules/generator.py +++ b/chatbot/modules/generator.py @@ -7,42 +7,18 @@ import random class ResponseGenerator: def __init__(self, config: Config): with config.responses_path.open('r', encoding='utf-8') as file: - self.responses: Dict[str, list] = json.load(file) + self.responses: Dict[str, dict] = json.load(file) def nlg(self, system_act): intent = system_act.intent slot = system_act.slots[0].name if system_act.slots else None - responses = { - "inform": { - "item": "Nasz sklep oferuje szeroki wybór artykułów, takich jak\n artykuły spożywcze,\n ogrodowe\n oraz kosmetyki. Proszę podaj produkt.", - "address": "Nasz sklep nie ma fizycznego adresu. To sklep internetowy.", - "delivery_method": "Dostępne formy dostawy: INPOST, DPD, DHL.", - "payment_method": "Dostępne formy płatności: Karta, przy odbiorze", - "email": "Obsługa klienta: cs2137@gmail.com", - "card_nr": random.choice([ - "Dzięki karcie rabatowej zbierasz punkty, które poźniej przekładają się na rabat.", - "Dzisiaj z kartą rabatową meble ogrodowe 200zł taniej!", - "Dzisiaj z kartą rabatową szampony 2 w cenie 1!" - ]) - }, - "canthelp": { - "unknown": random.choice([ - "Przepraszam, nie rozumiem polecenia...", - "Możesz powtórzyć?", - "Powiedz proszę jeszcze raz.." - ]) - }, - "request": { - "card_nr": "Podaj proszę numer karty rabatowej", - "address": "Podaj proszę adres do wysyłki", - "item": "Jaki produkt chcesz kupić?", - "email": "Podaj proszę email.", - "delivery_method": "Jaką formą dostawy jesteś zainteresowany?", - "payment_method": "Jaką formą płatności jesteś zainteresowany?" - }, - "bye": "Miłego dnia!", - "confirmation": "Zamówienie zostało złożone!" - } + intent_responses = self.responses.get(intent, {}) + slot_responses = intent_responses.get(slot) - return responses.get(intent, {}).get(slot, "Nieznane zapytanie.") + if isinstance(slot_responses, list): + return random.choice(slot_responses) + elif isinstance(slot_responses, str): + return slot_responses + else: + return "Nieznane zapytanie." \ No newline at end of file