feat: Initial client generation for Actions API

PiperOrigin-RevId: 341932229
This commit is contained in:
Google APIs 2020-11-11 16:19:10 -08:00 committed by Copybara-Service
parent b7038c181d
commit 063e39ee72
68 changed files with 4440 additions and 0 deletions

View File

@ -0,0 +1,103 @@
# This file was automatically generated by BuildFileGenerator
# https://github.com/googleapis/gapic-generator/tree/master/rules_gapic/bazel
# Most of the manual changes to this file will be overwritten.
# It's **only** allowed to change the following rule attribute values:
# - names of *_gapic_assembly_* rules
# - certain parameters of *_gapic_library rules, including but not limited to:
# * extra_protoc_parameters
# * extra_protoc_file_parameters
# The complete list of preserved parameters can be found in the source code.
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
proto_library(
name = "sdk_proto",
srcs = [
"account_linking.proto",
"account_linking_secret.proto",
"action.proto",
"actions_sdk.proto",
"actions_testing.proto",
"config_file.proto",
"data_file.proto",
"event_logs.proto",
"files.proto",
"localized_settings.proto",
"manifest.proto",
"settings.proto",
"surface.proto",
"theme_customization.proto",
"validation_results.proto",
"webhook.proto",
],
deps = [
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"//google/actions/sdk/v2/conversation:conversation_proto",
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
"//google/actions/sdk/v2/interactionmodel:interactionmodel_proto",
"//google/api:annotations_proto",
"//google/api:client_proto",
"//google/api:field_behavior_proto",
"//google/api:resource_proto",
"//google/rpc:status_proto",
"//google/type:latlng_proto",
"@com_google_protobuf//:empty_proto",
"@com_google_protobuf//:struct_proto",
"@com_google_protobuf//:timestamp_proto",
"@com_google_protobuf//:wrappers_proto",
],
)
proto_library_with_info(
name = "sdk_proto_with_info",
deps = [
":sdk_proto",
"//google/cloud:common_resources_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)
nodejs_gapic_library(
name = "sdk_nodejs_gapic",
src = ":sdk_proto_with_info",
grpc_service_config = "actions_grpc_service_config.json",
package = "google.actions.sdk.v2",
package_name = "@assistant/actions",
service_yaml = "actions_v2.yaml",
deps = [],
)
nodejs_gapic_assembly_pkg(
name = "actions-v2-nodejs",
deps = [
":sdk_nodejs_gapic",
":sdk_proto",
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"//google/actions/sdk/v2/conversation:conversation_proto",
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
"//google/actions/sdk/v2/interactionmodel:interactionmodel_proto",
],
)

View File

@ -0,0 +1,126 @@
// 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/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "AccountLinkingProto";
option java_package = "com.google.actions.sdk.v2";
// AccountLinking allows Google to guide the user to sign-in to the App's web
// services.
//
// For Google Sign In and OAuth + Google Sign In linking types, Google generates
// a client ID identifying your App to Google ("Client ID issued by Google to
// your Actions" on Console UI). This field is read-only and can be checked by
// navigating to the Console UI's Account Linking page.
// See: https://developers.google.com/assistant/identity/google-sign-in
//
// Note: For all account linking setting types (except for Google Sign In), you
// must provide a username and password for a test account in
// Settings.testing_instructions for the review team to review the app (they
// will not be visible to users).
message AccountLinking {
// The type of Account Linking to perform.
enum LinkingType {
// Unspecified.
LINKING_TYPE_UNSPECIFIED = 0;
// Google Sign In linking type.
// If using this linking type, no OAuth-related fields need to be set below.
GOOGLE_SIGN_IN = 1;
// OAuth and Google Sign In linking type.
OAUTH_AND_GOOGLE_SIGN_IN = 2;
// OAuth linking type.
OAUTH = 3;
}
// The OAuth2 grant type Google uses to guide the user to sign in to your
// App's web service.
enum AuthGrantType {
// Unspecified.
AUTH_GRANT_TYPE_UNSPECIFIED = 0;
// Authorization code grant. Requires you to provide both
// authentication URL and access token URL.
AUTH_CODE = 1;
// Implicit code grant. Only requires you to provide authentication
// URL.
IMPLICIT = 2;
}
// Required. If `true`, users are allowed to sign up for new accounts via voice.
// If `false`, account creation is only allowed on your website. Select this
// option if you want to display your terms of service or obtain user consents
// during sign-up.
// linking_type cannot be GOOGLE_SIGN_IN when this is `false`.
// linking_type cannot be OAUTH when this is `true`.
bool enable_account_creation = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The linking type to use.
// See https://developers.google.com/assistant/identity for further details on
// the linking types.
LinkingType linking_type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates the type of authentication for OAUTH linking_type.
AuthGrantType auth_grant_type = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Client ID issued by your App to Google.
// This is the OAuth2 Client ID identifying Google to your service.
// Only set when using OAuth.
string app_client_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Endpoint for your sign-in web page that supports OAuth2 code or
// implicit flows.
// URL must use HTTPS.
// Only set when using OAuth.
string authorization_url = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. OAuth2 endpoint for token exchange.
// URL must use HTTPS.
// This is not set when only using OAuth with IMPLICIT grant as the
// linking type.
// Only set when using OAuth.
string token_url = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. List of permissions the user must consent to in order to use
// your service.
// Only set when using OAuth.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
repeated string scopes = 7 [(google.api.field_behavior) = OPTIONAL];
// Optional. This is the web page on your service which describes the
// permissions the user is granting to Google.
// Only set if using OAuth and Google Sign In.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
string learn_more_url = 8 [(google.api.field_behavior) = OPTIONAL];
// Optional. If true, allow Google to transmit client ID and secret via HTTP
// basic auth header. Otherwise, Google uses the client ID and secret inside
// the post body.
// Only set when using OAuth.
// Make sure to provide a Terms of Service in the directory information in
// LocalizedSettings.terms_of_service_url section if specifying this field.
bool use_basic_auth_header = 9 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,35 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "AccountLinkingSecretProto";
option java_package = "com.google.actions.sdk.v2";
// Information about the encrypted OAuth client secret used in account linking
// flows (for AUTH_CODE grant type).
message AccountLinkingSecret {
// Encrypted account linking client secret ciphertext.
bytes encrypted_client_secret = 1;
// The version of the crypto key used to encrypt the account linking client
// secret.
// Note that this field is ignored in push, preview, and version creation
// flows.
string encryption_key_version = 2;
}

View File

@ -0,0 +1,103 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ActionProto";
option java_package = "com.google.actions.sdk.v2";
// Represents the list of Actions defined in a project.
message Actions {
// Defines the engagement mechanisms associated with this action. This
// allows end users to subscribe to push notification and daily update.
message Engagement {
// Defines push notification settings that this engagement supports.
message PushNotification {
}
// Defines daily update settings that this engagement supports.
message DailyUpdate {
}
// Indicates whether sharing links is enabled for this action and the
// corresponding settings. Action links are used to deep link a user into a
// specific action.
// ActionLink is deprecated. Use AssistantLink instead.
message ActionLink {
option deprecated = true;
// User friendly display title for the link.
string title = 1;
}
// Indicates whether sharing links is enabled for this action and the
// corresponding settings. Assistant links are used to deep link a user into
// a specific action.
message AssistantLink {
// User friendly display title for the link.
string title = 1;
}
// The title of the engagement that will be sent to end users asking for
// their permission to receive updates. The prompt sent to end users for
// daily updates will look like "What time would you like me to send your
// daily {title}" and for push notifications will look like
// "Is it ok if I send push notifications for {title}".
// **This field is localizable.**
string title = 1;
// Push notification settings that this engagement supports.
PushNotification push_notification = 2;
// Recurring update settings that this engagement supports.
oneof recurring_update {
// Daily update settings that this engagement supports.
DailyUpdate daily_update = 3;
}
// Link config for an action which determines whether sharing links is
// enabled for the action and if so, contains the user friendly display name
// for the link.
// ActionLink is deprecated. Use AssistantLink instead.
ActionLink action_link = 4 [deprecated = true];
// Link config for an action which determines whether sharing links is
// enabled for the action and if so, contains the user friendly display name
// for the link.
AssistantLink assistant_link = 6;
}
// Details regarding a custom action.
message CustomAction {
// Engagement mechanisms associated with the action to help end users
// subscribe to push notifications and daily updates.
// Note that the intent name specified in daily updates/push notifications
// slot config needs to match the intent corresponding to this action for
// end users to subscribe to these updates.
Engagement engagement = 2;
}
// Map from intents to custom Actions to configure invocation for the project.
// The invocation intents could either be system or custom intents defined
// in the "custom/intents/" package. All intents defined here (system
// intents & custom intents) must have a corresponding intent file in the
// "custom/global/" package.
map<string, CustomAction> custom = 3;
}

View File

@ -0,0 +1,6 @@
type: com.google.api.codegen.ConfigProto
config_schema_version: 2.0.0
language_settings:
nodejs:
package_name: actions.sdk.v2
domain_layer_location: assistant

View File

@ -0,0 +1,16 @@
{
"methodConfig": [{
"name": [{ "service": "google.actions.sdk.v2.ActionsSdk" }],
"timeout": "60s"
},
{
"name": [
{ "service": "google.actions.sdk.v2.ActionsSdk", "method": "WritePreview" }
],
"timeout": "180s"
},
{
"name": [{ "service": "google.actions.sdk.v2.ActionsTesting" }],
"timeout": "60s"
}]
}

View File

@ -0,0 +1,118 @@
// 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/account_linking_secret.proto";
import "google/actions/sdk/v2/files.proto";
import "google/actions/sdk/v2/validation_results.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/wrappers.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ActionsSdkProto";
option java_package = "com.google.actions.sdk.v2";
// Actions SDK API which allows developers to build projects using the SDK.
service ActionsSdk {
option (google.api.default_host) = "actions.googleapis.com";
// Updates the user's project preview based on the model.
rpc WritePreview(stream WritePreviewRequest) returns (Preview) {
option (google.api.http) = {
post: "/v2/{parent=projects/*}/preview:write"
body: "*"
};
}
}
// Streaming RPC request for WritePreview.
message WritePreviewRequest {
// Indicates the preview content will be coming from the Draft.
message ContentFromDraft {
}
// Indicates the preview content will be coming from an exiting version.
message ContentFromSubmittedVersion {
// Required. Submitted version of the project to be used to create a preview.
// Format: `projects/{project}/versions/{version}`
string version = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "actions.googleapis.com/Version"
}
];
}
// Settings for updating the preview.
message PreviewSettings {
// Indicates whether or not to run certain operations, such as transactions,
// in sandbox mode. By default, preview requests run these operations in
// sandbox mode. In other words, the default value for `sandbox` is `true`.
google.protobuf.BoolValue sandbox = 1;
}
// Required. The parent resource name in the format `projects/{project}`. The
// `{project}` is the cloud project ID associated with the project.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "actions.googleapis.com/Preview"
}
];
// Data source used to created the preview.
oneof source {
// List of files sent to the server at a time. This is a list of config
// files or data files.
// 1. The first request must be a ConfigFiles.
// 2. The first request must have a ConfigFile with 'settings'.
// 3. The first request must have a ConfigFile with 'manifest'.
Files files = 5;
// Content sourced from the project draft.
ContentFromDraft draft = 6;
// Content sourced from the an exiting version.
ContentFromSubmittedVersion submitted_version = 7;
}
// Required. The settings for updating the user's preview.
PreviewSettings preview_settings = 4 [(google.api.field_behavior) = REQUIRED];
}
// Definition of preview resource.
message Preview {
option (google.api.resource) = {
type: "actions.googleapis.com/Preview"
pattern: "projects/{project}/previews/{preview}"
};
// The unique identifier of the preview.
// Format: `projects/{project}/preview`
string name = 1;
// Validation results associated with the user project preview content.
ValidationResults validation_results = 2;
// The simulator URL to test the user preview.
string simulator_url = 3;
}

