| // 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 |
| // |
| // 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. |
| |
| syntax = "proto3"; |
| |
| package google.actions.sdk.v2; |
| |
| import "google/actions/sdk/v2/conversation/intent.proto"; |
| import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto"; |
| import "google/actions/sdk/v2/conversation/prompt/prompt.proto"; |
| import "google/actions/sdk/v2/event_logs.proto"; |
| import "google/api/annotations.proto"; |
| import "google/api/client.proto"; |
| import "google/api/field_behavior.proto"; |
| import "google/protobuf/empty.proto"; |
| import "google/type/latlng.proto"; |
| |
| option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk"; |
| option java_multiple_files = true; |
| option java_outer_classname = "ActionsTestingProto"; |
| option java_package = "com.google.actions.sdk.v2"; |
| |
| // Actions Testing API which allows developers to run automated tests. |
| service ActionsTesting { |
| option (google.api.default_host) = "actions.googleapis.com"; |
| |
| // Plays one round of the conversation. |
| rpc SendInteraction(SendInteractionRequest) returns (SendInteractionResponse) { |
| option (google.api.http) = { |
| post: "/v2/{project=projects/*}:sendInteraction" |
| body: "*" |
| }; |
| } |
| |
| // Finds the intents that match a given query. |
| rpc MatchIntents(MatchIntentsRequest) returns (MatchIntentsResponse) { |
| option (google.api.http) = { |
| post: "/v2/{project=projects/*}:matchIntents" |
| body: "*" |
| }; |
| option (google.api.method_signature) = "project,query,locale"; |
| } |
| |
| // Sets the Web & App Activity control on a service account. |
| // |
| // It is necessary to have this setting enabled in order to use call Actions. |
| // The setting is originally disabled for service accounts, and it is |
| // preserved until set to a different value. This means it only needs to be |
| // enabled once per account (and not necessarily once per test), unless it is |
| // later disabled. |
| // |
| // Returns an error if the caller is not a service account. User accounts can |
| // change this setting via the Activity Controls page. See |
| // https://support.google.com/websearch/answer/54068. |
| rpc SetWebAndAppActivityControl(SetWebAndAppActivityControlRequest) returns (google.protobuf.Empty) { |
| option (google.api.http) = { |
| post: "/v2:setWebAndAppActivityControl" |
| body: "*" |
| }; |
| option (google.api.method_signature) = "enabled"; |
| } |
| } |
| |
| // Request for playing a round of the conversation. |
| message SendInteractionRequest { |
| // Required. The project being tested, indicated by the Project ID. |
| // Format: projects/{project} |
| string project = 1 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Required. Input provided by the user. |
| UserInput input = 2 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Required. Properties of the device used for interacting with the Action. |
| DeviceProperties device_properties = 3 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Opaque token that must be passed as received from SendInteractionResponse |
| // on the previous interaction. This can be left unset in order to start a new |
| // conversation, either as the first interaction of a testing session or to |
| // abandon a previous conversation and start a new one. |
| string conversation_token = 4; |
| } |
| |
| // User input provided on a conversation round. |
| message UserInput { |
| // Indicates the input source, typed query or voice query. |
| enum InputType { |
| // Unspecified input source. |
| INPUT_TYPE_UNSPECIFIED = 0; |
| |
| // Query from a GUI interaction. |
| TOUCH = 1; |
| |
| // Voice query. |
| VOICE = 2; |
| |
| // Typed query. |
| KEYBOARD = 3; |
| |
| // The action was triggered by a URL link. |
| URL = 4; |
| } |
| |
| // Content of the input sent by the user. |
| string query = 1; |
| |
| // Type of the input. |
| InputType type = 2; |
| } |
| |
| // Properties of device relevant to a conversation round. |
| message DeviceProperties { |
| // Possible surfaces used to interact with the Action. |
| // Additional values may be included in the future. |
| enum Surface { |
| // Default value. This value is unused. |
| SURFACE_UNSPECIFIED = 0; |
| |
| // Speaker (e.g. Google Home). |
| SPEAKER = 1; |
| |
| // Phone. |
| PHONE = 2; |
| |
| // Allo Chat. |
| ALLO = 3; |
| |
| // Smart Display Device. |
| SMART_DISPLAY = 4; |
| |
| // KaiOS. |
| KAI_OS = 5; |
| } |
| |
| // Surface used for interacting with the Action. |
| Surface surface = 1; |
| |
| // Device location such as latitude, longitude, and formatted address. |
| Location location = 2; |
| |
| // Locale as set on the device. |
| // The format should follow BCP 47: https://tools.ietf.org/html/bcp47 |
| // Examples: en, en-US, es-419 (more examples at |
| // https://tools.ietf.org/html/bcp47#appendix-A). |
| string locale = 3; |
| |
| // Time zone as set on the device. |
| // The format should follow the IANA Time Zone Database, e.g. |
| // "America/New_York": https://www.iana.org/time-zones |
| string time_zone = 4; |
| } |
| |
| // Container that represents a location. |
| message Location { |
| // Geo coordinates. |
| // Requires the [DEVICE_PRECISE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] permission. |
| google.type.LatLng coordinates = 1; |
| |
| // Display address, e.g., "1600 Amphitheatre Pkwy, Mountain View, CA 94043". |
| // Requires the [DEVICE_PRECISE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] permission. |
| string formatted_address = 2; |
| |
| // Zip code. |
| // Requires the [DEVICE_PRECISE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] or |
| // [DEVICE_COARSE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_COARSE_LOCATION] permission. |
| string zip_code = 3; |
| |
| // City. |
| // Requires the [DEVICE_PRECISE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_PRECISE_LOCATION] or |
| // [DEVICE_COARSE_LOCATION] |
| // [google.actions.v2.Permission.DEVICE_COARSE_LOCATION] permission. |
| string city = 4; |
| } |
| |
| // Response to a round of the conversation. |
| message SendInteractionResponse { |
| // Output provided to the user. |
| Output output = 1; |
| |
| // Diagnostics information that explains how the request was handled. |
| Diagnostics diagnostics = 2; |
| |
| // Opaque token to be set on SendInteractionRequest on the next RPC call in |
| // order to continue the same conversation. |
| string conversation_token = 3; |
| } |
| |
| // User-visible output to the conversation round. |
| message Output { |
| // Spoken response sent to user as a plain string. |
| string text = 1; |
| |
| // Speech content produced by the Action. This may include markup elements |
| // such as SSML. |
| repeated string speech = 2; |
| |
| // Interactive Canvas content. |
| google.actions.sdk.v2.conversation.Canvas canvas = 3; |
| |
| // State of the prompt at the end of the conversation round. |
| // More information about the prompt: |
| // https://developers.google.com/assistant/conversational/prompts |
| google.actions.sdk.v2.conversation.Prompt actions_builder_prompt = 4; |
| } |
| |
| // Diagnostics information related to the conversation round. |
| message Diagnostics { |
| // List of events with details about processing of the conversation round |
| // throughout the stages of the Actions Builder interaction model. |
| // Populated for Actions Builder & Actions SDK apps only. |
| repeated ExecutionEvent actions_builder_events = 1; |
| } |
| |
| // Request for finding matching intents. |
| message MatchIntentsRequest { |
| // Required. The project being tested, indicated by the Project ID. |
| // Format: projects/{project} |
| string project = 1 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Required. User query as plain text. |
| string query = 2 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Required. Locale to use to evaluate the query, such as "en". |
| // The format should follow BCP 47: https://tools.ietf.org/html/bcp47 |
| // See the list of supported languages in |
| // https://developers.google.com/assistant/console/languages-locales |
| string locale = 3 [(google.api.field_behavior) = REQUIRED]; |
| } |
| |
| // Response for finding matching intents. |
| message MatchIntentsResponse { |
| // Intents matched, ordered from most to least relevant. Only the first |
| // 50 matches are returned. |
| repeated google.actions.sdk.v2.conversation.Intent matched_intents = 1; |
| } |
| |
| // Request for setting Web & App Activity preferences. |
| message SetWebAndAppActivityControlRequest { |
| // Whether the setting should be set to an enabled or disabled state. |
| bool enabled = 1; |
| } |