from modules.nlu import UserAct, Slot from numpy.random.mtrand import random class DialoguePolicy: def __init__(self, dst): self.dialogue_state = dst.state def next_action(self): if not self.dialogue_state['belief_state']['order-complete']: user_intent = self.dialogue_state['act'] if user_intent == "inform": empty_slot = dst.find_first_empty_slot() return UserAct(intent="request", slots=[Slot(name=empty_slot, value='')]) if user_intent == "request": if self.dialogue_state['slot_names']: slot = random.choice(self.state['slot_names']) return UserAct(intent="inform", slots=[Slot(name=slot, value='')]) else: return UserAct(intent="inform", slots=[Slot(name='unknown', value='')]) if user_intent == "bye": return UserAct(intent="bye", slots=[Slot(name='', value='')]) else: return UserAct(intent= "inform", slots=[Slot(name='confirmation', value='Zamówienie złożono poprawnie.')])