View File

@ -0,0 +1,256 @@
// 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;
}

View File

@ -0,0 +1,11 @@
type: google.api.Service
config_version: 3
name: actions.googleapis.com
title: Actions API
apis:
- name: google.actions.sdk.v2.ActionsSdk
- name: google.actions.sdk.v2.ActionsTesting
documentation:
summary: A RESTful service for the Actions API.

View File

@ -0,0 +1,107 @@
// 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/account_linking_secret.proto";
import "google/actions/sdk/v2/action.proto";
import "google/actions/sdk/v2/interactionmodel/global_intent_event.proto";
import "google/actions/sdk/v2/interactionmodel/intent.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/static_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/scene.proto";
import "google/actions/sdk/v2/interactionmodel/type/type.proto";
import "google/actions/sdk/v2/manifest.proto";
import "google/actions/sdk/v2/settings.proto";
import "google/actions/sdk/v2/webhook.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ConfigFileProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated config files. Repeated fields cannot exist in a oneof.
message ConfigFiles {
// Multiple config files.
repeated ConfigFile config_files = 1;
}
// Represents a single file which contains structured data. Developers can
// define most of their project using structured config including Actions,
// Settings, Fulfillment.
message ConfigFile {
// Relative path of the config file from the project root in the SDK file
// structure. Each file types below have an allowed file path.
// Eg: settings/settings.yaml
string file_path = 1;
// Each type of config file should have a corresponding field in the oneof.
oneof file {
// Single manifest file.
// Allowed file path: `manifest.yaml`
Manifest manifest = 2;
// Single actions file with all the actions defined.
// Allowed file paths: `actions/{language}?/actions.yaml`
Actions actions = 3;
// Single settings config which includes non-localizable settings and
// settings for the project's default locale (if specified).
// For a locale override file, only localized_settings field will be
// populated.
// Allowed file paths: `settings/{language}?/settings.yaml`
// Note that the non-localized settings file `settings/settings.yaml` must
// be present in the write flow requests.
Settings settings = 4;
// Single webhook definition.
// Allowed file path: `webhooks/{WebhookName}.yaml`
Webhook webhook = 6;
// Single intent definition.
// Allowed file paths: `custom/intents/{language}?/{IntentName}.yaml`
google.actions.sdk.v2.interactionmodel.Intent intent = 7;
// Single type definition.
// Allowed file paths: `custom/types/{language}?/{TypeName}.yaml`
google.actions.sdk.v2.interactionmodel.type.Type type = 8;
// Single global intent event definition.
// Allowed file paths: `custom/global/{GlobalIntentEventName}.yaml`
// The file name (GlobalIntentEventName) should be the name of the intent
// that this global intent event corresponds to.
google.actions.sdk.v2.interactionmodel.GlobalIntentEvent global_intent_event = 9;
// Single scene definition.
// Allowed file paths: `custom/scenes/{SceneName}.yaml`
google.actions.sdk.v2.interactionmodel.Scene scene = 10;
// Single static prompt definition.
// Allowed file paths: `custom/prompts/{language}?/{StaticPromptName}.yaml`
google.actions.sdk.v2.interactionmodel.prompt.StaticPrompt static_prompt = 11;
// Metadata corresponding to the client secret used in account linking.
// Allowed file path: `settings/accountLinkingSecret.yaml`
AccountLinkingSecret account_linking_secret = 13;
// Single resource bundle, which is a map from a string to a string or list
// of strings. Resource bundles could be used for localizing strings in
// static prompts.
// Allowed file paths: `resources/strings/{language}?/{multiple
// directories}?/{BundleName}.yaml`
google.protobuf.Struct resource_bundle = 12;
}
}

View File

