def process(cls, params): service = get_service_by_name(params['service']) if service: params['result'] = service.go(params) or cls.NO_RESPONSE else: params['error'] = '[Executor] Invalid service' params['result'] = cls.NO_RESPONSE
def process(cls, params): # Get the names of potentially relevant services service_names = get_all_service_names() features = params['features'] client = params['client'] request_type = (features['questionType'] if 'questionType' in features else features['actionType']) key = client, request_type if key not in cls._CACHE: service_names = filter( lambda service: get_service_by_name(service) .applies_to_me(*key), service_names) cls._CACHE[key] = service_names else: service_names = cls._CACHE[key] # Pick the service with the highest confidence conf_levels = {service_name: get_service_by_name(service_name) .get_confidence(params) for service_name in service_names} params['confidences'] = conf_levels params['service'] = (max(conf_levels, key=conf_levels.get) if max(conf_levels.itervalues()) > 0 else None)