From f83715b48369c8d43548cc3cd84015e60be94cf2 Mon Sep 17 00:00:00 2001 From: Google APIs Date: Wed, 20 Jan 2021 11:21:52 -0800 Subject: [PATCH] feat: added support for test cases and agent validation PiperOrigin-RevId: 352834280 --- .../cloud/dialogflow/cx/v3beta1/BUILD.bazel | 81 +- .../cloud/dialogflow/cx/v3beta1/agent.proto | 143 ++- .../dialogflow/cx/v3beta1/audio_config.proto | 3 + .../cx/v3beta1/dialogflow_v3beta1.yaml | 25 +- .../dialogflow/cx/v3beta1/entity_type.proto | 1 - .../dialogflow/cx/v3beta1/experiment.proto | 415 --------- google/cloud/dialogflow/cx/v3beta1/flow.proto | 71 ++ .../cloud/dialogflow/cx/v3beta1/intent.proto | 9 +- google/cloud/dialogflow/cx/v3beta1/page.proto | 15 +- .../cx/v3beta1/response_message.proto | 38 +- .../dialogflow/cx/v3beta1/test_case.proto | 835 ++++++++++++++++++ .../cx/v3beta1/transition_route_group.proto | 5 - .../cx/v3beta1/validation_message.proto | 115 +++ .../cloud/dialogflow/cx/v3beta1/webhook.proto | 10 +- 14 files changed, 1226 insertions(+), 540 deletions(-) delete mode 100644 google/cloud/dialogflow/cx/v3beta1/experiment.proto create mode 100644 google/cloud/dialogflow/cx/v3beta1/test_case.proto create mode 100644 google/cloud/dialogflow/cx/v3beta1/validation_message.proto diff --git a/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel b/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel index 5ef54a42..462aa35a 100644 --- a/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel +++ b/google/cloud/dialogflow/cx/v3beta1/BUILD.bazel @@ -25,7 +25,6 @@ proto_library( "audio_config.proto", "entity_type.proto", "environment.proto", - "experiment.proto", "flow.proto", "fulfillment.proto", "intent.proto", @@ -34,7 +33,9 @@ proto_library( "security_settings.proto", "session.proto", "session_entity_type.proto", + "test_case.proto", "transition_route_group.proto", + "validation_message.proto", "version.proto", "webhook.proto", ], @@ -88,7 +89,6 @@ java_grpc_library( java_gapic_library( name = "cx_java_gapic", srcs = [":cx_proto_with_info"], - gapic_yaml = "dialogflow_gapic.yaml", grpc_service_config = "dialogflow_grpc_service_config.json", package = "google.cloud.dialogflow.cx.v3beta1", test_deps = [ @@ -105,13 +105,13 @@ java_gapic_test( "com.google.cloud.dialogflow.cx.v3beta1.AgentsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.EntityTypesClientTest", "com.google.cloud.dialogflow.cx.v3beta1.EnvironmentsClientTest", - "com.google.cloud.dialogflow.cx.v3beta1.ExperimentsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.FlowsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.IntentsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.PagesClientTest", "com.google.cloud.dialogflow.cx.v3beta1.SecuritySettingsServiceClientTest", "com.google.cloud.dialogflow.cx.v3beta1.SessionEntityTypesClientTest", "com.google.cloud.dialogflow.cx.v3beta1.SessionsClientTest", + "com.google.cloud.dialogflow.cx.v3beta1.TestCasesClientTest", "com.google.cloud.dialogflow.cx.v3beta1.TransitionRouteGroupsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.VersionsClientTest", "com.google.cloud.dialogflow.cx.v3beta1.WebhooksClientTest", @@ -214,50 +214,51 @@ py_gapic_assembly_pkg( ], ) +# TODO(b/177677397): Unable to generate PHP library. ############################################################################## # PHP ############################################################################## -load( - "@com_google_googleapis_imports//:imports.bzl", - "php_gapic_assembly_pkg", - "php_gapic_library", - "php_grpc_library", - "php_proto_library", -) +# load( +# "@com_google_googleapis_imports//:imports.bzl", +# "php_gapic_assembly_pkg", +# "php_gapic_library", +# "php_grpc_library", +# "php_proto_library", +# ) -php_proto_library( - name = "cx_php_proto", - deps = [":cx_proto"], -) +# php_proto_library( +# name = "cx_php_proto", +# deps = [":cx_proto"], +# ) -php_grpc_library( - name = "cx_php_grpc", - srcs = [":cx_proto"], - deps = [":cx_php_proto"], -) +# php_grpc_library( +# name = "cx_php_grpc", +# srcs = [":cx_proto"], +# deps = [":cx_php_proto"], +# ) -php_gapic_library( - name = "cx_php_gapic", - src = ":cx_proto_with_info", - gapic_yaml = "dialogflow_gapic.yaml", - grpc_service_config = "dialogflow_grpc_service_config.json", - package = "google.cloud.dialogflow.cx.v3beta1", - service_yaml = "dialogflow_v3beta1.yaml", - deps = [ - ":cx_php_grpc", - ":cx_php_proto", - ], -) +# php_gapic_library( +# name = "cx_php_gapic", +# src = ":cx_proto_with_info", +# gapic_yaml = "dialogflow_gapic.yaml", +# grpc_service_config = "dialogflow_grpc_service_config.json", +# package = "google.cloud.dialogflow.cx.v3beta1", +# service_yaml = "dialogflow_v3beta1.yaml", +# deps = [ +# ":cx_php_grpc", +# ":cx_php_proto", +# ], +# ) -# Open Source Packages -php_gapic_assembly_pkg( - name = "google-cloud-dialogflow-cx-v3beta1-php", - deps = [ - ":cx_php_gapic", - ":cx_php_grpc", - ":cx_php_proto", - ], -) +# # Open Source Packages +# php_gapic_assembly_pkg( +# name = "google-cloud-dialogflow-cx-v3beta1-php", +# deps = [ +# ":cx_php_gapic", +# ":cx_php_grpc", +# ":cx_php_proto", +# ], +# ) ############################################################################## # Node.js diff --git a/google/cloud/dialogflow/cx/v3beta1/agent.proto b/google/cloud/dialogflow/cx/v3beta1/agent.proto index ba80999f..f6fb4b42 100644 --- a/google/cloud/dialogflow/cx/v3beta1/agent.proto +++ b/google/cloud/dialogflow/cx/v3beta1/agent.proto @@ -109,6 +109,25 @@ service Agents { metadata_type: "google.protobuf.Struct" }; } + + // Validates the specified agent and creates or updates validation results. + // The agent in draft version is validated. Please call this API after the + // training is completed to get the complete validation results. + rpc ValidateAgent(ValidateAgentRequest) returns (AgentValidationResult) { + option (google.api.http) = { + post: "/v3beta1/{name=projects/*/locations/*/agents/*}:validate" + body: "*" + }; + } + + // Gets the latest agent validation result. Agent validation is performed + // when ValidateAgent is called. + rpc GetAgentValidationResult(GetAgentValidationResultRequest) returns (AgentValidationResult) { + option (google.api.http) = { + get: "/v3beta1/{name=projects/*/locations/*/agents/*/validationResult}" + }; + option (google.api.method_signature) = "name"; + } } // Settings related to speech recognition. @@ -122,13 +141,9 @@ message SpeechToTextSettings { // in your app, product, or service to determine user intent and respond to the // user in a natural way. // -// After you create an agent, you can add -// [Intents][google.cloud.dialogflow.cx.v3beta1.Intent], [Entity -// Types][google.cloud.dialogflow.cx.v3beta1.EntityType], -// [Flows][google.cloud.dialogflow.cx.v3beta1.Flow], -// [Fulfillments][google.cloud.dialogflow.cx.v3beta1.Fulfillment], -// [Webhooks][google.cloud.dialogflow.cx.v3beta1.Webhook], and so on to manage -// the conversation flows.. +// After you create an agent, you can add [Intents][google.cloud.dialogflow.cx.v3beta1.Intent], +// [Entity Types][google.cloud.dialogflow.cx.v3beta1.EntityType], [Flows][google.cloud.dialogflow.cx.v3beta1.Flow], [Fulfillments][google.cloud.dialogflow.cx.v3beta1.Fulfillment], +// [Webhooks][google.cloud.dialogflow.cx.v3beta1.Webhook], and so on to manage the conversation flows.. message Agent { option (google.api.resource) = { type: "dialogflow.googleapis.com/Agent" @@ -136,10 +151,7 @@ message Agent { }; // The unique identifier of the agent. - // Required for the - // [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent] - // method. - // [Agents.CreateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.CreateAgent] + // Required for the [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent] method. [Agents.CreateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.CreateAgent] // populates the name automatically. // Format: `projects//locations//agents/`. string name = 1; @@ -151,9 +163,7 @@ message Agent { // See [Language // Support](https://cloud.google.com/dialogflow/docs/reference/language) // for a list of the currently supported language codes. - // This field cannot be set by the - // [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent] - // method. + // This field cannot be set by the [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent] method. string default_language_code = 3 [(google.api.field_behavior) = IMMUTABLE]; // Required. The time zone of the agent from the [time zone @@ -174,15 +184,25 @@ message Agent { // Speech recognition related settings. SpeechToTextSettings speech_to_text_settings = 13; - // Immutable. Name of the start flow in this agent. A start flow will be - // automatically created when the agent is created, and can only be deleted by - // deleting the agent. Format: `projects//locations//agents//flows/`. + // Immutable. Name of the start flow in this agent. A start flow will be automatically + // created when the agent is created, and can only be deleted by deleting the + // agent. + // Format: `projects//locations//agents//flows/`. string start_flow = 16 [ (google.api.field_behavior) = IMMUTABLE, - (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Flow" } + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Flow" + } ]; + // Name of the [SecuritySettings][google.cloud.dialogflow.cx.v3beta1.SecuritySettings] reference for the agent. + // Format: `projects//locations//securitySettings/`. + string security_settings = 17 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/SecuritySettings" + }]; + // Indicates if stackdriver logging is enabled for the agent. bool enable_stackdriver_logging = 18; @@ -191,8 +211,7 @@ message Agent { bool enable_spell_correction = 20; } -// The request message for -// [Agents.ListAgents][google.cloud.dialogflow.cx.v3beta1.Agents.ListAgents]. +// The request message for [Agents.ListAgents][google.cloud.dialogflow.cx.v3beta1.Agents.ListAgents]. message ListAgentsRequest { // Required. The location to list all agents for. // Format: `projects//locations/`. @@ -211,8 +230,7 @@ message ListAgentsRequest { string page_token = 3; } -// The response message for -// [Agents.ListAgents][google.cloud.dialogflow.cx.v3beta1.Agents.ListAgents]. +// The response message for [Agents.ListAgents][google.cloud.dialogflow.cx.v3beta1.Agents.ListAgents]. message ListAgentsResponse { // The list of agents. There will be a maximum number of items returned based // on the page_size field in the request. @@ -223,8 +241,7 @@ message ListAgentsResponse { string next_page_token = 2; } -// The request message for -// [Agents.GetAgent][google.cloud.dialogflow.cx.v3beta1.Agents.GetAgent]. +// The request message for [Agents.GetAgent][google.cloud.dialogflow.cx.v3beta1.Agents.GetAgent]. message GetAgentRequest { // Required. The name of the agent. // Format: `projects//locations//agents/`. @@ -236,8 +253,7 @@ message GetAgentRequest { ]; } -// The request message for -// [Agents.CreateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.CreateAgent]. +// The request message for [Agents.CreateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.CreateAgent]. message CreateAgentRequest { // Required. The location to create a agent for. // Format: `projects//locations/`. @@ -252,8 +268,7 @@ message CreateAgentRequest { Agent agent = 2 [(google.api.field_behavior) = REQUIRED]; } -// The request message for -// [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent]. +// The request message for [Agents.UpdateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.UpdateAgent]. message UpdateAgentRequest { // Required. The agent to update. Agent agent = 1 [(google.api.field_behavior) = REQUIRED]; @@ -263,8 +278,7 @@ message UpdateAgentRequest { google.protobuf.FieldMask update_mask = 2; } -// The request message for -// [Agents.DeleteAgent][google.cloud.dialogflow.cx.v3beta1.Agents.DeleteAgent]. +// The request message for [Agents.DeleteAgent][google.cloud.dialogflow.cx.v3beta1.Agents.DeleteAgent]. message DeleteAgentRequest { // Required. The name of the agent to delete. // Format: `projects//locations//agents/`. @@ -276,8 +290,7 @@ message DeleteAgentRequest { ]; } -// The request message for -// [Agents.ExportAgent][google.cloud.dialogflow.cx.v3beta1.Agents.ExportAgent]. +// The request message for [Agents.ExportAgent][google.cloud.dialogflow.cx.v3beta1.Agents.ExportAgent]. message ExportAgentRequest { // Required. The name of the agent to export. // Format: `projects//locations//agents/`. @@ -288,21 +301,19 @@ message ExportAgentRequest { } ]; - // Optional. The [Google Cloud - // Storage](https://cloud.google.com/storage/docs/) URI to export the agent - // to. The format of this URI must be `gs:///`. If - // left unspecified, the serialized agent is returned inline. + // Optional. The [Google Cloud Storage](https://cloud.google.com/storage/docs/) URI to + // export the agent to. The format of this URI must be + // `gs:///`. + // If left unspecified, the serialized agent is returned inline. string agent_uri = 2 [(google.api.field_behavior) = OPTIONAL]; } -// The response message for -// [Agents.ExportAgent][google.cloud.dialogflow.cx.v3beta1.Agents.ExportAgent]. +// The response message for [Agents.ExportAgent][google.cloud.dialogflow.cx.v3beta1.Agents.ExportAgent]. message ExportAgentResponse { // The exported agent. oneof agent { // The URI to a file containing the exported agent. This field is populated - // only if `agent_uri` is specified in - // [ExportAgentRequest][google.cloud.dialogflow.cx.v3beta1.ExportAgentRequest]. + // only if `agent_uri` is specified in [ExportAgentRequest][google.cloud.dialogflow.cx.v3beta1.ExportAgentRequest]. string agent_uri = 1; // Uncompressed raw byte content for agent. @@ -310,8 +321,7 @@ message ExportAgentResponse { } } -// The request message for -// [Agents.RestoreAgent][google.cloud.dialogflow.cx.v3beta1.Agents.RestoreAgent]. +// The request message for [Agents.RestoreAgent][google.cloud.dialogflow.cx.v3beta1.Agents.RestoreAgent]. message RestoreAgentRequest { // Required. The name of the agent to restore into. // Format: `projects//locations//agents/`. @@ -333,3 +343,50 @@ message RestoreAgentRequest { bytes agent_content = 3; } } + +// The request message for [Agents.ValidateAgent][google.cloud.dialogflow.cx.v3beta1.Agents.ValidateAgent]. +message ValidateAgentRequest { + // Required. The agent to validate. + // Format: `projects//locations//agents/`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Agent" + } + ]; + + // If not specified, the agent's default language is used. + string language_code = 2; +} + +// The request message for [Agents.GetAgentValidationResult][google.cloud.dialogflow.cx.v3beta1.Agents.GetAgentValidationResult]. +message GetAgentValidationResultRequest { + // Required. The agent name. + // Format: `projects//locations//agents//validationResult`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/AgentValidationResult" + } + ]; + + // If not specified, the agent's default language is used. + string language_code = 2; +} + +// The response message for [Agents.GetAgentValidationResult][google.cloud.dialogflow.cx.v3beta1.Agents.GetAgentValidationResult]. +message AgentValidationResult { + option (google.api.resource) = { + type: "dialogflow.googleapis.com/AgentValidationResult" + pattern: "projects/{project}/locations/{location}/agents/{agent}/validationResult" + }; + + // The unique identifier of the agent validation result. + // Format: `projects//locations//agents//validationResult`. + string name = 1; + + // Contains all flow validation results. + repeated FlowValidationResult flow_validation_results = 2; +} diff --git a/google/cloud/dialogflow/cx/v3beta1/audio_config.proto b/google/cloud/dialogflow/cx/v3beta1/audio_config.proto index c0043a52..93234328 100644 --- a/google/cloud/dialogflow/cx/v3beta1/audio_config.proto +++ b/google/cloud/dialogflow/cx/v3beta1/audio_config.proto @@ -204,6 +204,9 @@ message VoiceSelectionParams { // Optional. The name of the voice. If not set, the service will choose a // voice based on the other parameters such as language_code and // [ssml_gender][google.cloud.dialogflow.cx.v3beta1.VoiceSelectionParams.ssml_gender]. + // + // For the list of available voices, please refer to [Supported voices and + // languages](https://cloud.google.com/text-to-speech/docs/voices). string name = 1; // Optional. The preferred gender of the voice. If not set, the service will diff --git a/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml b/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml index 492c1c29..2823afb3 100644 --- a/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml +++ b/google/cloud/dialogflow/cx/v3beta1/dialogflow_v3beta1.yaml @@ -7,20 +7,29 @@ apis: - name: google.cloud.dialogflow.cx.v3beta1.Agents - name: google.cloud.dialogflow.cx.v3beta1.EntityTypes - name: google.cloud.dialogflow.cx.v3beta1.Environments -- name: google.cloud.dialogflow.cx.v3beta1.Experiments - name: google.cloud.dialogflow.cx.v3beta1.Flows - name: google.cloud.dialogflow.cx.v3beta1.Intents - name: google.cloud.dialogflow.cx.v3beta1.Pages - name: google.cloud.dialogflow.cx.v3beta1.SecuritySettingsService - name: google.cloud.dialogflow.cx.v3beta1.SessionEntityTypes - name: google.cloud.dialogflow.cx.v3beta1.Sessions +- name: google.cloud.dialogflow.cx.v3beta1.TestCases - name: google.cloud.dialogflow.cx.v3beta1.TransitionRouteGroups - name: google.cloud.dialogflow.cx.v3beta1.Versions - name: google.cloud.dialogflow.cx.v3beta1.Webhooks types: +- name: google.cloud.dialogflow.cx.v3beta1.BatchRunTestCasesMetadata +- name: google.cloud.dialogflow.cx.v3beta1.BatchRunTestCasesResponse - name: google.cloud.dialogflow.cx.v3beta1.CreateVersionOperationMetadata - name: google.cloud.dialogflow.cx.v3beta1.ExportAgentResponse +- name: google.cloud.dialogflow.cx.v3beta1.ExportTestCasesMetadata +- name: google.cloud.dialogflow.cx.v3beta1.ExportTestCasesResponse +- name: google.cloud.dialogflow.cx.v3beta1.ImportTestCasesMetadata +- name: google.cloud.dialogflow.cx.v3beta1.ImportTestCasesResponse +- name: google.cloud.dialogflow.cx.v3beta1.RunTestCaseMetadata +- name: google.cloud.dialogflow.cx.v3beta1.RunTestCaseResponse +- name: google.cloud.dialogflow.cx.v3beta1.TestError - name: google.cloud.dialogflow.cx.v3beta1.WebhookRequest - name: google.cloud.dialogflow.cx.v3beta1.WebhookResponse @@ -52,8 +61,6 @@ backend: deadline: 60.0 - selector: 'google.cloud.dialogflow.cx.v3beta1.Environments.*' deadline: 60.0 - - selector: 'google.cloud.dialogflow.cx.v3beta1.Experiments.*' - deadline: 60.0 - selector: 'google.cloud.dialogflow.cx.v3beta1.Flows.*' deadline: 60.0 - selector: 'google.cloud.dialogflow.cx.v3beta1.Intents.*' @@ -72,6 +79,8 @@ backend: deadline: 60.0 - selector: google.cloud.dialogflow.cx.v3beta1.Sessions.StreamingDetectIntent deadline: 220.0 + - selector: 'google.cloud.dialogflow.cx.v3beta1.TestCases.*' + deadline: 60.0 - selector: 'google.cloud.dialogflow.cx.v3beta1.TransitionRouteGroups.*' deadline: 60.0 - selector: 'google.cloud.dialogflow.cx.v3beta1.Versions.*' @@ -98,11 +107,6 @@ authentication: canonical_scopes: |- https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/dialogflow - - selector: 'google.cloud.dialogflow.cx.v3beta1.Experiments.*' - oauth: - canonical_scopes: |- - https://www.googleapis.com/auth/cloud-platform, - https://www.googleapis.com/auth/dialogflow - selector: 'google.cloud.dialogflow.cx.v3beta1.Flows.*' oauth: canonical_scopes: |- @@ -133,6 +137,11 @@ authentication: canonical_scopes: |- https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/dialogflow + - selector: 'google.cloud.dialogflow.cx.v3beta1.TestCases.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform, + https://www.googleapis.com/auth/dialogflow - selector: 'google.cloud.dialogflow.cx.v3beta1.TransitionRouteGroups.*' oauth: canonical_scopes: |- diff --git a/google/cloud/dialogflow/cx/v3beta1/entity_type.proto b/google/cloud/dialogflow/cx/v3beta1/entity_type.proto index 8c5571a1..01cd25ad 100644 --- a/google/cloud/dialogflow/cx/v3beta1/entity_type.proto +++ b/google/cloud/dialogflow/cx/v3beta1/entity_type.proto @@ -115,7 +115,6 @@ message EntityType { }; // An **entity entry** for an associated entity type. - // Next Id = 8 message Entity { // Required. The primary value associated with this entity entry. // For example, if the entity type is *vegetable*, the value could be diff --git a/google/cloud/dialogflow/cx/v3beta1/experiment.proto b/google/cloud/dialogflow/cx/v3beta1/experiment.proto deleted file mode 100644 index 491ce217..00000000 --- a/google/cloud/dialogflow/cx/v3beta1/experiment.proto +++ /dev/null @@ -1,415 +0,0 @@ -// 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.cloud.dialogflow.cx.v3beta1; - -import "google/api/annotations.proto"; -import "google/api/client.proto"; -import "google/api/field_behavior.proto"; -import "google/api/resource.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/empty.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/timestamp.proto"; - -option cc_enable_arenas = true; -option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3Beta1"; -option go_package = "google.golang.org/genproto/googleapis/cloud/dialogflow/cx/v3beta1;cx"; -option java_multiple_files = true; -option java_outer_classname = "ExperimentProto"; -option java_package = "com.google.cloud.dialogflow.cx.v3beta1"; -option objc_class_prefix = "DF"; - -// Service for managing [Experiments][google.cloud.dialogflow.cx.v3beta1.Experiment]. -service Experiments { - option (google.api.default_host) = "dialogflow.googleapis.com"; - option (google.api.oauth_scopes) = - "https://www.googleapis.com/auth/cloud-platform," - "https://www.googleapis.com/auth/dialogflow"; - - // Returns the list of all experiments in the specified [Environment][google.cloud.dialogflow.cx.v3beta1.Environment]. - rpc ListExperiments(ListExperimentsRequest) returns (ListExperimentsResponse) { - option (google.api.http) = { - get: "/v3beta1/{parent=projects/*/locations/*/agents/*/environments/*}/experiments" - }; - option (google.api.method_signature) = "parent"; - } - - // Retrieves the specified [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment]. - rpc GetExperiment(GetExperimentRequest) returns (Experiment) { - option (google.api.http) = { - get: "/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}" - }; - option (google.api.method_signature) = "name"; - } - - // Creates an [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment] in the specified [Environment][google.cloud.dialogflow.cx.v3beta1.Environment]. - rpc CreateExperiment(CreateExperimentRequest) returns (Experiment) { - option (google.api.http) = { - post: "/v3beta1/{parent=projects/*/locations/*/agents/*/environments/*}/experiments" - body: "experiment" - }; - option (google.api.method_signature) = "parent,experiment"; - } - - // Updates the specified [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment]. - rpc UpdateExperiment(UpdateExperimentRequest) returns (Experiment) { - option (google.api.http) = { - patch: "/v3beta1/{experiment.name=projects/*/locations/*/agents/*/environments/*/experiments/*}" - body: "experiment" - }; - option (google.api.method_signature) = "experiment,update_mask"; - } - - // Deletes the specified [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment]. - rpc DeleteExperiment(DeleteExperimentRequest) returns (google.protobuf.Empty) { - option (google.api.http) = { - delete: "/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}" - }; - option (google.api.method_signature) = "name"; - } - - // Starts the specified [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment]. This rpc only changes the state of - // experiment from PENDING to RUNNING. - rpc StartExperiment(StartExperimentRequest) returns (Experiment) { - option (google.api.http) = { - post: "/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}:start" - body: "*" - }; - option (google.api.method_signature) = "name"; - } - - // Stops the specified [Experiment][google.cloud.dialogflow.cx.v3beta1.Experiment]. This rpc only changes the state of - // experiment from RUNNING to DONE. - rpc StopExperiment(StopExperimentRequest) returns (Experiment) { - option (google.api.http) = { - post: "/v3beta1/{name=projects/*/locations/*/agents/*/environments/*/experiments/*}:stop" - body: "*" - }; - option (google.api.method_signature) = "name"; - } -} - -// Represents an experiment in an environment. -// Next ID: 13 -message Experiment { - option (google.api.resource) = { - type: "dialogflow.googleapis.com/Experiment" - pattern: "projects/{project}/locations/{location}/agents/{agent}/environments/{environment}/experiments/{experiment}" - }; - - // Definition of the experiment. - // Next ID: 3 - message Definition { - // The condition defines which subset of sessions are selected for - // this experiment. If not specified, all sessions are eligible. E.g. - // "query_input.language_code=en" See the [conditions - // reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). - string condition = 1; - - // The variants of the experiment. We currently only support single variant - // experiment. - oneof variants { - // The flow versions as the variants of this experiment. - VersionVariants version_variants = 2; - } - } - - // The inference result which includes an objective metric to optimize and the - // confidence interval. - message Result { - // A confidence interval is a range of possible values for the experiment - // objective you are trying to measure. - message ConfidenceInterval { - // The confidence level used to construct the interval, i.e. there is X% - // chance that the true value is within this interval. - double confidence_level = 1; - - // The percent change between an experiment metric's value and the value - // for its control. - double ratio = 2; - - // Lower bound of the interval. - double lower_bound = 3; - - // Upper bound of the interval. - double upper_bound = 4; - } - - // Metric and corresponding confidence intervals. - message Metric { - // The type of the metric. - MetricType type = 1; - - // The actual value of the metric. - oneof value { - // Ratio value of a metric. - double ratio = 2; - } - - // The probability that the treatment is better than all other treatments - // in the experiment - ConfidenceInterval confidence_interval = 3; - } - - // Version variant and associated metrics. - message VersionMetrics { - // The name of the flow [Version][google.cloud.dialogflow.cx.v3beta1.Version]. - // Format: `projects//locations//agents//flows//versions/`. - string version = 1 [(google.api.resource_reference) = { - type: "dialogflow.googleapis.com/Version" - }]; - - // The metrics and corresponding confidence intervals in the inference - // result. - repeated Metric metrics = 2; - - // Number of sessions that were allocated to this version. - int32 session_count = 3; - } - - // Types of metric for Dialogflow experiment. - enum MetricType { - // Metric unspecified. - METRIC_UNSPECIFIED = 0; - - // Percentage of contained sessions without user calling back in 24 hours. - CONTAINED_SESSION_NO_CALLBACK_RATE = 1; - - // Percentage of sessions that were handed to a human agent. - LIVE_AGENT_HANDOFF_RATE = 2; - - // Percentage of sessions with the same user calling back. - CALLBACK_SESSION_RATE = 3; - - // Percentage of sessions where user hung up. - ABANDONED_SESSION_RATE = 4; - - // Percentage of sessions reached Dialogflow 'END_PAGE' or - // 'END_SESSION'. - SESSION_END_RATE = 5; - } - - // Version variants and metrics. - repeated VersionMetrics version_metrics = 1; - - // The last time the experiment's stats data was updated. Will have default - // value if stats have never been computed for this experiment. - google.protobuf.Timestamp last_update_time = 2; - } - - // The state of the experiment. - enum State { - // State unspecified. - STATE_UNSPECIFIED = 0; - - // The experiment is created but not started yet. - DRAFT = 1; - - // The experiment is running. - RUNNING = 2; - - // The experiment is done. - DONE = 3; - } - - // The name of the experiment. - // Format: projects//locations//agents//environments//experiments/.. - string name = 1; - - // Required. The human-readable name of the experiment (unique in an environment). Limit - // of 64 characters. - string display_name = 2 [(google.api.field_behavior) = REQUIRED]; - - // The human-readable description of the experiment. - string description = 3; - - // The current state of the experiment. - // Transition triggered by Expriments.StartExperiment: PENDING->RUNNING. - // Transition triggered by Expriments.CancelExperiment: PENDING->CANCELLED or - // RUNNING->CANCELLED. - State state = 4; - - // The definition of the experiment. - Definition definition = 5; - - // Inference result of the experiment. - Result result = 6; - - // Creation time of this experiment. - google.protobuf.Timestamp create_time = 7; - - // Start time of this experiment. - google.protobuf.Timestamp start_time = 8; - - // End time of this experiment. - google.protobuf.Timestamp end_time = 9; - - // Last update time of this experiment. - google.protobuf.Timestamp last_update_time = 10; - - // Maximum number of days to run the experiment. - google.protobuf.Duration experiment_length = 11; - - // The history of updates to the experiment variants. - repeated VariantsHistory variants_history = 12; -} - -// A list of flow version variants. -message VersionVariants { - // A single flow version with specified traffic allocation. - message Variant { - // The name of the flow version. - // Format: `projects//locations//agents//flows//versions/`. - string version = 1; - - // Percentage of the traffic which should be routed to this - // version of flow. Traffic allocation for a single flow must sum up to 1.0. - float traffic_allocation = 2; - - // Whether the variant is for the control group. - bool is_control_group = 3; - } - - // A list of flow version variants. - repeated Variant variants = 1; -} - -// The history of variants update. -message VariantsHistory { - // The variants updated. We currently only support single variant - // experiment. - oneof variants { - // The flow versions as the variants. - VersionVariants version_variants = 1; - } - - // Update time of the variants. - google.protobuf.Timestamp update_time = 2; -} - -// The request message for [Experiments.ListExperiments][google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments]. -message ListExperimentsRequest { - // Required. The [Environment][google.cloud.dialogflow.cx.v3beta1.Environment] to list all environments for. - // Format: `projects//locations//agents//environments/`. - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - child_type: "dialogflow.googleapis.com/Experiment" - } - ]; - - // The maximum number of items to return in a single page. By default 20 and - // at most 100. - int32 page_size = 2; - - // The next_page_token value returned from a previous list request. - string page_token = 3; -} - -// The response message for [Experiments.ListExperiments][google.cloud.dialogflow.cx.v3beta1.Experiments.ListExperiments]. -message ListExperimentsResponse { - // The list of experiments. There will be a maximum number of items - // returned based on the page_size field in the request. The list may in some - // cases be empty or contain fewer entries than page_size even if this isn't - // the last page. - repeated Experiment experiments = 1; - - // Token to retrieve the next page of results, or empty if there are no more - // results in the list. - string next_page_token = 2; -} - -// The request message for [Experiments.GetExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.GetExperiment]. -message GetExperimentRequest { - // Required. The name of the [Environment][google.cloud.dialogflow.cx.v3beta1.Environment]. - // Format: `projects//locations//agents//environments//experiments/`. - string name = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "dialogflow.googleapis.com/Experiment" - } - ]; -} - -// The request message for [Experiments.CreateExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.CreateExperiment]. -message CreateExperimentRequest { - // Required. The [Agent][google.cloud.dialogflow.cx.v3beta1.Agent] to create an [Environment][google.cloud.dialogflow.cx.v3beta1.Environment] for. - // Format: `projects//locations//agents//environments/`. - string parent = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - child_type: "dialogflow.googleapis.com/Experiment" - } - ]; - - // Required. The experiment to create. - Experiment experiment = 2 [(google.api.field_behavior) = REQUIRED]; -} - -// The request message for [Experiments.UpdateExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.UpdateExperiment]. -message UpdateExperimentRequest { - // Required. The experiment to update. - Experiment experiment = 1 [(google.api.field_behavior) = REQUIRED]; - - // Required. The mask to control which fields get updated. - google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; -} - -// The request message for [Experiments.DeleteExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.DeleteExperiment]. -message DeleteExperimentRequest { - // Required. The name of the [Environment][google.cloud.dialogflow.cx.v3beta1.Environment] to delete. - // Format: `projects//locations//agents//environments//experiments/`. - string name = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "dialogflow.googleapis.com/Experiment" - } - ]; -} - -// The request message for [Experiments.StartExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.StartExperiment]. -message StartExperimentRequest { - // Required. Resource name of the experiment to start. - // Format: `projects//locations//agents//environments//experiments/`. - string name = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "dialogflow.googleapis.com/Experiment" - } - ]; -} - -// The request message for [Experiments.StopExperiment][google.cloud.dialogflow.cx.v3beta1.Experiments.StopExperiment]. -message StopExperimentRequest { - // Required. Resource name of the experiment to stop. - // Format: `projects//locations//agents//environments//experiments/`. - string name = 1 [ - (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "dialogflow.googleapis.com/Experiment" - } - ]; -} diff --git a/google/cloud/dialogflow/cx/v3beta1/flow.proto b/google/cloud/dialogflow/cx/v3beta1/flow.proto index fefd0abe..e5aeef4c 100644 --- a/google/cloud/dialogflow/cx/v3beta1/flow.proto +++ b/google/cloud/dialogflow/cx/v3beta1/flow.proto @@ -21,6 +21,7 @@ import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/dialogflow/cx/v3beta1/page.proto"; +import "google/cloud/dialogflow/cx/v3beta1/validation_message.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; @@ -96,6 +97,25 @@ service Flows { metadata_type: "google.protobuf.Struct" }; } + + // Validates the specified flow and creates or updates validation results. + // Please call this API after the training is completed to get the complete + // validation results. + rpc ValidateFlow(ValidateFlowRequest) returns (FlowValidationResult) { + option (google.api.http) = { + post: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*}:validate" + body: "*" + }; + } + + // Gets the latest flow validation result. Flow validation is performed + // when ValidateFlow is called. + rpc GetFlowValidationResult(GetFlowValidationResultRequest) returns (FlowValidationResult) { + option (google.api.http) = { + get: "/v3beta1/{name=projects/*/locations/*/agents/*/flows/*/validationResult}" + }; + option (google.api.method_signature) = "name"; + } } // Settings related to NLU. @@ -364,3 +384,54 @@ message TrainFlowRequest { } ]; } + +// The request message for [Flows.ValidateFlow][google.cloud.dialogflow.cx.v3beta1.Flows.ValidateFlow]. +message ValidateFlowRequest { + // Required. The flow to validate. + // Format: `projects//locations//agents//flows/`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Flow" + } + ]; + + // If not specified, the agent's default language is used. + string language_code = 2; +} + +// The request message for [Flows.GetFlowValidationResult][google.cloud.dialogflow.cx.v3beta1.Flows.GetFlowValidationResult]. +message GetFlowValidationResultRequest { + // Required. The flow name. + // Format: `projects//locations//agents//flows//validationResult`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/FlowValidationResult" + } + ]; + + // If not specified, the agent's default language is used. + string language_code = 2; +} + +// The response message for [Flows.GetFlowValidationResult][google.cloud.dialogflow.cx.v3beta1.Flows.GetFlowValidationResult]. +message FlowValidationResult { + option (google.api.resource) = { + type: "dialogflow.googleapis.com/FlowValidationResult" + pattern: "projects/{project}/locations/{location}/agents/{agent}/flows/{flow}/validationResult" + }; + + // The unique identifier of the flow validation result. + // Format: `projects//locations//agents//flows//validationResult`. + string name = 1; + + // Contains all validation messages. + repeated ValidationMessage validation_messages = 2; + + // Last time the flow was validated. + google.protobuf.Timestamp update_time = 3; +} diff --git a/google/cloud/dialogflow/cx/v3beta1/intent.proto b/google/cloud/dialogflow/cx/v3beta1/intent.proto index 53b74fae..6cbe2a62 100644 --- a/google/cloud/dialogflow/cx/v3beta1/intent.proto +++ b/google/cloud/dialogflow/cx/v3beta1/intent.proto @@ -155,9 +155,12 @@ message Intent { // Indicates whether the parameter represents a list of values. bool is_list = 3; - // Indicates whether the parameter content is logged in text and audio. If - // it is set to true, the parameter content will be replaced to parameter - // id in both request and response. The default value is false. + // Indicates whether the parameter content should be redacted in text and + // audio. If the flag is set to true, the parameter content will be replaced + // by parameter name in both request and response. + // Note: the parameter content is subject to redaction if either parameter + // level redaction or [entity type level redaction][google.cloud.dialogflow.cx.v3beta1.EntityType.redact] is + // enabled. bool redact = 4; } diff --git a/google/cloud/dialogflow/cx/v3beta1/page.proto b/google/cloud/dialogflow/cx/v3beta1/page.proto index f63dcfae..53a57a0a 100644 --- a/google/cloud/dialogflow/cx/v3beta1/page.proto +++ b/google/cloud/dialogflow/cx/v3beta1/page.proto @@ -147,9 +147,13 @@ message Page { // // * TransitionRoutes defined in the page with intent specified. // * TransitionRoutes defined in the - // [transition route groups][google.cloud.dialogflow.cx.v3beta1.Page.transition_route_groups]. + // [transition route groups][google.cloud.dialogflow.cx.v3beta1.Page.transition_route_groups] with intent + // specified. // * TransitionRoutes defined in flow with intent specified. // * TransitionRoutes defined in the page with only condition specified. + // * TransitionRoutes defined in the + // [transition route groups][google.cloud.dialogflow.cx.v3beta1.Page.transition_route_groups] with only + // condition specified. repeated TransitionRoute transition_routes = 9; // Handlers associated with the page to handle events such as webhook errors, @@ -238,9 +242,12 @@ message Form { // the default value will be ignored. google.protobuf.Value default_value = 9; - // Indicates whether the parameter content is logged in text and audio. If - // it is set to true, the parameter content will be replaced to parameter - // name in both request and response. The default value is false. + // Indicates whether the parameter content should be redacted in text and + // audio. If the flag is set to true, the parameter content will be replaced + // by parameter name in both request and response. + // Note: the parameter content is subject to redaction if either parameter + // level redaction or [entity type level redaction][google.cloud.dialogflow.cx.v3beta1.EntityType.redact] is + // enabled. bool redact = 11; } diff --git a/google/cloud/dialogflow/cx/v3beta1/response_message.proto b/google/cloud/dialogflow/cx/v3beta1/response_message.proto index 7a9f9650..1627520e 100644 --- a/google/cloud/dialogflow/cx/v3beta1/response_message.proto +++ b/google/cloud/dialogflow/cx/v3beta1/response_message.proto @@ -113,6 +113,25 @@ message ResponseMessage { bool allow_playback_interruption = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } + // Indicates that interaction with the Dialogflow agent has ended. + // This message is generated by Dialogflow only and not supposed to be + // defined by the user. + message EndInteraction { + + } + + // Specifies an audio clip to be played by the client as part of the response. + message PlayAudio { + // Required. URI of the audio clip. Dialogflow does not impose any validation on this + // value. It is specific to the client that reads it. + string audio_uri = 1 [(google.api.field_behavior) = REQUIRED]; + + // Output only. Whether the playback of this message can be interrupted by the end + // user's speech and the client can then starts the next Dialogflow + // request. + bool allow_playback_interruption = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; + } + // Represents an audio message that is composed of both segments // synthesized from the Dialogflow agent prompts and ones hosted externally // at the specified URIs. @@ -144,25 +163,6 @@ message ResponseMessage { repeated Segment segments = 1; } - // Indicates that interaction with the Dialogflow agent has ended. - // This message is generated by Dialogflow only and not supposed to be - // defined by the user. - message EndInteraction { - - } - - // Specifies an audio clip to be played by the client as part of the response. - message PlayAudio { - // Required. URI of the audio clip. Dialogflow does not impose any validation on this - // value. It is specific to the client that reads it. - string audio_uri = 1 [(google.api.field_behavior) = REQUIRED]; - - // Output only. Whether the playback of this message can be interrupted by the end - // user's speech and the client can then starts the next Dialogflow - // request. - bool allow_playback_interruption = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; - } - // Required. The rich response message. oneof message { // Returns a text response. diff --git a/google/cloud/dialogflow/cx/v3beta1/test_case.proto b/google/cloud/dialogflow/cx/v3beta1/test_case.proto new file mode 100644 index 00000000..c0c1eae6 --- /dev/null +++ b/google/cloud/dialogflow/cx/v3beta1/test_case.proto @@ -0,0 +1,835 @@ +// 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.cloud.dialogflow.cx.v3beta1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/cloud/dialogflow/cx/v3beta1/flow.proto"; +import "google/cloud/dialogflow/cx/v3beta1/intent.proto"; +import "google/cloud/dialogflow/cx/v3beta1/page.proto"; +import "google/cloud/dialogflow/cx/v3beta1/response_message.proto"; +import "google/cloud/dialogflow/cx/v3beta1/session.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/struct.proto"; +import "google/protobuf/timestamp.proto"; +import "google/rpc/status.proto"; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3Beta1"; +option go_package = "google.golang.org/genproto/googleapis/cloud/dialogflow/cx/v3beta1;cx"; +option java_multiple_files = true; +option java_outer_classname = "TestCaseProto"; +option java_package = "com.google.cloud.dialogflow.cx.v3beta1"; +option objc_class_prefix = "DF"; + +// Service for managing [Test Cases][google.cloud.dialogflow.cx.v3beta1.TestCase] and +// [Test Case Results][google.cloud.dialogflow.cx.v3beta1.TestCaseResult]. +service TestCases { + option (google.api.default_host) = "dialogflow.googleapis.com"; + option (google.api.oauth_scopes) = + "https://www.googleapis.com/auth/cloud-platform," + "https://www.googleapis.com/auth/dialogflow"; + + // Fetches a list of test cases for a given agent. + rpc ListTestCases(ListTestCasesRequest) returns (ListTestCasesResponse) { + option (google.api.http) = { + get: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases" + }; + option (google.api.method_signature) = "parent"; + } + + // Batch deletes test cases. + rpc BatchDeleteTestCases(BatchDeleteTestCasesRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases:batchDelete" + body: "*" + }; + option (google.api.method_signature) = "parent"; + } + + // Gets a test case. + rpc GetTestCase(GetTestCaseRequest) returns (TestCase) { + option (google.api.http) = { + get: "/v3beta1/{name=projects/*/locations/*/agents/*/testCases/*}" + }; + option (google.api.method_signature) = "name"; + } + + // Creates a test case for the given agent. + rpc CreateTestCase(CreateTestCaseRequest) returns (TestCase) { + option (google.api.http) = { + post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases" + body: "test_case" + }; + option (google.api.method_signature) = "parent,test_case"; + } + + // Updates the specified test case. + rpc UpdateTestCase(UpdateTestCaseRequest) returns (TestCase) { + option (google.api.http) = { + patch: "/v3beta1/{test_case.name=projects/*/locations/*/agents/*/testCases/*}" + body: "test_case" + }; + option (google.api.method_signature) = "test_case,update_mask"; + } + + // Kicks off a test case run. + rpc RunTestCase(RunTestCaseRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v3beta1/projects/*/locations/*/agents/*/testCases:run" + body: "*" + }; + option (google.longrunning.operation_info) = { + response_type: "RunTestCaseResponse" + metadata_type: "RunTestCaseMetadata" + }; + } + + // Kicks off a batch run of test cases. + rpc BatchRunTestCases(BatchRunTestCasesRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases:batchRun" + body: "*" + }; + option (google.longrunning.operation_info) = { + response_type: "BatchRunTestCasesResponse" + metadata_type: "BatchRunTestCasesMetadata" + }; + } + + // Calculates the test coverage for an agent. + rpc CalculateCoverage(CalculateCoverageRequest) returns (CalculateCoverageResponse) { + option (google.api.http) = { + get: "/v3beta1/{agent=projects/*/locations/*/agents/*}/testCases:calculateCoverage" + }; + } + + // Imports the test cases from a Cloud Storage bucket or a local file. It + // always creates new test cases and won't overwite any existing ones. The + // provided ID in the imported test case is neglected. + rpc ImportTestCases(ImportTestCasesRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases:import" + body: "*" + }; + option (google.longrunning.operation_info) = { + response_type: "ImportTestCasesResponse" + metadata_type: "ImportTestCasesMetadata" + }; + } + + // Exports the test cases under the agent to a Cloud Storage bucket or a local + // file. Filter can be applied to export a subset of test cases. + rpc ExportTestCases(ExportTestCasesRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v3beta1/{parent=projects/*/locations/*/agents/*}/testCases:export" + body: "*" + }; + option (google.longrunning.operation_info) = { + response_type: "ExportTestCasesResponse" + metadata_type: "ExportTestCasesMetadata" + }; + } + + // Fetches a list of results for a given test case. + rpc ListTestCaseResults(ListTestCaseResultsRequest) returns (ListTestCaseResultsResponse) { + option (google.api.http) = { + get: "/v3beta1/{parent=projects/*/locations/*/agents/*/testCases/*}/results" + }; + option (google.api.method_signature) = "parent"; + } +} + +// Represents a test case. +message TestCase { + option (google.api.resource) = { + type: "dialogflow.googleapis.com/TestCase" + pattern: "projects/{project}/locations/{location}/agents/{agent}/testCases/{test_case}" + }; + + // The unique identifier of the test case. + // [TestCases.CreateTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.CreateTestCase] will populate the name automatically. + // Otherwise use format: `projects//locations//agents/ + // /testCases/`. + string name = 1; + + // Tags are short descriptions that users may apply to test cases for + // organizational and filtering purposes. Each tag should start with "#" and + // has a limit of 30 characters. + repeated string tags = 2; + + // Required. The human-readable name of the test case, unique within the agent. Limit of + // 200 characters. + string display_name = 3 [(google.api.field_behavior) = REQUIRED]; + + // Additional freeform notes about the test case. Limit of 400 characters. + string notes = 4; + + // Config for the test case. + TestConfig test_config = 13; + + // The conversation turns uttered when the test case was created, in + // chronological order. These include the canonical set of agent utterances + // that should occur when the agent is working properly. + repeated ConversationTurn test_case_conversation_turns = 5; + + // Output only. When the test was created. + google.protobuf.Timestamp creation_time = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The latest test result. + TestCaseResult last_test_result = 12; +} + +// Represents a result from running a test case in an agent environment. +message TestCaseResult { + option (google.api.resource) = { + type: "dialogflow.googleapis.com/TestCaseResult" + pattern: "projects/{project}/locations/{location}/agents/{agent}/testCases/{test_case}/results/{result}" + }; + + // The resource name for the test case result. Format: + // `projects//locations//agents//testCases/ + // /results/`. + string name = 1; + + // Optional. Environment where the test was run. If not set, it indicates the draft + // environment. + string environment = 2 [ + (google.api.field_behavior) = OPTIONAL, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Environment" + } + ]; + + // The conversation turns uttered during the test case replay in chronological + // order. + repeated ConversationTurn conversation_turns = 3; + + // Whether the test case passed in the agent environment. + TestResult test_result = 4; + + // The time that the test was run. + google.protobuf.Timestamp test_time = 5; +} + +// Represents configurations for a test case. +message TestConfig { + // Session parameters to be compared when calculating differences. + repeated string tracking_parameters = 1; + + // Flow name. If not set, default start flow is assumed. + // Format: `projects//locations//agents//flows/`. + string flow = 2 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Flow" + }]; +} + +// One interaction between a human and virtual agent. The human provides some +// input and the virtual agent provides a response. +message ConversationTurn { + // The input from the human user. + message UserInput { + // Supports [text input][google.cloud.dialogflow.cx.v3beta1.QueryInput.text], [event input][google.cloud.dialogflow.cx.v3beta1.QueryInput.event], + // [dtmf input][google.cloud.dialogflow.cx.v3beta1.QueryInput.dtmf] in the test case. + QueryInput input = 5; + + // Parameters that need to be injected into the conversation during intent + // detection. + google.protobuf.Struct injected_parameters = 2; + + // If webhooks should be allowed to trigger in response to the user + // utterance. Often if parameters are injected, webhooks should not be + // enabled. + bool is_webhook_enabled = 3; + } + + // The output from the virtual agent. + message VirtualAgentOutput { + // The session parameters available to the bot at this point. + google.protobuf.Struct session_parameters = 4; + + // Output only. If this is part of a [result conversation + // turn][TestCaseResult.conversation_turns], the list of differences + // between the original run and the replay for this output, if any. + repeated TestRunDifference differences = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Required. Input only. The diagnostic + // [info][Session.DetectIntentResponse.QueryResult.diagnostic_info] + // output for the turn. + google.protobuf.Struct diagnostic_info = 6 [ + (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = INPUT_ONLY + ]; + + // The [Intent][google.cloud.dialogflow.cx.v3beta1.Intent] that triggered the response. Only some fields such as + // name and displayname will be set. + Intent triggered_intent = 7; + + // The [Page][google.cloud.dialogflow.cx.v3beta1.Page] on which the utterance was spoken. Only some fields such as + // name and displayname will be set. + Page current_page = 8; + + // The [text][google.cloud.dialogflow.cx.v3beta1.ResponseMessage.Text] responses from the agent for the turn. + repeated ResponseMessage.Text text_responses = 9; + + // Response error from the agent in the test result. If set, other output + // is empty. + google.rpc.Status status = 10; + } + + // The user input. + UserInput user_input = 1; + + // The virtual agent output. + VirtualAgentOutput virtual_agent_output = 2; +} + +// The description of differences between original and replayed agent output. +message TestRunDifference { + // What part of the message replay differs from the test case. + enum DiffType { + // Should never be used. + DIFF_TYPE_UNSPECIFIED = 0; + + // The intent. + INTENT = 1; + + // The page. + PAGE = 2; + + // The parameters. + PARAMETERS = 3; + + // The message utterance. + UTTERANCE = 4; + } + + // The type of diff. + DiffType type = 1; + + // A description of the diff, showing the actual output vs expected output. + string description = 2; +} + +// Transition coverage represents the percentage of all possible transitions +// present within any of a parent's test cases. +message TransitionCoverage { + // The source or target of a transition. + message TransitionNode { + // A TransitionNode can be either a page or a flow. + oneof kind { + // Indicates a transition to a [Page][google.cloud.dialogflow.cx.v3beta1.Page]. Only some fields such as name and + // displayname will be set. + Page page = 1; + + // Indicates a transition to a [Flow][google.cloud.dialogflow.cx.v3beta1.Flow]. Only some fields such as name and + // displayname will be set. + Flow flow = 2; + } + } + + // A transition in the agent's graph. + message Transition { + // The start node of a transition. + TransitionNode source = 1; + + // The index of a transition in the transition list. Starting from 0. + int32 index = 4; + + // The end node of a transition. + TransitionNode target = 2; + + // Whether or not the transition is covered by at least one of the + // agent's test cases. + bool covered = 3; + + // The detailed transition. + oneof detail { + // Intent route or condition route. + TransitionRoute transition_route = 5; + + // Event handler. + EventHandler event_handler = 6; + } + } + + // The list of Transitions present in the agent. + repeated Transition transitions = 1; + + // The percent of transitions in the agent that are covered. + float coverage_score = 2; +} + +// Intent coverage represents the percentage of all possible intents in the +// agent that are triggered in any of a parent's test cases. +message IntentCoverage { + // The agent's intent. + message Intent { + // The intent full resource name + string intent = 1 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Intent" + }]; + + // Whether or not the intent is covered by at least one of the agent's + // test cases. + bool covered = 2; + } + + // The list of Intents present in the agent + repeated Intent intents = 1; + + // The percent of intents in the agent that are covered. + float coverage_score = 2; +} + +// The request message for [TestCases.CalculateCoverage][google.cloud.dialogflow.cx.v3beta1.TestCases.CalculateCoverage]. +message CalculateCoverageRequest { + // The type of coverage score requested. + enum CoverageType { + // Should never be used. + COVERAGE_TYPE_UNSPECIFIED = 0; + + // Intent coverage. + INTENT = 1; + + // Page transition coverage + PAGE_TRANSITION = 2; + } + + // Required. The agent to calculate coverage for. + // Format: `projects//locations//agents/`. + string agent = 3 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Agent" + } + ]; + + // Required. The type of coverage requested. + CoverageType type = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// The response message for [TestCases.CalculateCoverage][google.cloud.dialogflow.cx.v3beta1.TestCases.CalculateCoverage]. +message CalculateCoverageResponse { + // The agent to calculate coverage for. + // Format: `projects//locations//agents/`. + string agent = 5 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Agent" + }]; + + // The type of coverage requested. + oneof coverage_type { + // Intent coverage. + IntentCoverage intent_coverage = 2; + + // Transition coverage. + TransitionCoverage transition_coverage = 4; + } +} + +// The request message for [TestCases.ListTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ListTestCases]. +message ListTestCasesRequest { + // Specifies how much test case information to include in the response. + enum TestCaseView { + // The default / unset value. + // The API will default to the BASIC view. + TEST_CASE_VIEW_UNSPECIFIED = 0; + + // Include basic metadata about the test case, but not the conversation + // turns. This is the default value. + BASIC = 1; + + // Include everything. + FULL = 2; + } + + // Required. The agent to list all pages for. + // Format: `projects//locations//agents/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // The maximum number of items to return in a single page. By default 20. + // Note that when TestCaseView = FULL, the maximum page size allowed is 20. + // When TestCaseView = BASIC, the maximum page size allowed is 500. + int32 page_size = 2; + + // The next_page_token value returned from a previous list request. + string page_token = 3; + + // Specifies whether response should include all fields or just the metadata. + TestCaseView view = 4; +} + +// The response message for [TestCases.ListTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ListTestCases]. +message ListTestCasesResponse { + // The list of test cases. There will be a maximum number of items returned + // based on the page_size field in the request. + repeated TestCase test_cases = 1; + + // Token to retrieve the next page of results, or empty if there are no more + // results in the list. + string next_page_token = 2; +} + +// The request message for [TestCases.BatchDeleteTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.BatchDeleteTestCases]. +message BatchDeleteTestCasesRequest { + // Required. The agent to delete test cases from. + // Format: `projects//locations//agents/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // Required. Format of test case names: `projects//locations/ + // /agents//testCases/`. + repeated string names = 3 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + } + ]; +} + +// The request message for [TestCases.CreateTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.CreateTestCase]. +message CreateTestCaseRequest { + // Required. The agent to create the test case for. + // Format: `projects//locations//agents/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // Required. The test case to create. + TestCase test_case = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// The request message for [TestCases.UpdateTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.UpdateTestCase]. +message UpdateTestCaseRequest { + // Required. The test case to update. + TestCase test_case = 1 [(google.api.field_behavior) = REQUIRED]; + + // Required. The mask to specify which fields should be updated. Only a test case's + // metadata and replayed_conversation_turns may be updated. The original + // test_case_conversation_turns may not be updated. + google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// The request message for [TestCases.GetTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.GetTestCase]. +message GetTestCaseRequest { + // Required. The name of the testcase. + // Format: `projects//locations//agents//testCases/`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + } + ]; +} + +// The request message for [TestCases.RunTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.RunTestCase]. +message RunTestCaseRequest { + // Required. Format of test case name to run: `projects//locations/ + // /agents//testCases/`. + string name = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // Optional. Environment name. If not set, draft environment is assumed. + // Format: `projects//locations//agents//environments/`. + string environment = 2 [ + (google.api.field_behavior) = OPTIONAL, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Environment" + } + ]; +} + +// The response message for [TestCases.RunTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.RunTestCase]. +message RunTestCaseResponse { + // The result. + TestCaseResult result = 2; +} + +// Metadata returned for the [TestCases.RunTestCase][google.cloud.dialogflow.cx.v3beta1.TestCases.RunTestCase] long running operation. +message RunTestCaseMetadata { + +} + +// The request message for [TestCases.BatchRunTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.BatchRunTestCases]. +message BatchRunTestCasesRequest { + // Required. Agent name. Format: `projects//locations//agents/ + // `. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // Optional. If not set, draft environment is assumed. Format: `projects//locations//agents//environments/`. + string environment = 2 [ + (google.api.field_behavior) = OPTIONAL, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/Environment" + } + ]; + + // Required. Format: `projects//locations//agents//testCases/`. + repeated string test_cases = 3 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + } + ]; +} + +// The response message for [TestCases.BatchRunTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.BatchRunTestCases]. +message BatchRunTestCasesResponse { + // The test case results. The detailed + // [conversation turns][google.cloud.dialogflow.cx.v3beta1.TestCaseResult.conversation_turns] are empty in this + // response. + repeated TestCaseResult results = 1; +} + +// Metadata returned for the [TestCases.BatchRunTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.BatchRunTestCases] long running +// operation. +message BatchRunTestCasesMetadata { + // The test errors. + repeated TestError errors = 1; +} + +// Error info for running a test. +message TestError { + // The test case resource name. + string test_case = 1 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + }]; + + // The status associated with the test. + google.rpc.Status status = 2; + + // The timestamp when the test was completed. + google.protobuf.Timestamp test_time = 3; +} + +// The request message for [TestCases.ImportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ImportTestCases]. +message ImportTestCasesRequest { + // Required. The agent to import test cases to. + // Format: `projects//locations//agents/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // Required. The source to import. + oneof source { + // The [Google Cloud Storage](https://cloud.google.com/storage/docs/) URI + // to import test cases from. The format of this URI must be + // `gs:///`. + string gcs_uri = 2; + + // Uncompressed raw byte content for test cases. + bytes content = 3; + } +} + +// The response message for [TestCases.ImportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ImportTestCases]. +message ImportTestCasesResponse { + // The unique identifiers of the new test cases. + // Format: `projects//locations//agents//testCases/`. + repeated string names = 1 [(google.api.resource_reference) = { + type: "dialogflow.googleapis.com/TestCase" + }]; +} + +// Metadata returned for the [TestCases.ImportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ImportTestCases] long running +// operation. +message ImportTestCasesMetadata { + // Errors for failed test cases. + repeated TestCaseError errors = 1; +} + +// Error info for importing a test. +message TestCaseError { + // The test case. + TestCase test_case = 1; + + // The status associated with the test case. + google.rpc.Status status = 2; +} + +// The request message for [TestCases.ExportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ExportTestCases]. +message ExportTestCasesRequest { + // Data format of the exported test cases. + enum DataFormat { + // Unspecified format. + DATA_FORMAT_UNSPECIFIED = 0; + + // Raw bytes. + BLOB = 1; + + // JSON format. + JSON = 2; + } + + // Required. The agent where to export test cases from. + // Format: `projects//locations//agents/`. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCase" + } + ]; + + // The destination to export. + oneof destination { + // The [Google Cloud Storage](https://cloud.google.com/storage/docs/) URI to + // export the test cases to. The format of this URI must be + // `gs:///`. If unspecified, the serialized test + // cases is returned inline. + string gcs_uri = 2; + } + + // The data format of the exported test cases. If not specified, `BLOB` is + // assumed. + DataFormat data_format = 3; + + // The filter expression used to filter exported test cases, see + // [API Filtering](https://aip.dev/160). The expression is case insensitive + // and supports the following syntax: + // + // name = [OR name = ] ... + // + // For example: + // + // * "name = t1 OR name = t2" matches the test case with the exact resource + // name "t1" or "t2". + string filter = 4; +} + +// The response message for [TestCases.ExportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ExportTestCases]. +message ExportTestCasesResponse { + // The exported test cases. + oneof destination { + // The URI to a file containing the exported test cases. This field is + // populated only if `gcs_uri` is specified in + // [ExportTestCasesRequest][google.cloud.dialogflow.cx.v3beta1.ExportTestCasesRequest]. + string gcs_uri = 1; + + // Uncompressed raw byte content for test cases. + bytes content = 2; + } +} + +// Metadata returned for the [TestCases.ExportTestCases][google.cloud.dialogflow.cx.v3beta1.TestCases.ExportTestCases] long running +// operation. +message ExportTestCasesMetadata { + +} + +// The request message for [TestCases.ListTestCaseResults][google.cloud.dialogflow.cx.v3beta1.TestCases.ListTestCaseResults]. +message ListTestCaseResultsRequest { + // Required. The test case to list results for. + // Format: `projects//locations//agents// + // testCases/`. Specify a `-` as a wildcard for TestCase ID to + // list results across multiple test cases. + string parent = 1 [ + (google.api.field_behavior) = REQUIRED, + (google.api.resource_reference) = { + child_type: "dialogflow.googleapis.com/TestCaseResult" + } + ]; + + // The maximum number of items to return in a single page. By default 100 and + // at most 1000. + int32 page_size = 2; + + // The next_page_token value returned from a previous list request. + string page_token = 3; + + // The filter expression used to filter test case results. See + // [API Filtering](https://aip.dev/160). + // + // The expression is case insensitive. Only 'AND' is supported for logical + // operators. The supported syntax is listed below in detail: + // + // [AND ] ... + // [AND latest] + // + // The supported fields and operators are: + // field operator + // `environment` `=`, `IN` (Use value `draft` for draft environment) + // `test_time` `>`, `<` + // + // `latest` only returns the latest test result in all results for each test + // case. + // + // Examples: + // * "environment=draft AND latest" matches the latest test result for each + // test case in the draft environment. + // * "environment IN (e1,e2)" matches any test case results with an + // environment resource name of either "e1" or "e2". + // * "test_time > 1602540713" matches any test case results with test time + // later than a unix timestamp in seconds 1602540713. + string filter = 4; +} + +// The response message for [TestCases.ListTestCaseResults][google.cloud.dialogflow.cx.v3beta1.TestCases.ListTestCaseResults]. +message ListTestCaseResultsResponse { + // The list of test case results. + repeated TestCaseResult test_case_results = 1; + + // Token to retrieve the next page of results, or empty if there are no more + // results in the list. + string next_page_token = 2; +} + +// The test result for a test case and an agent environment. +enum TestResult { + // Not specified. Should never be used. + TEST_RESULT_UNSPECIFIED = 0; + + // The test passed. + PASSED = 1; + + // The test did not pass. + FAILED = 2; +} diff --git a/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto b/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto index a2eed7b4..13d62fdb 100644 --- a/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto +++ b/google/cloud/dialogflow/cx/v3beta1/transition_route_group.proto @@ -102,11 +102,6 @@ message TransitionRouteGroup { string display_name = 2 [(google.api.field_behavior) = REQUIRED]; // Transition routes associated with the [TransitionRouteGroup][google.cloud.dialogflow.cx.v3beta1.TransitionRouteGroup]. - // Duplicate transition routes (i.e. using the same - // [`intent`][google.cloud.dialogflow.cx.v3beta1.TransitionRoute.intent]) are not allowed. - // - // Note that the [`name`][google.cloud.dialogflow.cx.v3beta1.TransitionRoute.name] field is not used in the - // transition route group scope. repeated TransitionRoute transition_routes = 5; } diff --git a/google/cloud/dialogflow/cx/v3beta1/validation_message.proto b/google/cloud/dialogflow/cx/v3beta1/validation_message.proto new file mode 100644 index 00000000..6c50177c --- /dev/null +++ b/google/cloud/dialogflow/cx/v3beta1/validation_message.proto @@ -0,0 +1,115 @@ +// 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.cloud.dialogflow.cx.v3beta1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3Beta1"; +option go_package = "google.golang.org/genproto/googleapis/cloud/dialogflow/cx/v3beta1;cx"; +option java_multiple_files = true; +option java_outer_classname = "ValidationMessageProto"; +option java_package = "com.google.cloud.dialogflow.cx.v3beta1"; +option objc_class_prefix = "DF"; + +// Agent/flow validation message. +message ValidationMessage { + // Resource types. + enum ResourceType { + // Unspecified. + RESOURCE_TYPE_UNSPECIFIED = 0; + + // Agent. + AGENT = 1; + + // Intent. + INTENT = 2; + + // Intent training phrase. + INTENT_TRAINING_PHRASE = 8; + + // Intent parameter. + INTENT_PARAMETER = 9; + + // Multiple intents. + INTENTS = 10; + + // Multiple training phrases. + INTENT_TRAINING_PHRASES = 11; + + // Entity type. + ENTITY_TYPE = 3; + + // Multiple entity types. + ENTITY_TYPES = 12; + + // Webhook. + WEBHOOK = 4; + + // Flow. + FLOW = 5; + + // Page. + PAGE = 6; + + // Multiple pages. + PAGES = 13; + + // Transition route group. + TRANSITION_ROUTE_GROUP = 7; + } + + // Severity level. + enum Severity { + // Unspecified. + SEVERITY_UNSPECIFIED = 0; + + // The agent doesn't follow Dialogflow best practices. + INFO = 1; + + // The agent may not behave as expected. + WARNING = 2; + + // The agent may experience failures. + ERROR = 3; + } + + // The type of the resources where the message is found. + ResourceType resource_type = 1; + + // The names of the resources where the message is found. + repeated string resources = 2 [deprecated = true]; + + // The resource names of the resources where the message is found. + repeated ResourceName resource_names = 6; + + // Indicates the severity of the message. + Severity severity = 3; + + // The message detail. + string detail = 4; +} + +// Resource name and display name. +message ResourceName { + // Name. + string name = 1; + + // Display name. + string display_name = 2; +} diff --git a/google/cloud/dialogflow/cx/v3beta1/webhook.proto b/google/cloud/dialogflow/cx/v3beta1/webhook.proto index e813bf30..3439bd49 100644 --- a/google/cloud/dialogflow/cx/v3beta1/webhook.proto +++ b/google/cloud/dialogflow/cx/v3beta1/webhook.proto @@ -33,6 +33,10 @@ option java_multiple_files = true; option java_outer_classname = "WebhookProto"; option java_package = "com.google.cloud.dialogflow.cx.v3beta1"; option objc_class_prefix = "DF"; +option (google.api.resource_definition) = { + type: "servicedirectory.googleapis.com/Service" + pattern: "projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}" +}; // Service for managing [Webhooks][google.cloud.dialogflow.cx.v3beta1.Webhook]. service Webhooks { @@ -424,9 +428,11 @@ message PageInfo { message SessionInfo { // Always present for [WebhookRequest][google.cloud.dialogflow.cx.v3beta1.WebhookRequest]. Ignored for [WebhookResponse][google.cloud.dialogflow.cx.v3beta1.WebhookResponse]. // The unique identifier of the [session][google.cloud.dialogflow.cx.v3beta1.DetectIntentRequest.session]. This - // field can be used by the webhook to identify a user. + // field can be used by the webhook to identify a session. // Format: `projects//locations//agents//sessions/`. + // ID>/sessions/` or `projects//locations//agents//environments//sessions/` + // if environment is specified. string session = 1 [(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Session" }];