/* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LIBTEXTCLASSIFIER_UTILS_INTENTS_INTENT_GENERATOR_H_ #define LIBTEXTCLASSIFIER_UTILS_INTENTS_INTENT_GENERATOR_H_ #include #include #include #include #include #include "actions/types.h" #include "annotator/types.h" #include "utils/i18n/locale.h" #include "utils/intents/intent-config_generated.h" #include "utils/intents/remote-action-template.h" #include "utils/java/jni-cache.h" #include "utils/resources.h" #include "utils/resources_generated.h" #include "utils/strings/stringpiece.h" #include "flatbuffers/reflection_generated.h" namespace libtextclassifier3 { // Helper class to generate Android intents for text classifier results. class IntentGenerator { public: static std::unique_ptr Create( const IntentFactoryModel* options, const ResourcePool* resources, const std::shared_ptr& jni_cache); // Generates intents for a classification result. // Returns true, if the intent generator snippets could be successfully run, // returns false otherwise. bool GenerateIntents(const jstring device_locales, const ClassificationResult& classification, const int64 reference_time_ms_utc, const std::string& text, const CodepointSpan selection_indices, const jobject context, const reflection::Schema* annotations_entity_data_schema, std::vector* remote_actions) const; // Generates intents for an action suggestion. // Returns true, if the intent generator snippets could be successfully run, // returns false otherwise. bool GenerateIntents(const jstring device_locales, const ActionSuggestion& action, const Conversation& conversation, const jobject context, const reflection::Schema* annotations_entity_data_schema, const reflection::Schema* actions_entity_data_schema, std::vector* remote_actions) const; private: IntentGenerator(const IntentFactoryModel* options, const ResourcePool* resources, const std::shared_ptr& jni_cache) : options_(options), resources_(Resources(resources)), jni_cache_(jni_cache) {} std::vector ParseDeviceLocales(const jstring device_locales) const; const IntentFactoryModel* options_; const Resources resources_; std::shared_ptr jni_cache_; std::map generators_; }; } // namespace libtextclassifier3 #endif // LIBTEXTCLASSIFIER_UTILS_INTENTS_INTENT_GENERATOR_H_