@ -0,0 +1,30 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "conversation_proto",
srcs = [
"intent.proto",
"scene.proto",
],
deps = [
"//google/actions/sdk/v2/conversation/prompt:prompt_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,52 @@
// 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.conversation;
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "IntentProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents an intent.
message Intent {
// Required. The name of the last matched intent.
string name = 1;
// Required. Represents parameters identified as part of intent matching.
// This is a map of the name of the identified parameter to the value of the
// parameter identified from user input. All parameters defined in
// the matched intent that are identified will be surfaced here.
map<string, IntentParameterValue> params = 2;
// Optional. Typed or spoken input from the end user that matched this intent.
// This will be populated when an intent is matched, based on the user input.
string query = 3;
}
// Represents a value for intent parameter.
message IntentParameterValue {
// Required. Original text value extracted from user utterance.
string original = 1;
// Required. Structured value for parameter extracted from user input.
// This will only be populated if the parameter is defined in the matched
// intent and the value of the parameter could be identified during intent
// matching.
google.protobuf.Value resolved = 2;
}

View File

@ -0,0 +1,30 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "prompt_proto",
srcs = [
"prompt.proto",
"simple.proto",
"suggestion.proto",
],
deps = [
"//google/actions/sdk/v2/conversation/prompt/content:content_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,37 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "content_proto",
srcs = [
"canvas.proto",
"card.proto",
"collection.proto",
"content.proto",
"image.proto",
"link.proto",
"list.proto",
"media.proto",
"table.proto",
],
deps = [
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,44 @@
// 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.conversation;
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CanvasProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents an Interactive Canvas response to be sent to the user.
// This can be used in conjunction with the "first_simple" field in the
// containing prompt to speak to the user in addition to displaying a
// interactive canvas response. The maximum size of the response is 50k bytes.
message Canvas {
// URL of the interactive canvas web app to load. If not set, the url from
// current active canvas will be reused.
string url = 1;
// Optional. JSON data to be passed through to the immersive experience
// web page as an event.
// If the "override" field in the containing prompt is "false" data values
// defined in this Canvas prompt will be added after data values defined in
// previous Canvas prompts.
repeated google.protobuf.Value data = 4;
// Optional. Default value: false.
bool suppress_mic = 3;
}

View File

@ -0,0 +1,51 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CardProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A basic card for displaying some information, e.g. an image and/or text.
message Card {
// Overall title of the card.
// Optional.
string title = 1;
// Optional.
string subtitle = 2;
// Body text of the card.
// Supports a limited set of markdown syntax for formatting.
// Required, unless image is present.
string text = 3;
// A hero image for the card. The height is fixed to 192dp.
// Optional.
Image image = 4;
// How the image background will be filled. Optional.
Image.ImageFill image_fill = 5;
// Button.
// Optional.
Link button = 6;
}

View File

@ -0,0 +1,46 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "CollectionProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A card for presenting a collection of options to select from.
message Collection {
// An item in the collection
message CollectionItem {
// Required. The NLU key that matches the entry key name in the associated
// Type.
string key = 1;
}
// Title of the collection. Optional.
string title = 1;
// Subtitle of the collection. Optional.
string subtitle = 2;
// min: 2 max: 10
repeated CollectionItem items = 3;
// How the image backgrounds of collection items will be filled. Optional.
Image.ImageFill image_fill = 4;
}

View File

@ -0,0 +1,57 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto";
import "google/actions/sdk/v2/conversation/prompt/content/card.proto";
import "google/actions/sdk/v2/conversation/prompt/content/collection.proto";
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/list.proto";
import "google/actions/sdk/v2/conversation/prompt/content/media.proto";
import "google/actions/sdk/v2/conversation/prompt/content/table.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ContentProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Content to be shown.
message Content {
// Content.
oneof content {
// A basic card.
Card card = 1;
// An image.
Image image = 2;
// Table card.
Table table = 3;
// Response indicating a set of media to be played.
Media media = 4;
// A response to be used for interactive canvas experience.
Canvas canvas = 5 [deprecated = true];
// A card presenting a collection of options to select from.
Collection collection = 6;
// A card presenting a list of options to select from.
List list = 7;
}
}

View File

@ -0,0 +1,64 @@
// 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.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ImageProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// An image displayed in the card.
message Image {
// Possible image display options for affecting the presentation of the image.
// This should be used for when the image's aspect ratio does not match the
// image container's aspect ratio.
enum ImageFill {
// Unspecified image fill.
UNSPECIFIED = 0;
// Fill the gaps between the image and the image container with gray bars.
GRAY = 1;
// Fill the gaps between the image and the image container with white bars.
WHITE = 2;
// Image is scaled such that the image width and height match or exceed the
// container dimensions. This may crop the top and bottom of the image if
// the scaled image height is greater than the container height, or crop the
// left and right of the image if the scaled image width is greater than the
// container width. This is similar to "Zoom Mode" on a widescreen TV when
// playing a 4:3 video.
CROPPED = 3;
}
// The source url of the image. Images can be JPG, PNG and GIF (animated and
// non-animated). For example,`https://www.agentx.com/logo.png`. Required.
string url = 1;
// A text description of the image to be used for accessibility, e.g. screen
// readers.
// Required.
string alt = 2;
// The height of the image in pixels.
// Optional.
int32 height = 3;
// The width of the image in pixels.
// Optional.
int32 width = 4;
}

View File

@ -0,0 +1,51 @@
// 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.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "LinkProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Link content.
message Link {
// Name of the link
string name = 1;
// What happens when a user opens the link
OpenUrl open = 2;
}
// Action taken when a user opens a link.
message OpenUrl {
// The url field which could be any of:
// - http/https urls for opening an App-linked App or a webpage
string url = 1;
// Indicates a hint for the url type.
UrlHint hint = 2;
}
// Different types of url hints.
enum UrlHint {
// Unspecified
LINK_UNSPECIFIED = 0;
// URL that points directly to AMP content, or to a canonical URL
// which refers to AMP content via <link rel="amphtml">.
AMP = 1;
}

View File

@ -0,0 +1,41 @@
// 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.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "ListProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A card for presenting a list of options to select from.
message List {
// An item in the list
message ListItem {
// Required. The NLU key that matches the entry key name in the associated
// Type.
string key = 1;
}
// Title of the list. Optional.
string title = 1;
// Subtitle of the list. Optional.
string subtitle = 2;
// min: 2 max: 30
repeated ListItem items = 3;
}

View File

@ -0,0 +1,97 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "MediaProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents one media object.
// Contains information about the media, such as name, description, url, etc.
message Media {
// Media type of this response.
enum MediaType {
// Unspecified media type.
MEDIA_TYPE_UNSPECIFIED = 0;
// Audio file.
AUDIO = 1;
// Response to acknowledge a media status report.
MEDIA_STATUS_ACK = 2;
}
// Optional media control types the media response can support
enum OptionalMediaControls {
// Unspecified value
OPTIONAL_MEDIA_CONTROLS_UNSPECIFIED = 0;
// Paused event. Triggered when user pauses the media.
PAUSED = 1;
// Stopped event. Triggered when user exits out of 3p session during media
// play.
STOPPED = 2;
}
// Media type.
MediaType media_type = 8;
// Start offset of the first media object.
google.protobuf.Duration start_offset = 5;
// Optional media control types this media response session can support.
// If set, request will be made to 3p when a certain media event happens.
// If not set, 3p must still handle two default control type, FINISHED and
// FAILED.
repeated OptionalMediaControls optional_media_controls = 6;
// List of Media Objects
repeated MediaObject media_objects = 7;
}
// Represents a single media object
message MediaObject {
// Name of this media object.
string name = 1;
// Description of this media object.
string description = 2;
// The url pointing to the media content.
string url = 3;
// Image to show with the media card.
MediaImage image = 4;
}
// Image to show with the media card.
message MediaImage {
// Image.
oneof image {
// A large image, such as the cover of the album, etc.
Image large = 1;
// A small image icon displayed on the right from the title.
// It's resized to 36x36 dp.
Image icon = 2;
}
}

View File

@ -0,0 +1,92 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/image.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "TableProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// A table card for displaying a table of text.
message Table {
// Overall title of the table. Optional but must be set if subtitle is set.
string title = 1;
// Subtitle for the table. Optional.
string subtitle = 2;
// Image associated with the table. Optional.
Image image = 4;
// Headers and alignment of columns.
repeated TableColumn columns = 5;
// Row data of the table. The first 3 rows are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator to
// see which rows will be shown for a given surface. On surfaces that support
// the WEB_BROWSER capability, you can point the user to
// a web page with more data.
repeated TableRow rows = 6;
// Button.
Link button = 7;
}
// Describes a column in a table.
message TableColumn {
// The alignment of the content within the cell.
enum HorizontalAlignment {
// Unspecified horizontal alignment.
UNSPECIFIED = 0;
// Leading edge of the cell. This is the default.
LEADING = 1;
// Content is aligned to the center of the column.
CENTER = 2;
// Content is aligned to the trailing edge of the column.
TRAILING = 3;
}
// Header text for the column.
string header = 1;
// Horizontal alignment of content w.r.t column. If unspecified, content
// will be aligned to the leading edge.
HorizontalAlignment align = 2;
}
// Describes a cell in a row.
message TableCell {
// Text content of the cell.
string text = 1;
}
// Describes a row in the table.
message TableRow {
// Cells in this row. The first 3 cells are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator
// to see which cells will be shown for a given surface.
repeated TableCell cells = 1;
// Indicates whether there should be a divider after each row.
bool divider = 2;
}

View File

@ -0,0 +1,81 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/content/canvas.proto";
import "google/actions/sdk/v2/conversation/prompt/content/content.proto";
import "google/actions/sdk/v2/conversation/prompt/content/link.proto";
import "google/actions/sdk/v2/conversation/prompt/simple.proto";
import "google/actions/sdk/v2/conversation/prompt/suggestion.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "PromptProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represent a response to a user.
message Prompt {
// Optional. Mode for how this messages should be merged with previously
// defined messages.
// "false" will clear all previously defined messages (first and last
// simple, content, suggestions link and canvas) and add messages defined in
// this prompt.
// "true" will add messages defined in this prompt to messages defined in
// previous responses. Setting this field to "true" will also enable appending
// to some fields inside Simple prompts, the Suggestion prompt and the Canvas
// prompt (part of the Content prompt). The Content and Link messages will
// always be overwritten if defined in the prompt.
// Default value is "false".
bool append = 1 [deprecated = true];
// Optional. Mode for how this messages should be merged with previously
// defined messages.
// "true" clears all previously defined messages (first and last
// simple, content, suggestions link and canvas) and adds messages defined in
// this prompt.
// "false" adds messages defined in this prompt to messages defined in
// previous responses. Leaving this field to "false" also enables
// appending to some fields inside Simple prompts, the Suggestions prompt,
// and the Canvas prompt (part of the Content prompt). The Content and Link
// messages are always overwritten if defined in the prompt. Default
// value is "false".
bool override = 8;
// Optional. The first voice and text-only response.
Simple first_simple = 2;
// Optional. A content like a card, list or media to display to the user.
Content content = 3;
// Optional. The last voice and text-only response.
Simple last_simple = 4;
// Optional. Suggestions to be displayed to the user which will always appear
// at the end of the response.
// If the "override" field in the containing prompt is "false", the titles
// defined in this field will be added to titles defined in any previously
// defined suggestions prompts and duplicate values will be removed.
repeated Suggestion suggestions = 5;
// Optional. An additional suggestion chip that can link out to the associated app
// or site.
// The chip will be rendered with the title "Open <name>". Max 20 chars.
Link link = 6;
// Optional. Represents a Interactive Canvas response to be sent to the user.
Canvas canvas = 9;
}

View File

@ -0,0 +1,38 @@
// 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.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SimpleProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents a simple prompt to be send to a user.
message Simple {
// Optional. Represents the speech to be spoken to the user. Can be SSML or
// text to speech.
// If the "override" field in the containing prompt is "true", the speech
// defined in this field replaces the previous Simple prompt's speech.
string speech = 1;
// Optional text to display in the chat bubble. If not given, a display
// rendering of the speech field above will be used. Limited to 640
// chars.
// If the "override" field in the containing prompt is "true", the text
// defined in this field replaces to the previous Simple prompt's text.
string text = 2;
}

View File

@ -0,0 +1,31 @@
// 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.conversation;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SuggestionProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Input suggestion to be presented to the user.
message Suggestion {
// Required. The text shown in the suggestion chip. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of suggestion chips.
// Max 25 chars
string title = 1;
}

View File

@ -0,0 +1,92 @@
// 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.conversation;
import "google/actions/sdk/v2/conversation/prompt/prompt.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/conversation;conversation";
option java_multiple_files = true;
option java_outer_classname = "SceneProto";
option java_package = "com.google.actions.sdk.v2.conversation";
// Represents the current status of slot filling.
enum SlotFillingStatus {
// Fallback value when the usage field is not populated.
UNSPECIFIED = 0;
// The slots have been initialized but slot filling has not started.
INITIALIZED = 1;
// The slot values are being collected.
COLLECTING = 2;
// All slot values are final and cannot be changed.
FINAL = 4;
}
// Represents a slot.
message Slot {
// Represents the mode of a slot, that is, if it is required or not.
enum SlotMode {
// Fallback value when the usage field is not populated.
MODE_UNSPECIFIED = 0;
// Indicates that the slot is not required to complete slot filling.
OPTIONAL = 1;
// Indicates that the slot is required to complete slot filling.
REQUIRED = 2;
}
// Represents the status of a slot.
enum SlotStatus {
// Fallback value when the usage field is not populated.
SLOT_UNSPECIFIED = 0;
// Indicates that the slot does not have any values. This status cannot be
// modified through the response.
EMPTY = 1;
// Indicates that the slot value is invalid. This status can be set
// through the response.
INVALID = 2;
// Indicates that the slot has a value. This status cannot be modified
// through the response.
FILLED = 3;
}
// The mode of the slot (required or optional). Can be set by developer.
SlotMode mode = 1;
// The status of the slot.
SlotStatus status = 2;
// The value of the slot. Changing this value in the response, will
// modify the value in slot filling.
google.protobuf.Value value = 3;
// Indicates if the slot value was collected on the last turn.
// This field is read-only.
bool updated = 4;
// Optional. This prompt is sent to the user when needed to fill a required
// slot. This prompt overrides the existing prompt defined in the console.
// This field is not included in the webhook request.
Prompt prompt = 5;
}

View File

@ -0,0 +1,59 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "DataFileProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated data file. Repeated fields cannot exist in a oneof.
message DataFiles {
// Multiple data files.
repeated DataFile data_files = 1;
}
// Represents a single file which contains unstructured data. Examples include
// image files, audio files, and cloud function source code.
message DataFile {
// Relative path of the data file from the project root in the SDK file
// structure.
// Allowed file paths:
// - Images: `resources/images/{multiple
// directories}?/{ImageName}.{extension}`
// - Audio: `resources/audio/{multiple
// directories}?/{AudioFileName}.{extension}`
// - Inline Cloud Function Code: `webhooks/{WebhookName}.zip`
// Allowed extensions:
// - Images: `png`, `jpg`, `jpeg`
// - Audio: `mp3`, `mpeg`
// - Inline Cloud Functions: `zip`
string file_path = 1;
// Required. The content type of this asset. Example: `text/html`. The content
// type must comply with the specification
// (http://www.w3.org/Protocols/rfc1341/4_Content-Type.html).
// Cloud functions must be in zip format and the content type should
// be `application/zip;zip_type=cloud_function`. The zip_type parameter
// indicates that the zip is for a cloud function.
string content_type = 2;
// Content of the data file. Examples would be raw bytes of images, audio
// files, or cloud function zip format.
// There is 10 MB strict limit on the payload size.
bytes payload = 3;
}

View File

@ -0,0 +1,246 @@
// 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/prompt.proto";
import "google/actions/sdk/v2/conversation/scene.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "EventLogsProto";
option java_package = "com.google.actions.sdk.v2";
// Contains information about execution event which happened during processing
// Actions Builder conversation request. For an overview of the stages involved
// in a conversation request, see
// https://developers.google.com/assistant/conversational/actions.
message ExecutionEvent {
// Timestamp when the event happened.
google.protobuf.Timestamp event_time = 1;
// State of the execution during this event.
ExecutionState execution_state = 2;
// Resulting status of particular execution step.
google.rpc.Status status = 3;
// Detailed information specific to different of events that may be involved
// in processing a conversation round. The field set here defines the type of
// this event.
oneof EventData {
// User input handling event.
UserConversationInput user_input = 4;
// Intent matching event.
IntentMatch intent_match = 5;
// Condition evaluation event.
ConditionsEvaluated conditions_evaluated = 6;
// OnSceneEnter execution event.
OnSceneEnter on_scene_enter = 7;
// Webhook request dispatch event.
WebhookRequest webhook_request = 8;
// Webhook response receipt event.
WebhookResponse webhook_response = 9;
// Webhook-initiated transition event.
WebhookInitiatedTransition webhook_initiated_transition = 10;
// Slot matching event.
SlotMatch slot_match = 11;
// Slot requesting event.
SlotRequested slot_requested = 12;
// Slot validation event.
SlotValidated slot_validated = 13;
// Form filling event.
FormFilled form_filled = 14;
// Waiting-for-user-input event.
WaitingForUserInput waiting_user_input = 15;
// End-of-conversation event.
EndConversation end_conversation = 16;
}
// List of warnings generated during execution of this Event. Warnings are
// tips for the developer discovered during the conversation request. These
// are usually non-critical and do not halt the execution of the request. For
// example, a warnings might be generated when webhook tries to override a
// custom Type which does not exist. Errors are reported as a failed status
// code, but warnings can be present even when the status is OK.
repeated string warning_messages = 17;
}
// Current state of the execution.
message ExecutionState {
// ID of the scene which is currently active.
string current_scene_id = 1;
// State of the session storage:
// https://developers.google.com/assistant/conversational/storage-session
google.protobuf.Struct session_storage = 2;
// State of the slots filling, if applicable:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
Slots slots = 5;
// Prompt queue:
// https://developers.google.com/assistant/conversational/prompts
repeated google.actions.sdk.v2.conversation.Prompt prompt_queue = 7;
// State of the user storage:
// https://developers.google.com/assistant/conversational/storage-user
google.protobuf.Struct user_storage = 6;
// State of the home storage:
// https://developers.google.com/assistant/conversational/storage-home
google.protobuf.Struct household_storage = 8;
}
// Represents the current state of a the scene's slots.
message Slots {
// The current status of slot filling.
google.actions.sdk.v2.conversation.SlotFillingStatus status = 2;
// The slots associated with the current scene.
map<string, google.actions.sdk.v2.conversation.Slot> slots = 3;
}
// Information related to user input.
message UserConversationInput {
// Type of user input. E.g. keyboard, voice, touch, etc.
string type = 1;
// Original text input from the user.
string original_query = 2;
}
// Information about triggered intent match (global or within a scene):
// https://developers.google.com/assistant/conversational/intents
message IntentMatch {
// Intent id which triggered this interaction.
string intent_id = 1;
// Parameters of intent which triggered this interaction.
map<string, google.actions.sdk.v2.conversation.IntentParameterValue> intent_parameters = 5;
// Name of the handler attached to this interaction.
string handler = 3;
// Scene to which this interaction leads to.
string next_scene_id = 4;
}
// Results of conditions evaluation:
// https://developers.google.com/assistant/conversational/scenes#conditions
message ConditionsEvaluated {
// List of conditions which were evaluated to 'false'.
repeated Condition failed_conditions = 1;
// The first condition which was evaluated to 'true', if any.
Condition success_condition = 2;
}
// Evaluated condition.
message Condition {
// Expression specified in this condition.
string expression = 1;
// Handler name specified in evaluated condition.
string handler = 2;
// Destination scene specified in evaluated condition.
string next_scene_id = 3;
}
// Information about execution of onSceneEnter stage:
// https://developers.google.com/assistant/conversational/scenes#on_enter
message OnSceneEnter {
// Handler name specified in onSceneEnter event.
string handler = 1;
}
// Event triggered by destination scene returned from webhook:
// https://developers.google.com/assistant/conversational/webhooks#transition_scenes
message WebhookInitiatedTransition {
// ID of the scene the transition is leading to.
string next_scene_id = 1;
}
// Information about a request dispatched to the Action webhook:
// https://developers.google.com/assistant/conversational/webhooks#payloads
message WebhookRequest {
// Payload of the webhook request.
string request_json = 1;
}
// Information about a response received from the Action webhook:
// https://developers.google.com/assistant/conversational/webhooks#payloads
message WebhookResponse {
// Payload of the webhook response.
string response_json = 1;
}
// Information about matched slot(s):
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotMatch {
// Parameters extracted by NLU from user input.
map<string, google.actions.sdk.v2.conversation.IntentParameterValue> nlu_parameters = 2;
}
// Information about currently requested slot:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotRequested {
// Name of the requested slot.
string slot = 1;
// Slot prompt.
google.actions.sdk.v2.conversation.Prompt prompt = 3;
}
// Event which happens after webhook validation was finished for slot(s):
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message SlotValidated {
}
// Event which happens when form is fully filled:
// https://developers.google.com/assistant/conversational/scenes#slot_filling
message FormFilled {
}
// Event which happens when system needs user input:
// https://developers.google.com/assistant/conversational/scenes#input
message WaitingForUserInput {
}
// Event which informs that conversation with agent was ended.
message EndConversation {
}

View File

@ -0,0 +1,40 @@
// 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/config_file.proto";
import "google/actions/sdk/v2/data_file.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "FilesProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for a list of files.
message Files {
// Only one type of files can be sent to the server at a time, config files or
// data files.
oneof file_type {
// List of config files. This includes manifest, settings, interaction model
// resource bundles and more.
ConfigFiles config_files = 1;
// List of data files. This includes image, audio file, cloud function
// source code.
DataFiles data_files = 2;
}
}

View File

@ -0,0 +1,37 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "interactionmodel_proto",
srcs = [
"conditional_event.proto",
"event_handler.proto",
"global_intent_event.proto",
"intent.proto",
"intent_event.proto",
"scene.proto",
"slot.proto",
],
deps = [
"//google/actions/sdk/v2/interactionmodel/prompt:prompt_proto",
"//google/actions/sdk/v2/interactionmodel/type:type_proto",
"//google/api:field_behavior_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,55 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "ConditionalEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Registers events that trigger as the result of a true condition.
message ConditionalEvent {
// Required. Filter condition for this event to trigger. If condition is evaluated to
// true then the associated `handler` will be triggered.
// The following variable references are supported:
// `$session` - To reference data in session storage.
// `$user` - To reference data in user storage.
// The following boolean operators are supported (with examples):
// `&&` - `session.params.counter > 0 && session.params.counter < 100`
// `||` - `session.params.foo == "John" || session.params.counter == "Adam"`
// `!` - `!(session.params.counter == 5)`
// The following comparisons are supported:
// `==`, `!=`, `<`, `>`, `<=`, `>=`
// The following list and string operators are supported (with examples):
// `in` - "Watermelon" in `session.params.fruitList`
// `size` - `size(session.params.fruitList) > 2`
// `substring` - `session.params.fullName.contains("John")`
string condition = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Destination scene which the conversation should jump to when the associated
// condition is evaluated to true. The state of the current scene is destroyed
// on the transition.
string transition_to_scene = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the associated condition is evaluated
// to `true`. Should execute before transitioning to the destination scene.
// Useful to generate Prompts in response to events.
EventHandler handler = 3 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,41 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/prompt/static_prompt.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "EventHandlerProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Defines a handler to be executed after an event. Examples of events are
// intent and condition based events in a scene.
message EventHandler {
// Name of the webhook handler to call.
string webhook_handler = 1;
// Prompts can either be inlined or referenced by name.
oneof prompt {
// Inlined static prompt. Can contain references to string resources in
// bundles.
google.actions.sdk.v2.interactionmodel.prompt.StaticPrompt static_prompt = 2;
// Name of the static prompt to invoke.
string static_prompt_name = 3;
}
}

View File

@ -0,0 +1,45 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "GlobalIntentEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Defines a global intent handler. Global intent events are scoped to the
// entire Actions project and may be overridden by intent handlers in a scene.
// Intent names must be unique within an Actions project.
//
// Global intents can be matched anytime during a session, allowing users to
// access common flows like "get help" or "go back home." They can also be
// used to deep link users into specific flows when they invoke an Action.
//
// Note, the intent name is specified in the name of the file.
message GlobalIntentEvent {
// Optional. Destination scene which the conversation should jump to. The state of the
// current scene is destroyed on the transition.
string transition_to_scene = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the intent is matched. Should execute
// before transitioning to the destination scene. Useful to generate Prompts
// in response to events.
EventHandler handler = 2 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,66 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/type/class_reference.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "IntentProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Intents map open-ended user input to structured objects. Spoken
// phrases are matched to intents with Google's Natural Language Understanding
// (NLU). Intent matches can trigger events in your conversation design to
// progress the user's conversation.
// The intent name is specified in the name of the file.
message Intent {
// Definition of a parameter which can be used inside training phrases.
message IntentParameter {
// Required. Unique name of the intent parameter. Can be used in conditions and
// responses to reference intent parameters extracted by NLU with
// $intent.params.[name].resolved
string name = 1 [(google.api.field_behavior) = REQUIRED];
// The type of the intent parameter.
oneof parameter_type {
// Optional. Declares the data type of this parameter.
// This should not be set for built-in intents.
google.actions.sdk.v2.interactionmodel.type.ClassReference type = 2 [(google.api.field_behavior) = OPTIONAL];
}
}
// The list of parameters within the training phrases. All parameters must be
// defined here to be used in the training phrase.
repeated IntentParameter parameters = 1;
// Training phrases allow Googles NLU to automatically match intents with
// user input. The more unique phrases that are provided, the better chance
// this intent will be matched.
// The following is the format of training phrase part which are annotated.
// Note that `auto` field is optional and the default behavior when `auto` is
// not specified is equivalent to `auto=false`.
// `($<paramName> '<sample text>' auto=<true or false>)`
// `auto = true` means the part was auto annotated by NLU.
// `auto = false` means the part was annotated by the user. This is the
// default when auto is not specified.
// Example:
// "Book a flight from ($source 'San Francisco' auto=false) to ($dest
// 'Vancouver')"
repeated string training_phrases = 2;
}

View File

@ -0,0 +1,40 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "IntentEventProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Registers Events which trigger as the result of an intent match.
message IntentEvent {
// Required. Intent triggering the event.
string intent = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Destination scene which the conversation should jump to. The state of the
// current scene is destroyed on the transition.
string transition_to_scene = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Event handler which is triggered when the intent is matched. Should execute
// before transitioning to the destination scene. Useful to generate prompts
// in response to events.
EventHandler handler = 3 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,32 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "prompt_proto",
srcs = [
"static_prompt.proto",
"static_simple_prompt.proto",
"suggestion.proto",
"surface_capabilities.proto",
],
deps = [
"//google/actions/sdk/v2/interactionmodel/prompt/content:content_proto",
"//google/api:field_behavior_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,39 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "content_proto",
srcs = [
"static_canvas_prompt.proto",
"static_card_prompt.proto",
"static_collection_browse_prompt.proto",
"static_collection_prompt.proto",
"static_content_prompt.proto",
"static_image_prompt.proto",
"static_link_prompt.proto",
"static_list_prompt.proto",
"static_media_prompt.proto",
"static_table_prompt.proto",
],
deps = [
"//google/api:field_behavior_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:struct_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,49 @@
// 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.interactionmodel.prompt;
import "google/api/field_behavior.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCanvasPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a Interactive Canvas response to be sent to the user.
// This can be used in conjunction with the `first_simple` field in the
// containing prompt to speak to the user in addition to displaying a
// interactive canvas response.
message StaticCanvasPrompt {
// Required. URL of the web view to load.
string url = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. JSON data to be passed through to the immersive experience web page as an
// event. If the `override` field in the containing prompt is `false` data
// values defined in this Canvas prompt will be added after data values
// defined in previous Canvas prompts.
repeated google.protobuf.Value data = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A true value means that the mic won't be opened for capturing input after
// this immersive response is presented to the user.
bool suppress_mic = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If `true`, conversation related metadata is included and send back to the
// canvas application.
bool send_state_data_to_canvas_app = 5 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,48 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCardPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A basic card for displaying some information, e.g. an image and/or text.
message StaticCardPrompt {
// Optional. Overall title of the card.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the card.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. Body text of the card which is needed unless image is present. Supports a
// limited set of markdown syntax for formatting.
string text = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A hero image for the card. The height is fixed to 192dp.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. How the image background will be filled.
StaticImagePrompt.ImageFill image_fill = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. A clickable button to be shown in the Card.
StaticLinkPrompt button = 6 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,56 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCollectionBrowsePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Presents a set of web documents as a collection of large-tile items. Items
// may be selected to launch their associated web document in a web viewer.
message StaticCollectionBrowsePrompt {
// Item in the collection.
message CollectionBrowseItem {
// Required. Title of the collection item.
string title = 1 [(google.api.field_behavior) = REQUIRED];
// Description of the collection item.
string description = 2;
// Footer text for the collection item, displayed below the description.
// Single line of text, truncated with an ellipsis.
string footer = 3;
// Image for the collection item.
StaticImagePrompt image = 4;
// Required. URI to open if the item selected.
OpenUrl open_uri_action = 5 [(google.api.field_behavior) = REQUIRED];
}
// Items in the browse collection. The list size should be in the range [2,
// 10].
repeated CollectionBrowseItem items = 1;
// Image display option for images in the collection.
StaticImagePrompt.ImageFill image_fill = 2;
}

View File

@ -0,0 +1,59 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticCollectionPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A card for presenting a collection of options to select from.
message StaticCollectionPrompt {
// An item in the collection.
message CollectionItem {
// Required. The NLU key that matches the entry key name in the associated
// Type. When item tapped, this key will be posted back as a select option
// parameter.
string key = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Title of the item. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of items.
string title = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Body text of the item.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Item image.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Optional. Title of the collection.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the collection.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. Collection items.
repeated CollectionItem items = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. Type of image display option.
StaticImagePrompt.ImageFill image_fill = 4 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,57 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_card_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_browse_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_collection_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_list_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_media_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_table_prompt.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticContentPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A placeholder for the Content part of a StaticPrompt.
message StaticContentPrompt {
// Only one type of content can be present in a Prompt.
oneof content {
// A basic card.
StaticCardPrompt card = 1;
// An image.
StaticImagePrompt image = 2;
// Table card.
StaticTablePrompt table = 3;
// Response indicating a set of media to be played.
StaticMediaPrompt media = 4;
// A card for presenting a list of options to select from.
StaticListPrompt list = 5;
// A card presenting a list of options to select from.
StaticCollectionPrompt collection = 6;
// A card presenting a collection of web pages to open.
StaticCollectionBrowsePrompt collection_browse = 7;
}
}

View File

@ -0,0 +1,63 @@
// 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.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticImagePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// An image displayed in the card.
message StaticImagePrompt {
// Possible image display options for affecting the presentation of the image.
// This should be used for when the image's aspect ratio does not match the
// image container's aspect ratio.
enum ImageFill {
// ImageFill unspecified.
UNSPECIFIED = 0;
// Fill the gaps between the image and the image container with gray bars.
GRAY = 1;
// Fill the gaps between the image and the image container with white bars.
WHITE = 2;
// Image is scaled such that the image width and height match or exceed the
// container dimensions. This may crop the top and bottom of the image if
// the scaled image height is greater than the container height, or crop the
// left and right of the image if the scaled image width is greater than the
// container width. This is similar to "Zoom Mode" on a widescreen TV when
// playing a 4:3 video.
CROPPED = 3;
}
// Required. The source url of the image. Images can be JPG, PNG and GIF (animated and
// non-animated). For example,`https://www.agentx.com/logo.png`.
string url = 1 [(google.api.field_behavior) = REQUIRED];
// Required. A text description of the image to be used for accessibility, e.g. screen
// readers.
string alt = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. The height of the image in pixels.
int32 height = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The width of the image in pixels.
int32 width = 4 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,52 @@
// 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.interactionmodel.prompt;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticLinkPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Defines a link which will be displayed as a suggestion chip and can be opened
// by the user.
message StaticLinkPrompt {
// Name of the link
string name = 1;
// Defines behavior when the user opens the link.
OpenUrl open = 2;
}
// Defines behavior when the user opens the link.
message OpenUrl {
// The url field which could be any of:
// - http/https urls for opening an App-linked App or a webpage
string url = 1;
// Indicates a hint for the url type.
UrlHint hint = 2;
}
// Different types of url hints.
enum UrlHint {
// Unspecified
HINT_UNSPECIFIED = 0;
// URL that points directly to AMP content, or to a canonical URL
// which refers to AMP content via `<link rel="amphtml">`.
AMP = 1;
}

View File

@ -0,0 +1,55 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticListPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A card for presenting a list of options to select from.
message StaticListPrompt {
// An item in the list.
message ListItem {
// Required. The NLU key that matches the entry key name in the associated type. When
// item tapped, this key will be posted back as a select option parameter.
string key = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Title of the item. When tapped, this text will be posted back to the
// conversation verbatim as if the user had typed it. Each title must be
// unique among the set of items.
string title = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Body text of the item.
string description = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Item image.
StaticImagePrompt image = 4 [(google.api.field_behavior) = OPTIONAL];
}
// Optional. Title of the list.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle of the list.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. List items.
repeated ListItem items = 3 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,96 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/protobuf/duration.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticMediaPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Contains information about the media, such as name, description, url, etc.
// Next id: 10
message StaticMediaPrompt {
// Media type of this response.
enum MediaType {
// UNSPECIFIED value
MEDIA_TYPE_UNSPECIFIED = 0;
// Audio file.
AUDIO = 1;
// Response to acknowledge a media status report.
MEDIA_STATUS_ACK = 2;
}
// Media control types the media response can supported optionally
enum OptionalMediaControls {
// Unspecified value
OPTIONAL_MEDIA_CONTROLS_UNSPECIFIED = 0;
// Paused event. Triggered when user pauses the media.
PAUSED = 1;
// Stopped event. Triggered when user exit out 3p session during media play.
STOPPED = 2;
}
// Media type of this response.
MediaType media_type = 8;
// Start offset of the first media object.
google.protobuf.Duration start_offset = 5;
// Optional media control types this media response session can support.
// If set, request will be made to 3p when a certain media event happens.
// If not set, 3p must still handle two default control type, FINISHED and
// FAILED.
repeated OptionalMediaControls optional_media_controls = 6;
// List of media objects.
repeated MediaObject media_objects = 7;
}
// Represents a single media object.
message MediaObject {
// Name of this media object.
string name = 1;
// Description of this media object.
string description = 2;
// The url pointing to the media content.
string url = 3;
// Image to show with the media card.
MediaImage image = 4;
}
// Image to be shown inside a MediaPrompt.
message MediaImage {
// Only one type of MediaImage is allowed.
oneof image {
// A large image, such as the cover of the album, etc.
StaticImagePrompt large = 1;
// A small image icon displayed on the right from the title.
// It's resized to 36x36 dp.
StaticImagePrompt icon = 2;
}
}

View File

@ -0,0 +1,93 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_image_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticTablePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// A table card for displaying a table of text.
message StaticTablePrompt {
// Optional. Overall title of the table. Must be set if subtitle is set.
string title = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Subtitle for the table.
string subtitle = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Image associated with the table.
StaticImagePrompt image = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Headers and alignment of columns.
repeated TableColumn columns = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Row data of the table. The first 3 rows are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator to
// see which rows will be shown for a given surface. On surfaces that support
// the `WEB_BROWSER` capability, you can point the user to
// a web page with more data.
repeated TableRow rows = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Button.
StaticLinkPrompt button = 6 [(google.api.field_behavior) = OPTIONAL];
}
// Describes a column in the table.
message TableColumn {
// The alignment of the content within the cell.
enum HorizontalAlignment {
// HorizontalAlignment unspecified.
UNSPECIFIED = 0;
// Leading edge of the cell. This is the default.
LEADING = 1;
// Content is aligned to the center of the column.
CENTER = 2;
// Content is aligned to the trailing edge of the column.
TRAILING = 3;
}
// Header text for the column.
string header = 1;
// Horizontal alignment of content w.r.t column. If unspecified, content
// will be aligned to the leading edge.
HorizontalAlignment align = 2;
}
// Describes a cell in a row.
message TableCell {
// Text content of the cell.
string text = 1;
}
// Describes a row in the table.
message TableRow {
// Cells in this row. The first 3 cells are guaranteed to be shown but
// others might be cut on certain surfaces. Please test with the simulator
// to see which cells will be shown for a given surface.
repeated TableCell cells = 1;
// Indicates whether there should be a divider after each row.
bool divider = 2;
}

View File

@ -0,0 +1,96 @@
// 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.interactionmodel.prompt;
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_canvas_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_content_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/content/static_link_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/static_simple_prompt.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/suggestion.proto";
import "google/actions/sdk/v2/interactionmodel/prompt/surface_capabilities.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticPromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a list of prompt candidates, one of which will be selected as the
// prompt to be shown in the response to the user.
// **This message is localizable.**
message StaticPrompt {
// Represents a static prompt candidate.
message StaticPromptCandidate {
// Represents structured responses to send to the user, such as text,
// speech, cards, canvas data, suggestion chips, etc.
message StaticPromptResponse {
// Optional. The first voice and text-only response.
StaticSimplePrompt first_simple = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A content like a card, list or media to display to the user.
StaticContentPrompt content = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. The last voice and text-only response.
StaticSimplePrompt last_simple = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Suggestions to be displayed to the user which will always
// appear at the end of the response. If the `append` field in the
// containing prompt is `true` the titles defined in this field will be
// added to titles defined in any previously defined suggestions prompts
// and duplicate values will be removed.
repeated Suggestion suggestions = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. An additional suggestion chip that can link out to the associated app
// or site.
// The chip will be rendered with the title "Open <name>". Max 20 chars.
StaticLinkPrompt link = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Mode for how this messages should be merged with previously defined
// messages.
// `true` will clear all previously defined messages (first and last
// simple, content, suggestions link and canvas) and add messages defined
// in this prompt. `false` will add messages defined in this prompt to
// messages defined in previous responses. Setting this field to `false`
// will also enable appending to some fields inside Simple prompts, the
// Suggestions prompt and the Canvas prompt (part of the Content prompt).
// The Content and Link messages will always be overwritten if defined in
// the prompt. Default value is `false`.
bool override = 7 [(google.api.field_behavior) = OPTIONAL];
// A response to be used for interactive canvas experience.
StaticCanvasPrompt canvas = 8;
}
// Optional. The criteria for whether this prompt matches a request. If the selector
// is empty, this prompt will always be triggered.
Selector selector = 1 [(google.api.field_behavior) = OPTIONAL];
// The prompt response associated with the selector.
StaticPromptResponse prompt_response = 2;
}
// Defines the criteria for whether a prompt matches a request.
message Selector {
// The set of required surface capabilities.
SurfaceCapabilities surface_capabilities = 1;
}
// The list of candidate prompts to be sent to the client. Each prompt has a
// selector to determine when it can be used. The first selector that matches
// a request will be sent and the rest will be ignored.
repeated StaticPromptCandidate candidates = 1;
}

View File

@ -0,0 +1,48 @@
// 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.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "StaticSimplePromptProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a simple prompt to be send to a user.
message StaticSimplePrompt {
// Represents a variant which is part of the simple prompt.
message Variant {
// Optional. Represents the speech to be spoken to the user. Can be SSML or text to
// speech.
// By default, speech will be appended to previous Simple prompt's
// speech. If the `override` field in the containing prompt is `true` the
// speech defined in this field will override previous Simple prompt's
// speech.
string speech = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Text to display in the chat bubble. If not given, a display rendering of
// the speech field above will be used. Limited to 640 chars.
// By default, text will be appended to previous Simple prompt's text.
// If the `override` field in the containing prompt is `true` the text
// defined in this field will override previous Simple prompt's text.
string text = 2 [(google.api.field_behavior) = OPTIONAL];
}
// List of possible variants.
repeated Variant variants = 1;
}

View File

@ -0,0 +1,33 @@
// 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.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "SuggestionProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents a suggestion chip, a UI element shown to the user for convenience.
message Suggestion {
// Required. The text shown in the suggestion chip. When tapped, this text will be
// posted back to the conversation verbatim as if the user had typed it.
// Each title must be unique among the set of suggestion chips.
// Max 25 chars
string title = 1 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,54 @@
// 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.interactionmodel.prompt;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt;prompt";
option java_multiple_files = true;
option java_outer_classname = "SurfaceCapabilitiesProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.prompt";
// Represents the surface the user is using to make a request to the Action.
message SurfaceCapabilities {
// Capabilities the device surface supports at the time of the request.
enum Capability {
// Unspecified surface capability.
UNSPECIFIED = 0;
// Device can speak to the user via text-to-speech or SSML.
SPEECH = 1;
// Device can display rich responses like cards, lists and tables.
RICH_RESPONSE = 2;
// Device can play long form audio media like music and podcasts.
LONG_FORM_AUDIO = 3;
// Device can display a interactive canvas response.
INTERACTIVE_CANVAS = 4;
// Device can use web links in rich responses to open a web browser.
WEB_LINK = 5;
// Device can support saving and fetching home storage.
HOME_STORAGE = 6;
}
// Required. The capabilities of the surface making a request to the Action.
repeated Capability capabilities = 1 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,60 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/conditional_event.proto";
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/actions/sdk/v2/interactionmodel/intent_event.proto";
import "google/actions/sdk/v2/interactionmodel/slot.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "SceneProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Scene is the basic unit of control flow when designing a conversation. They
// can be chained together with other scenes, generate prompts for the end user,
// and define slots.
// The scene name is specified in the name of the file.
message Scene {
// Handler to invoke when transitioning into this scene.
EventHandler on_enter = 1;
// The list of events that trigger based on intents. These events can
// be triggered at any time after the on_load Handler has been called.
// Important - these events define the set of intents which are scoped to
// this scene and will take precedence over any globally defined events that
// have the same intents or their triggering phrases. Intent names must be
// unique within a scene.
repeated IntentEvent intent_events = 2;
// The list of events to trigger based on conditional statements. These are
// evaluated after the form has been filled or immediately after on_load if
// this scene does not have a form (evaluation is only done once). Only the
// first matching event will be triggered.
repeated ConditionalEvent conditional_events = 3;
// Ordered list of slots. Each slot defines the type of data
// that it will resolve and configuration to customize the experience of this
// resolution (e.g. prompts).
repeated Slot slots = 4;
// Handler called when there is a change in state of a slot not
// caused by updates within another Handler. This allows slots to be
// invalidated, the scene invalidated or other changes to scene state.
EventHandler on_slot_updated = 5;
}

View File

@ -0,0 +1,133 @@
// 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.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/actions/sdk/v2/interactionmodel/type/class_reference.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "SlotProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Configuration for a slot. Slots are single units of data that can be filled
// through natural language (ie. intent parameters), session parameters, and
// other sources.
message Slot {
// A single place where slot prompts are defined.
message PromptSettings {
// Prompt for the slot value itself. Example: "What size did you want?"
EventHandler initial_prompt = 1;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the first time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt1 = 2;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the second time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt2 = 3;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the last time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_final_prompt = 4;
// Prompt to give when the user does not provide an input for the first
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt1 = 5;
// Prompt to give when the user does not provide an input for the second
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt2 = 6;
// Prompt to give when the user does not provide an input for the last
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_final_prompt = 7;
}
// Message describing the commit behavior associated with the slot after it
// has been successfully filled.
message CommitBehavior {
// The session parameter to write the slot value after it is filled. Note
// that nested paths are not currently supported. "$$" is used to write the
// slot value to a session parameter with same name as the slot.
// Eg: write_session_param = "fruit" corresponds to "$session.params.fruit".
// write_session_param = "ticket" corresponds to "$session.params.ticket".
string write_session_param = 1;
}
// Configuration to populate a default value for this slot.
message DefaultValue {
// Optional. The session parameter to be used to initialize the slot value, if it has
// a non-empty value. The type of the value must match the type of the slot.
// Note that nested paths are not currently supported.
// Eg: `session_param = "fruit"` corresponds to `$session.params.fruit`.
// `session_param = "ticket"` corresponds to `$session.params.ticket`.
string session_param = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Constant default value for the slot. This will only be used if a value
// for this slot was not populated through the `session_param`. The
// type for this value must match the type of the slot.
google.protobuf.Value constant = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Required. Name of the slot.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Declares the data type of this slot.
google.actions.sdk.v2.interactionmodel.type.ClassReference type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates whether the slot is required to be filled before
// advancing. Required slots that are not filled will trigger a customizable
// prompt to the user.
bool required = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Registers Prompts for different stages of slot filling.
PromptSettings prompt_settings = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Commit behavior associated with the slot.
CommitBehavior commit_behavior = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Additional configuration associated with the slot which is
// used for filling the slot. The format of the config is specific to the
// type of the slot. Resource references to user or session parameter can be
// added to this config. This config is needed for filling slots related to
// transactions and user engagement.
//
// Example:
// For a slot of type actions.type.CompletePurchaseValue, the following
// config proposes a digital good order with a reference to a client defined
// session parameter `userSelectedSkuId`:
//
// {
// "@type": "type.googleapis.com/
// google.actions.transactions.v3.CompletePurchaseValueSpec",
// "skuId": {
// "skuType": "SKU_TYPE_IN_APP",
// "id": "$session.params.userSelectedSkuId",
// "packageName": "com.example.company"
// }
// }
google.protobuf.Value config = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Configuration to populate a default value for this slot.
DefaultValue default_value = 7 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,33 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
proto_library(
name = "type_proto",
srcs = [
"class_reference.proto",
"entity_display.proto",
"free_text_type.proto",
"regular_expression_type.proto",
"synonym_type.proto",
"type.proto",
],
deps = [
"//google/api:field_behavior_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)

View File

@ -0,0 +1,36 @@
// 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.interactionmodel.type;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "ClassReferenceProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// A reference to a class which is used to declare the type of a field or return
// value. Enums are also a type of class that can be referenced using
// ClassReference.
message ClassReference {
// Required. Name of a built-in type or custom type of the parameter. Examples:
// `PizzaToppings`, `actions.type.Number`
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates whether the data type represents a list of values.
bool list = 2 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,35 @@
// 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.interactionmodel.type;
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "EntityDisplayProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Elements that will be displayed on the canvas once a particular type's entity
// is extracted from a query. Only relevant for canvas enabled apps.
// **This message is localizable.**
message EntityDisplay {
// Optional. Title of the icon.
string icon_title = 1 [(google.api.field_behavior) = OPTIONAL];
// Required. Url of the icon.
string icon_url = 2 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,33 @@
// 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.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "FreeTextTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches any text if surrounding words context is close to provided
// training examples.
message FreeTextType {
// Optional. Elements that will be displayed on the canvas once an entity is extracted
// from a query. Only relevant for canvas enabled apps.
EntityDisplay display = 2 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,44 @@
// 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.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "RegularExpressionTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches text by regular expressions.
// **This message is localizable.**
message RegularExpressionType {
// Represents an entity object that contains the regular expression that is
// used for comparison.
message Entity {
// Optional. Elements that will be displayed on the canvas once an entity is
// extracted from a query. Only relevant for canvas enabled apps.
EntityDisplay display = 1 [(google.api.field_behavior) = OPTIONAL];
// Required. Uses RE2 regex syntax (See
// https://github.com/google/re2/wiki/Syntax for more details)
repeated string regular_expressions = 2 [(google.api.field_behavior) = REQUIRED];
}
// Required. Named map of entities which each contain Regex strings.
map<string, Entity> entities = 1 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,66 @@
// 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.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/entity_display.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "SynonymTypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Type that matches text by set of synonyms.
message SynonymType {
// Represents a synonym entity field that contains the details of a single
// entry inside the type.
message Entity {
// Optional. The entity display details.
EntityDisplay display = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. The list of synonyms for the entity.
// **This field is localizable.**
repeated string synonyms = 2 [(google.api.field_behavior) = OPTIONAL];
}
// The type of matching that entries in this type will use. This will ensure
// all of the types use the same matching method and allow variation of
// matching for synonym matching (i.e. fuzzy versus exact). If the value is
// `UNSPECIFIED` it will be defaulted to `EXACT_MATCH`.
enum MatchType {
// Defaults to `EXACT_MATCH`.
UNSPECIFIED = 0;
// Looks for an exact match of the synonym or name.
EXACT_MATCH = 1;
// Looser than `EXACT_MATCH`. Looks for similar matches as well as exact
// matches.
FUZZY_MATCH = 2;
}
// Optional. The match type for the synonym.
MatchType match_type = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. When set to true this will match unknown words or phrases based on
// surrounding input and intent training data, such as items that might be
// added to a grocery list.
bool accept_unknown_values = 3 [(google.api.field_behavior) = OPTIONAL];
// Required. Named map of synonym entities.
map<string, Entity> entities = 2 [(google.api.field_behavior) = REQUIRED];
}

View File

@ -0,0 +1,50 @@
// 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.interactionmodel.type;
import "google/actions/sdk/v2/interactionmodel/type/free_text_type.proto";
import "google/actions/sdk/v2/interactionmodel/type/regular_expression_type.proto";
import "google/actions/sdk/v2/interactionmodel/type/synonym_type.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type;type";
option java_multiple_files = true;
option java_outer_classname = "TypeProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel.type";
// Declaration of a custom type, as opposed to built-in types. Types can be
// assigned to slots in a scene or parameters of an intent's training phrases.
// Practically, Types can be thought of as enums.
// Note, type name is specified in the name of the file.
message Type {
// Selection of sub type based on the type of matching to be done.
oneof sub_type {
// Synonyms type, which is essentially an enum.
SynonymType synonym = 1;
// Regex type, allows regular expression matching.
RegularExpressionType regular_expression = 2;
// FreeText type.
FreeTextType free_text = 3;
}
// Set of exceptional words/phrases that shouldn't be matched by type.
// Note: If word/phrase is matched by the type but listed as an exclusion it
// won't be returned in parameter extraction result.
// **This field is localizable.**
repeated string exclusions = 4;
}

View File

@ -0,0 +1,92 @@
// 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/theme_customization.proto";
import "google/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "LocalizedSettingsProto";
option java_package = "com.google.actions.sdk.v2";
// Represents settings of an Actions project that are specific to a user locale.
// In this instance, user means the end user who invokes your Actions.
// **This message is localizable.**
message LocalizedSettings {
// Required. The default display name for this Actions project (if there is no
// translation available)
string display_name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The pronunciation of the display name to invoke it within a voice
// (spoken) context.
string pronunciation = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The default short description for the Actions project (if there is no
// translation available). 80 character limit.
string short_description = 3 [(google.api.field_behavior) = REQUIRED];
// Required. The default long description for the Actions project (if there is no
// translation available). 4000 character limit.
string full_description = 4 [(google.api.field_behavior) = REQUIRED];
// Required. Small square image, 192 x 192 px.
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string small_logo_image = 5 [(google.api.field_behavior) = REQUIRED];
// Optional. Large landscape image, 1920 x 1080 px.
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string large_banner_image = 6 [(google.api.field_behavior) = OPTIONAL];
// Required. The name of the developer to be displayed to users.
string developer_name = 7 [(google.api.field_behavior) = REQUIRED];
// Required. The contact email address for the developer.
string developer_email = 8 [(google.api.field_behavior) = REQUIRED];
// Optional. The terms of service URL.
string terms_of_service_url = 9 [(google.api.field_behavior) = OPTIONAL];
// Required. The Google Assistant voice type that users hear when they interact with
// your Actions. The supported values are "male_1", "male_2", "female_1", and
// "female_2".
string voice = 10 [(google.api.field_behavior) = REQUIRED];
// Optional. The locale for the specified voice. If not specified, this resolves
// to the user's Assistant locale. If specified, the voice locale must have
// the same root language as the locale specified in LocalizedSettings.
string voice_locale = 14 [(google.api.field_behavior) = OPTIONAL];
// Required. The privacy policy URL.
string privacy_policy_url = 11 [(google.api.field_behavior) = REQUIRED];
// Optional. Sample invocation phrases displayed as part of your Actions project's
// description in the Assistant directory. This will help users learn how to
// use it.
repeated string sample_invocations = 12 [(google.api.field_behavior) = OPTIONAL];
// Optional. Theme customizations for visual components of your Actions.
ThemeCustomization theme_customization = 13 [(google.api.field_behavior) = OPTIONAL];
}

View File

@ -0,0 +1,30 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ManifestProto";
option java_package = "com.google.actions.sdk.v2";
// Contains information that's "transportable" i.e. not specific to any given
// project and can be moved between projects.
message Manifest {
// Version of the file format. The current file format version is 1.0
// Example: "1.0"
string version = 1;
}

View File

@ -0,0 +1,179 @@
// 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/account_linking.proto";
import "google/actions/sdk/v2/localized_settings.proto";
import "google/actions/sdk/v2/surface.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "SettingsProto";
option java_package = "com.google.actions.sdk.v2";
// Represents settings of an Actions project that are not locale specific.
message Settings {
// The category choices for an Actions project.
enum Category {
// Unknown / Unspecified.
CATEGORY_UNSPECIFIED = 0;
// Business and Finance category.
BUSINESS_AND_FINANCE = 2;
// Education and Reference category.
EDUCATION_AND_REFERENCE = 3;
// Food and Drink category.
FOOD_AND_DRINK = 4;
// Games and Trivia category.
GAMES_AND_TRIVIA = 5;
// Health and Fitness category.
HEALTH_AND_FITNESS = 6;
// Kids and Family category.
KIDS_AND_FAMILY = 20;
// Lifestyle category.
LIFESTYLE = 7;
// Local category.
LOCAL = 8;
// Movies and TV category.
MOVIES_AND_TV = 9;
// Music and Audio category.
MUSIC_AND_AUDIO = 10;
// News category,
NEWS = 1;
// Novelty and Humor category.
NOVELTY_AND_HUMOR = 11;
// Productivity category.
PRODUCTIVITY = 12;
// Shopping category.
SHOPPING = 13;
// Social category.
SOCIAL = 14;
// Sports category.
SPORTS = 15;
// Travel and Transportation category.
TRAVEL_AND_TRANSPORTATION = 16;
// Utilities category.
UTILITIES = 17;
// Weather category.
WEATHER = 18;
// Home Control category.
HOME_CONTROL = 19;
}
// Actions project id.
string project_id = 1;
// Locale which is default for the project. For all files except under
// `resources/` with no locale in the path, the localized data is attributed
// to this `default_locale`. For files under `resources/` no locale means that
// the resource is applicable to all locales.
string default_locale = 2;
// Represents the regions where users can invoke your Actions, which is
// based on the user's location of presence. Cannot be set if
// `disabled_regions` is set. If both `enabled_regions` and `disabled_regions`
// are not specified, users can invoke your Actions in all regions. Each
// region is represented using the Canonical Name of Adwords geotargets. See
// https://developers.google.com/adwords/api/docs/appendix/geotargeting
// Examples include:
// - "Germany"
// - "Ghana"
// - "Greece"
// - "Grenada"
// - "United Kingdom"
// - "United States"
// - "United States Minor Outlying Islands"
// - "Uruguay"
repeated string enabled_regions = 3;
// Represents the regions where your Actions are blocked, based on the user's
// location of presence. Cannot be set if `enabled_regions` is set.
// Each region is represented using the Canonical Name of Adwords geotargets.
// See https://developers.google.com/adwords/api/docs/appendix/geotargeting
// Examples include:
// - "Germany"
// - "Ghana"
// - "Greece"
// - "Grenada"
// - "United Kingdom"
// - "United States"
// - "United States Minor Outlying Islands"
// - "Uruguay"
repeated string disabled_regions = 4;
// The category for this Actions project.
Category category = 5;
// Whether Actions can use transactions (for example, making
// reservations, taking orders, etc.). If false, then attempts to use the
// Transactions APIs fail.
bool uses_transactions_api = 6;
// Whether Actions can perform transactions for digital goods.
bool uses_digital_purchase_api = 7;
// Whether Actions use Interactive Canvas.
bool uses_interactive_canvas = 8;
// Whether Actions use the home storage feature.
bool uses_home_storage = 17;
// Whether Actions content is designed for family (DFF).
bool designed_for_family = 9;
// Whether Actions contains alcohol or tobacco related content.
bool contains_alcohol_or_tobacco_content = 11;
// Whether Actions may leave mic open without an explicit prompt during
// conversation.
bool keeps_mic_open = 12;
// The surface requirements that a client surface must support to invoke
// Actions in this project.
SurfaceRequirements surface_requirements = 13;
// Free-form testing instructions for Actions reviewer (for example, account
// linking instructions).
string testing_instructions = 14;
// Localized settings for the project's default locale. Every additional
// locale should have its own settings file in its own directory.
LocalizedSettings localized_settings = 15;
// Allow users to create or link accounts through Google sign-in and/or your
// own OAuth service.
AccountLinking account_linking = 16;
}

View File

@ -0,0 +1,64 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "SurfaceProto";
option java_package = "com.google.actions.sdk.v2";
// Contains a set of requirements that the client surface must support to invoke
// Actions in your project.
message SurfaceRequirements {
// The minimum set of capabilities needed to invoke the Actions in your
// project. If the surface is missing any of these, the Action will not be
// triggered.
repeated CapabilityRequirement minimum_requirements = 1;
}
// Represents a requirement about the availability of a given capability.
message CapabilityRequirement {
// Possible set of surface capabilities.
enum SurfaceCapability {
// Unknown / Unspecified.
SURFACE_CAPABILITY_UNSPECIFIED = 0;
// Surface supports audio output.
AUDIO_OUTPUT = 1;
// Surface supports screen/visual output.
SCREEN_OUTPUT = 2;
// Surface supports media response audio.
MEDIA_RESPONSE_AUDIO = 3;
// Surface supports web browsers.
WEB_BROWSER = 4;
// Surface supports account linking.
ACCOUNT_LINKING = 7;
// Surface supports Interactive Canvas.
INTERACTIVE_CANVAS = 8;
// Surface supports home storage.
HOME_STORAGE = 9;
}
// The type of capability.
SurfaceCapability capability = 1;
}

View File

@ -0,0 +1,83 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ThemeCustomizationProto";
option java_package = "com.google.actions.sdk.v2";
// Styles applied to cards that are presented to users
message ThemeCustomization {
// Describes how the borders of images should be rendered.
enum ImageCornerStyle {
// Undefined / Unspecified.
IMAGE_CORNER_STYLE_UNSPECIFIED = 0;
// Round corner for image.
CURVED = 1;
// Rectangular corner for image.
ANGLED = 2;
}
// Background color of cards. Acts as a fallback if `background_image` is
// not provided by developers or `background_image` doesn't fit for certain
// surfaces.
// Example usage: #FAFAFA
string background_color = 1;
// Primary theme color of the Action will be used to set text color of title,
// action item background color for Actions on Google cards.
// Example usage: #FAFAFA
string primary_color = 2;
// The font family that will be used for title of cards.
// Supported fonts:
// - Sans Serif
// - Sans Serif Medium
// - Sans Serif Bold
// - Sans Serif Black
// - Sans Serif Condensed
// - Sans Serif Condensed Medium
// - Serif
// - Serif Bold
// - Monospace
// - Cursive
// - Sans Serif Smallcaps
string font_family = 3;
// Border style of foreground image of cards. For example, can be applied on
// the foreground image of a basic card or carousel card.
ImageCornerStyle image_corner_style = 4;
// Landscape mode (minimum 1920x1200 pixels).
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string landscape_background_image = 5;
// Portrait mode (minimum 1200x1920 pixels).
// This should be specified as a reference to the corresponding image in the
// `resources/images/` directory. Eg: `$resources.images.foo` (without the
// extension) for image in `resources/images/foo.jpg`
// When working on a project pulled from Console the Google managed url pulled
// could be used.
string portrait_background_image = 6;
}

View File

@ -0,0 +1,46 @@
// 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;
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "ValidationResultsProto";
option java_package = "com.google.actions.sdk.v2";
// Wrapper for repeated validation result.
message ValidationResults {
// Multiple validation results.
repeated ValidationResult results = 1;
}
// Represents a validation result associated with the app content.
message ValidationResult {
// Context to identify the resource the validation message relates to.
message ValidationContext {
// Language code of the lozalized resource.
// Empty if the error is for non-localized resource.
// See the list of supported languages in
// https://developers.google.com/assistant/console/languages-locales
string language_code = 1;
}
// Holds the validation message.
string validation_message = 1;
// Context to identify the resource the validation message relates to.
ValidationContext validation_context = 2;
}

View File

@ -0,0 +1,82 @@
// 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/api/field_behavior.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2;sdk";
option java_multiple_files = true;
option java_outer_classname = "WebhookProto";
option java_package = "com.google.actions.sdk.v2";
// Metadata for different types of webhooks. If you're using
// `inlineCloudFunction`, your source code must be in a directory with the same
// name as the value for the `executeFunction` key.
// For example, a value of `my_webhook` for the`executeFunction` key would have
// a code structure like this:
// - `/webhooks/my_webhook.yaml`
// - `/webhooks/my_webhook/index.js`
// - `/webhooks/my_webhook/package.json`
message Webhook {
// Declares the name of the webhoook handler. A webhook can have
// multiple handlers registered. These handlers can be called from multiple
// places in your Actions project.
message Handler {
// Required. Name of the handler. Must be unique across all handlers the Actions
// project. You can check the name of this handler to invoke the correct
// function in your fulfillment source code.
string name = 1 [(google.api.field_behavior) = REQUIRED];
}
// REST endpoint to notify if you're not using the inline editor.
message HttpsEndpoint {
// The HTTPS base URL for your fulfillment endpoint (HTTP is not supported).
// Handler names are appended to the base URL path after a colon
// (following the style guide in
// https://cloud.google.com/apis/design/custom_methods).
// For example a base URL of 'https://gactions.service.com/api' would
// receive requests with URL 'https://gactions.service.com/api:{method}'.
string base_url = 1;
// Map of HTTP parameters to be included in the POST request.
map<string, string> http_headers = 2;
// Version of the protocol used by the endpoint. This is the protocol shared
// by all fulfillment types and not specific to Google fulfillment type.
int32 endpoint_api_version = 3;
}
// Holds the metadata of an inline Cloud Function deployed from the
// webhooks folder.
message InlineCloudFunction {
// The name of the Cloud Function entry point. The value of this field
// should match the name of the method exported from the source code.
string execute_function = 1;
}
// List of handlers for this webhook.
repeated Handler handlers = 1;
// Only one webhook type is supported.
oneof webhook_type {
// Custom webhook HTTPS endpoint.
HttpsEndpoint https_endpoint = 2;
// Metadata for cloud function deployed from code in the webhooks folder.
InlineCloudFunction inline_cloud_function = 3;
}
}