| // Copyright 2020 Google LLC | |
| // | |
| // 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 | |
| // | |
| // https://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. | |
| // | |
| include "buffer.fbs"; | |
| // The type of variable to fetch. | |
| namespace libtextclassifier3; | |
| enum AndroidSimpleIntentGeneratorVariableType : int { | |
| INVALID_VARIABLE = 0, | |
| // The raw text that was classified. | |
| RAW_TEXT = 1, | |
| // Text as a URL with explicit protocol. If no protocol was specified, http | |
| // is prepended. | |
| URL_TEXT = 2, | |
| // The raw text, but URL encoded. | |
| URL_ENCODED_TEXT = 3, | |
| // For dates/times: the instant of the event in UTC millis. | |
| EVENT_TIME_MS_UTC = 4, | |
| // For dates/times: the start of the event in UTC millis. | |
| EVENT_START_MS_UTC = 5, | |
| // For dates/times: the end of the event in UTC millis. | |
| EVENT_END_MS_UTC = 6, | |
| // Name of the package that's running the classifier. | |
| PACKAGE_NAME = 7, | |
| } | |
| // Enumerates the possible extra types for the simple intent generator. | |
| namespace libtextclassifier3; | |
| enum AndroidSimpleIntentGeneratorExtraType : int { | |
| INVALID_EXTRA_TYPE = 0, | |
| STRING = 1, | |
| // Use string_ field. | |
| BOOL = 2, | |
| // Use bool_ field. | |
| VARIABLE_AS_LONG = 3, | |
| // Use int32_ field for the variable index. | |
| } | |
| // Enumerates the possible condition types for the simple intent generator. | |
| namespace libtextclassifier3; | |
| enum AndroidSimpleIntentGeneratorConditionType : int { | |
| INVALID_CONDITION_TYPE = 0, | |
| // Queries the UserManager for the given boolean restriction. The condition | |
| // passes if the result is of getBoolean is false. The name of the | |
| // restriction to check is in the string_ field. | |
| USER_RESTRICTION_NOT_SET = 1, | |
| // Checks that the parsed event start time is at least a give number of | |
| // milliseconds in the future. (Only valid if there is a parsed event | |
| // time) The offset is stored in the int64_ field. | |
| EVENT_START_IN_FUTURE_MS = 2, | |
| } | |
| // Describes how intents for the various entity types should be generated on | |
| // Android. This is distributed through the model, but not used by | |
| // libtextclassifier yet - rather, it's passed to the calling Java code, which | |
| // implements the Intent generation logic. | |
| namespace libtextclassifier3; | |
| table AndroidIntentFactoryOptions { | |
| entity:[AndroidIntentFactoryEntityOptions]; | |
| } | |
| // Describes how intents should be generated for a particular entity type. | |
| namespace libtextclassifier3; | |
| table AndroidIntentFactoryEntityOptions { | |
| // The entity type as defined by one of the TextClassifier ENTITY_TYPE | |
| // constants. (e.g. "address", "phone", etc.) | |
| entity_type:string; | |
| // List of generators for all the different types of intents that should | |
| // be made available for the entity type. | |
| generator:[AndroidIntentGeneratorOptions]; | |
| } | |
| // Configures a single Android Intent generator. | |
| namespace libtextclassifier3; | |
| table AndroidIntentGeneratorOptions { | |
| // Strings for UI elements. | |
| strings:[AndroidIntentGeneratorStrings]; | |
| // Generator specific configuration. | |
| simple:AndroidSimpleIntentGeneratorOptions; | |
| } | |
| // Language dependent configuration for an Android Intent generator. | |
| namespace libtextclassifier3; | |
| table AndroidIntentGeneratorStrings { | |
| // BCP 47 tag for the supported locale. Note that because of API level | |
| // restrictions, this must /not/ use wildcards. To e.g. match all English | |
| // locales, use only "en" and not "en_*". Reference the java.util.Locale | |
| // constructor for details. | |
| language_tag:string; | |
| // Title shown for the action (see RemoteAction.getTitle). | |
| title:string; | |
| // Description shown for the action (see | |
| // RemoteAction.getContentDescription). | |
| description:string; | |
| } | |
| // An extra to set on a simple intent generator Intent. | |
| namespace libtextclassifier3; | |
| table AndroidSimpleIntentGeneratorExtra { | |
| // The name of the extra to set. | |
| name:string; | |
| // The type of the extra to set. | |
| type:AndroidSimpleIntentGeneratorExtraType; | |
| string_:string; | |
| bool_:bool; | |
| int32_:int; | |
| } | |
| // A condition that needs to be fulfilled for an Intent to get generated. | |
| namespace libtextclassifier3; | |
| table AndroidSimpleIntentGeneratorCondition { | |
| type:AndroidSimpleIntentGeneratorConditionType; | |
| string_:string; | |
| int32_:int; | |
| int64_:long; | |
| } | |
| // Configures an intent generator where the logic is simple to be expressed with | |
| // basic rules - which covers the vast majority of use cases and is analogous | |
| // to Android Actions. | |
| // Most strings (action, data, type, ...) may contain variable references. To | |
| // use them, the generator must first declare all the variables it wishes to use | |
| // in the variables field. The values then become available as numbered | |
| // arguments (using the normal java.util.Formatter syntax) in the order they | |
| // were specified. | |
| namespace libtextclassifier3; | |
| table AndroidSimpleIntentGeneratorOptions { | |
| // The action to set on the Intent (see Intent.setAction). Supports variables. | |
| action:string; | |
| // The data to set on the Intent (see Intent.setData). Supports variables. | |
| data:string; | |
| // The type to set on the Intent (see Intent.setType). Supports variables. | |
| type:string; | |
| // The list of all the extras to add to the Intent. | |
| extra:[AndroidSimpleIntentGeneratorExtra]; | |
| // The list of all the variables that become available for substitution in | |
| // the action, data, type and extra strings. To e.g. set a field to the value | |
| // of the first variable, use "%0$s". | |
| variable:[AndroidSimpleIntentGeneratorVariableType]; | |
| // The list of all conditions that need to be fulfilled for Intent generation. | |
| condition:[AndroidSimpleIntentGeneratorCondition]; | |
| } | |
| // Describes how intents should be generated for a particular entity type. | |
| namespace libtextclassifier3.IntentFactoryModel_; | |
| table IntentGenerator { | |
| // The type of the intent generator, e.g. the entity type as defined by | |
| // on the TextClassifier ENTITY_TYPE constants e.g. "address", "phone", etc. | |
| type:string; | |
| // The template generator lua code, either as text source or precompiled | |
| // bytecode. | |
| lua_template_generator:[ubyte]; | |
| compressed_lua_template_generator:CompressedBuffer; | |
| } | |
| // Describes how intents for the various entity types should be generated. | |
| namespace libtextclassifier3; | |
| table IntentFactoryModel { | |
| generator:[IntentFactoryModel_.IntentGenerator]; | |
| // Whether to precompile the generators when loading. | |
| precompile_generators:bool = false; | |
| } | |