class_docstr: How well does our user simulator do at outputting utterances that goes closer to
  satisfying relevant groundinged goals? Does it dump out all of the slots at once or
  is it more intelligent than that?
  
  Since this is the user and we don't know the identity of potential slots, we ignore
  the short (< 4 chars) goal slots since this tends to be things that are substrings
  of other things. (Ex. "2" showing up as # of people in a reservation, but also
  showing up as a phone number.)
docstr: Parse out all the slots as a blob, filtering out for short things.
docstr_tok: ["Parse","out","all","the","slots","as","a","blob",",","filtering","out","for","short","things","."]
code: def handle_goals(
      self, message: Message, goals: List[Dict]
  ) -> Optional[Dict[str, Metric]]:
      """
      Parse out all the slots as a blob, filtering out for short things.
      """
      required_goals = get_req_only_goals(goals, self.api_schemas)
  
      def get_slot_values(goal_list):
          result = set()
          for goal in goal_list:
              for key, value in goal.items():
                  if (
                      key is not STANDARD_API_NAME_SLOT
                      and len(value) > 3
                  ):
                      result.add(value)
          return result
  
      self.all_goal_slot_values = get_slot_values(goals)
      self.all_req_goal_slot_values = get_slot_values(required_goals)
  
imports: from parlai.core.message import Message
  from parlai.core.metrics import Metric, AverageMetric, normalize_answer, BleuMetric, SumMetric
  from parlai.core.tod.tod_core import STANDARD_API_NAME_SLOT, STANDARD_REQUIRED_KEY, STANDARD_OPTIONAL_KEY, STANDARD_API_SCHEMAS
  from typing import Dict, List, Optional, Tuple
  from parlai.core.tod.world_metrics_handlers import TodMetricsHandler, register_metrics_handler, _ApiCallGoalInteractionHelper, goals_hit_helper
label_desc: Use image node_id 2 for calling the UserGoalSlotCoverageMetricHandler obj's underlying member method code with example usage: obj.handle_goals(message, goals) and returns: result