| // |
| // 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. |
| // |
| |
| // 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, |
| BOOL = 2, |
| VARIABLE_AS_LONG = 3, |
| } |
| |
| // 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 entity type as defined by on the TextClassifier ENTITY_TYPE constants |
| // e.g. "address", "phone", etc. |
| entity_type:string; |
| |
| // The template generator lua code, either as text source or precompiled |
| // bytecode. |
| lua_template_generator:[ubyte]; |
| } |
| |
| // Describes how intents for the various entity types should be generated. |
| namespace libtextclassifier3; |
| table IntentFactoryModel { |
| entities:[IntentFactoryModel_.IntentGenerator]; |
| } |
| |