// Copyright 2019 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.v2; import "google/api/annotations.proto"; import "google/api/resource.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/struct.proto"; option cc_enable_arenas = true; option csharp_namespace = "Google.Cloud.Dialogflow.V2"; option go_package = "google.golang.org/genproto/googleapis/cloud/dialogflow/v2;dialogflow"; option java_multiple_files = true; option java_outer_classname = "AgentProto"; option java_package = "com.google.cloud.dialogflow.v2"; option objc_class_prefix = "DF"; // Agents are best described as Natural Language Understanding (NLU) modules // that transform user requests into actionable data. You can include agents // 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.v2.Intents], [Contexts][google.cloud.dialogflow.v2.Contexts], // [Entity Types][google.cloud.dialogflow.v2.EntityTypes], [Webhooks][google.cloud.dialogflow.v2.WebhookRequest], and so on to // manage the flow of a conversation and match user input to predefined intents // and actions. // // You can create an agent using both Dialogflow Standard Edition and // Dialogflow Enterprise Edition. For details, see // [Dialogflow // Editions](https://cloud.google.com/dialogflow-enterprise/docs/editions). // // You can save your agent for backup or versioning by exporting the agent by // using the [ExportAgent][google.cloud.dialogflow.v2.Agents.ExportAgent] method. You can import a saved // agent by using the [ImportAgent][google.cloud.dialogflow.v2.Agents.ImportAgent] method. // // Dialogflow provides several // [prebuilt // agents](https://cloud.google.com/dialogflow-enterprise/docs/agents-prebuilt) // for common conversation scenarios such as determining a date and time, // converting currency, and so on. // // For more information about agents, see the // [Dialogflow // documentation](https://cloud.google.com/dialogflow-enterprise/docs/agents-overview). service Agents { // Retrieves the specified agent. rpc GetAgent(GetAgentRequest) returns (Agent) { option (google.api.http) = { get: "/v2/{parent=projects/*}/agent" }; } // Returns the list of agents. // // Since there is at most one conversational agent per project, this method is // useful primarily for listing all agents across projects the caller has // access to. One can achieve that with a wildcard project collection id "-". // Refer to [List // Sub-Collections](https://cloud.google.com/apis/design/design_patterns#list_sub-collections). rpc SearchAgents(SearchAgentsRequest) returns (SearchAgentsResponse) { option (google.api.http) = { get: "/v2/{parent=projects/*}/agent:search" }; } // Trains the specified agent. // // Operation rpc TrainAgent(TrainAgentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{parent=projects/*}/agent:train" body: "*" }; } // Exports the specified agent to a ZIP file. // // Operation rpc ExportAgent(ExportAgentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{parent=projects/*}/agent:export" body: "*" }; } // Imports the specified agent from a ZIP file. // // Uploads new intents and entity types without deleting the existing ones. // Intents and entity types with the same name are replaced with the new // versions from ImportAgentRequest. // // Operation rpc ImportAgent(ImportAgentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{parent=projects/*}/agent:import" body: "*" }; } // Restores the specified agent from a ZIP file. // // Replaces the current agent version with a new one. All the intents and // entity types in the older version are deleted. // // Operation rpc RestoreAgent(RestoreAgentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v2/{parent=projects/*}/agent:restore" body: "*" }; } } // Represents a conversational agent. message Agent { // Match mode determines how intents are detected from user queries. enum MatchMode { // Not specified. MATCH_MODE_UNSPECIFIED = 0; // Best for agents with a small number of examples in intents and/or wide // use of templates syntax and composite entities. MATCH_MODE_HYBRID = 1; // Can be used for agents with a large number of examples in intents, // especially the ones using @sys.any or very large developer entities. MATCH_MODE_ML_ONLY = 2; } // Required. The project of this agent. // Format: `projects/`. string parent = 1; // Required. The name of this agent. string display_name = 2; // Required. The default language of the agent as a language tag. See // [Language // Support](https://cloud.google.com/dialogflow-enterprise/docs/reference/language) // for a list of the currently supported language codes. This field cannot be // set by the `Update` method. string default_language_code = 3; // Optional. The list of all languages supported by this agent (except for the // `default_language_code`). repeated string supported_language_codes = 4; // Required. The time zone of this agent from the // [time zone database](https://www.iana.org/time-zones), e.g., // America/New_York, Europe/Paris. string time_zone = 5; // Optional. The description of this agent. // The maximum length is 500 characters. If exceeded, the request is rejected. string description = 6; // Optional. The URI of the agent's avatar. // Avatars are used throughout the Dialogflow console and in the self-hosted // [Web // Demo](https://cloud.google.com/dialogflow-enterprise/docs/integrations/web-demo) // integration. string avatar_uri = 7; // Optional. Determines whether this agent should log conversation queries. bool enable_logging = 8; // Optional. Determines how intents are detected from user queries. MatchMode match_mode = 9; // Optional. To filter out false positive results and still get variety in // matched natural language inputs for your agent, you can tune the machine // learning classification threshold. If the returned score value is less than // the threshold value, then a fallback intent will be triggered or, if there // are no fallback intents defined, no intent will be triggered. The score // values range from 0.0 (completely uncertain) to 1.0 (completely certain). // If set to 0.0, the default of 0.3 is used. float classification_threshold = 10; } // The request message for [Agents.GetAgent][google.cloud.dialogflow.v2.Agents.GetAgent]. message GetAgentRequest { // Required. The project that the agent to fetch is associated with. // Format: `projects/`. string parent = 1; } // The request message for [Agents.SearchAgents][google.cloud.dialogflow.v2.Agents.SearchAgents]. message SearchAgentsRequest { // Required. The project to list agents from. // Format: `projects/`. string parent = 1; // Optional. The maximum number of items to return in a single page. By // default 100 and at most 1000. int32 page_size = 2; // Optional. The next_page_token value returned from a previous list request. string page_token = 3; } // The response message for [Agents.SearchAgents][google.cloud.dialogflow.v2.Agents.SearchAgents]. message SearchAgentsResponse { // The list of agents. There will be a maximum number of items returned based // on the page_size field in the request. repeated Agent agents = 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 [Agents.TrainAgent][google.cloud.dialogflow.v2.Agents.TrainAgent]. message TrainAgentRequest { // Required. The project that the agent to train is associated with. // Format: `projects/`. string parent = 1; } // The request message for [Agents.ExportAgent][google.cloud.dialogflow.v2.Agents.ExportAgent]. message ExportAgentRequest { // Required. The project that the agent to export is associated with. // Format: `projects/`. string parent = 1; // 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; } // The response message for [Agents.ExportAgent][google.cloud.dialogflow.v2.Agents.ExportAgent]. message ExportAgentResponse { // Required. 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`. string agent_uri = 1; // The exported agent. // // Example for how to export an agent to a zip file via a command line: //
curl \
    //   'https://dialogflow.googleapis.com/v2/projects/<project_name>/agent:export'\
    //   -X POST \
    //   -H 'Authorization: Bearer '$(gcloud auth application-default
    //   print-access-token) \
    //   -H 'Accept: application/json' \
    //   -H 'Content-Type: application/json' \
    //   --compressed \
    //   --data-binary '{}' \
    // | grep agentContent | sed -e 's/.*"agentContent": "\([^"]*\)".*/\1/' \
    // | base64 --decode > <agent zip file>
