import json from xml import dom value_dict = json.load(open('modules/value_dict.json')) class NLG: def __init__(self,dst): self.answer = '' self.dst = dst def update(self, system_act): self.answer = '' self.dst.state['system_action'].append(system_act) for domain, intent, slot, value in system_act: if domain == 'cinema' and intent == 'inform' and slot == 'seat': if value == '': self.answer += f'Gdzie dokładnie chciałbyś/chciałabyś zarezerwować miejsce? ' elif value == "top": self.answer += f'Wolne miejsca na górze w rzędzie 10: miejsca od 5 do 10 i od 12 do 14. ' elif value <= "bottom": self.answer += f'Wolne miejsca na dole w rzędzie 1: miejsca od 2 do 10 i od 12 do 14. ' elif value <= "middle": self.answer += f'Wolne miejsca na środku w rzędzie 6: miejsca od 5 do 10. ' else: self.answer += f'Nie znalazłem miejsca. ' elif domain == 'cinema' and intent == 'inform' and slot == 'cancel_book': if len(value): self.answer += f'Rezerwacja na adres e-mail: {value} została anulowana. ' elif value == '': self.answer += f'Proszę podać e-mail na który dokonana została rezerwacja miejsce. ' else: self.answer += f'Rezerwacja nie została anulowana. ' elif domain == 'cinema' and intent == 'request' and slot == 'movie': if value == '': self.answer += f'Na jaki film chciałbyś/chciałabyś pójść? ' elif domain == 'cinema' and intent == 'inform' and slot == 'movie': if value == '': self.answer += f'Nie znalazłem filmu. ' else: self.answer += f'Film {value} będzie wyświetlany jutro o godzinie 21:30. ' elif domain == 'cinema' and intent == 'offer' and slot == 'closestscreening': if value in ['Dziś','Jutro','Pojutrze']: self.answer += f'{value} prezentujemy Batmana o 18:30 i Ambulans o 21:00. ' elif value in value_dict['train']['day']: self.answer += f'W {value} prezentujemy Ambulans o 18:30 i To nie wypanda o 20:00. ' elif value in value_dict['train']['date']: self.answer += f'Dnia {value} prezentujemy Batmana o 18:00 i Sing 2 o 20:30. ' elif value == '': self.answer += f'W naszym kinie polecamy obejrzeć seans Batmana, który odbędzie się dzisiaj o 18:30. Wyświetlamy również Ambulans o 19:45 i Sing 2 o 22:00' elif domain == 'cinema' and intent == 'request' and slot == 'e-mail': if value== '': self.answer += 'Proszę podać adres e-mail. ' elif domain == 'cinema' and intent == 'request' and slot == 'date': if value== '': self.answer += 'Którego dnia chciałbyś/chciałabyś obejrzeć ten film? ' elif domain == 'cinema' and intent == 'request' and slot == 'name': if value== '': self.answer += 'Proszę podać imię i nazwisko. ' elif domain == 'cinema' and intent == 'request' and slot == 'phone': if value== '': self.answer += 'Proszę podać numer telefonu. ' elif domain == 'cinema' and intent =='request' and slot == 'row': if value in value_dict['train']['seat_row']: self.answer += f'W rzędzie {value} są wolne miejsca od 1 do 4 i od 12 do 15. ' elif value == '': self.answer += f'W jakim rzędzie chciałbyś/chciałabyś zarezerwować miejsce? ' else: self.answer += f'Nie ma wolnych miejsc w rzędzie {value}. ' elif domain == 'cinema' and intent =='request' and slot == 'seat_place': if value in value_dict['train']['seat_place']: self.answer += f'W rzędzie 4 jest wolne miejsce {value}. ' else: self.answer += f'W rzędzie 4 nie ma wolnego miejsca {value}. ' elif domain == 'cinema' and intent =='offer' and slot == 'seat': if value in value_dict['train']['seat']: self.answer += f'Miejsce {value} jest wolne. ' elif value == '': self.answer += 'Sala jest obłożona w 15%. Głównie w rzędach 4, 5 i 6. ' elif domain == 'cinema' and intent =='request' and slot == 'seat': if value in value_dict['train']['seat']: self.answer += f'Miejsce {value} jest wolne. ' elif value == '': self.answer += f'Jakie miejsce chciałbyś/chciałabyś zarezerwować? ' else: self.answer += f'Miejsce {value} nie jest wolne. ' elif domain == 'cinema' and intent == 'inform' and slot == 'Location': self.answer += 'Kino znajduje się na ulicy Jana Pawła 2/40. ' elif domain == 'cinema' and intent == 'inform' and slot == 'cinema_name': self.answer += 'Kino nazywa sie Hellios' elif domain == 'cinema' and intent == 'offer' and slot == 'time': if value in ['15:00','12:00','18:00','18:30','19:00','20:00','20:30','21:00','21:30']: self.answer += f'Dostępny jest seans na godzinę {value}. ' else: self.answer += f'Nie mamy aktualnie seansu na taką godzinę. ' elif domain == 'cinema' and intent == 'request' and slot == 'tickettype': if value == '': self.answer += 'Czy chciałbyś/chciałabyś bilet normalny czy ulgowy? ' elif domain == 'cinema' and intent == 'request' and slot == 'quantity': if value == '': self.answer += 'Ile biletów chciałbyś/chciałabyś zarezerwować? ' elif domain == 'cinema' and intent == 'request' and slot == 'hour': if value == '': self.answer += 'O jakiej godzinie chciałbyś/chciałabyś zobaczyć film? ' elif domain == 'cinema' and intent == 'request' and slot == 'payments': if value == 'online': self.answer += 'Proszę dokonać płatność online. Dziękujemy za skorzystanie z naszych usług. ' else: self.answer += 'Proszę stawić się 30 minut przed seansem aby dokonać płatność. Dziękujemy za skorzystanie z naszych usług. ' self.dst.state['history'].append(f'system\t{self.answer}') return self.answer # nlg = NLG() # print(nlg.update([['cinema', 'offer', 'seat', '']]))