def __init__(self, args):
        """
        Initialize the Slot Filling dialogue State internal structures
        :param args:
        """
        super(SlotFillingDialogueState, self).__init__()

        self.slots_filled = {}
        self.slot_queries = {}
        self.system_requestable_slot_entropies = {}

        self.slots = None

        if 'slots' in args:
            self.slots = deepcopy(args['slots'])
        else:
            print('WARNING! SlotFillingDialogueState not provided with slots, '
                  'using default CamRest slots.')
            self.slots = ['area', 'food', 'pricerange']

        self.requested_slot = ''

        self.user_acts = None
        self.system_made_offer = False

        # TODO: Have a list of past items in focus - e.g. current and 2 past
        #  items
        # If the agent is a user, then this structure will store information
        # that the system has provided.
        self.item_in_focus = None
        self.db_result = None

        self.db_matches_ratio = 1.0
        self.last_sys_acts = None
        self.turn = 0
        self.num_dontcare = 0

        # NOTE: This should ONLY be used if an agent plays the role of a user
        self.user_goal = None

        Initialize the Slot Filling dialogue State internal structures
        :param args:
        
plato/dialogue/state.py