bytes agent_content = 2; } } // The request message for [Agents.ImportAgent][google.cloud.dialogflow.v2.Agents.ImportAgent]. message ImportAgentRequest { // Required. The project that the agent to import is associated with. // Format: `projects/`. string parent = 1; // Required. The agent to import. oneof agent { // The URI to a Google Cloud Storage file containing the agent to import. // Note: The URI must start with "gs://". string agent_uri = 2; // The agent to import. // // Example for how to import an agent via the command line: //
curl \
    //   'https://dialogflow.googleapis.com/v2/projects/<project_name>/agent:import\
    //    -X POST \
    //    -H 'Authorization: Bearer '$(gcloud auth application-default
    //    print-access-token) \
    //    -H 'Accept: application/json' \
    //    -H 'Content-Type: application/json' \
    //    --compressed \
    //    --data-binary "{
    //       'agentContent': '$(cat <agent zip file> | base64 -w 0)'
    //    }"
bytes agent_content = 3; } } // The request message for [Agents.RestoreAgent][google.cloud.dialogflow.v2.Agents.RestoreAgent]. message RestoreAgentRequest { // Required. The project that the agent to restore is associated with. // Format: `projects/`. string parent = 1; // Required. The agent to restore. oneof agent { // The URI to a Google Cloud Storage file containing the agent to restore. // Note: The URI must start with "gs://". string agent_uri = 2; // The agent to restore. // // Example for how to restore an agent via the command line: //
curl \
    //   'https://dialogflow.googleapis.com/v2/projects/<project_name>/agent:restore\
    //    -X POST \
    //    -H 'Authorization: Bearer '$(gcloud auth application-default
    //    print-access-token) \
    //    -H 'Accept: application/json' \
    //    -H 'Content-Type: application/json' \
    //    --compressed \
    //    --data-binary "{
    //        'agentContent': '$(cat <agent zip file> | base64 -w 0)'
    //    }"
bytes agent_content = 3; } }