code: def get_availabilities(date):
      
      day_of_week = dateutil.parser.parse(date).weekday()
      availabilities = []
      available_probability = 0.3
      if day_of_week == 0:
          start_hour = 10
          while start_hour <= 16:
              if random.random() < available_probability:
                  # Add an availability window for the given hour, with duration determined by another random number.
                  appointment_type = get_random_int(1, 4)
                  if appointment_type == 1:
                      availabilities.append('{}:00'.format(start_hour))
                  elif appointment_type == 2:
                      availabilities.append('{}:30'.format(start_hour))
                  else:
                      availabilities.append('{}:00'.format(start_hour))
                      availabilities.append('{}:30'.format(start_hour))
              start_hour += 1
  
      if day_of_week == 2 or day_of_week == 4:
          availabilities.append('10:00')
          availabilities.append('16:00')
          availabilities.append('16:30')
  
      return availabilities
docs: Helper function which in a full implementation would  feed into a backend API to provide query schedule availability.
      The output of this function is an array of 30 minute periods of availability, expressed in ISO-8601 time format.
  
      In order to enable quick demonstration of all possible conversation paths supported in this example, the function
      returns a mixture of fixed and randomized results.
  
      On Mondays, availability is randomized; otherwise there is no availability on Tuesday / Thursday and availability at
      10:00 - 10:30 and 4:00 - 5:00 on Wednesday / Friday.