// Copyright 2021 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.v3; import "google/api/resource.proto"; import "google/cloud/dialogflow/cx/v3/advanced_settings.proto"; import "google/cloud/dialogflow/cx/v3/response_message.proto"; import "google/protobuf/struct.proto"; import "google/api/annotations.proto"; option cc_enable_arenas = true; option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3"; option go_package = "google.golang.org/genproto/googleapis/cloud/dialogflow/cx/v3;cx"; option java_multiple_files = true; option java_outer_classname = "FulfillmentProto"; option java_package = "com.google.cloud.dialogflow.cx.v3"; option objc_class_prefix = "DF"; option ruby_package = "Google::Cloud::Dialogflow::CX::V3"; // A fulfillment can do one or more of the following actions at the same time: // // * Generate rich message responses. // * Set parameter values. // * Call the webhook. // // Fulfillments can be called at various stages in the [Page][google.cloud.dialogflow.cx.v3.Page] or // [Form][google.cloud.dialogflow.cx.v3.Form] lifecycle. For example, when a [DetectIntentRequest][google.cloud.dialogflow.cx.v3.DetectIntentRequest] drives a // session to enter a new page, the page's entry fulfillment can add a static // response to the [QueryResult][google.cloud.dialogflow.cx.v3.QueryResult] in the returning [DetectIntentResponse][google.cloud.dialogflow.cx.v3.DetectIntentResponse], // call the webhook (for example, to load user data from a database), or both. message Fulfillment { // Setting a parameter value. message SetParameterAction { // Display name of the parameter. string parameter = 1; // The new value of the parameter. A null value clears the parameter. google.protobuf.Value value = 2; } // A list of cascading if-else conditions. Cases are mutually exclusive. // The first one with a matching condition is selected, all the rest ignored. message ConditionalCases { // Each case has a Boolean condition. When it is evaluated to be True, the // corresponding messages will be selected and evaluated recursively. message Case { // The list of messages or conditional cases to activate for this case. message CaseContent { // Either a message is returned or additional cases to be evaluated. oneof cases_or_message { // Returned message. ResponseMessage message = 1; // Additional cases to be evaluated. ConditionalCases additional_cases = 2; } } // The condition to activate and select this case. Empty means the // condition is always true. The condition is evaluated against [form // parameters][Form.parameters] or [session // parameters][SessionInfo.parameters]. // // See the [conditions // reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). string condition = 1; // A list of case content. repeated CaseContent case_content = 2; } // A list of cascading if-else conditions. repeated Case cases = 1; } // The list of rich message responses to present to the user. repeated ResponseMessage messages = 1; // The webhook to call. // Format: `projects//locations//agents//webhooks/`. string webhook = 2 [(google.api.resource_reference) = { type: "dialogflow.googleapis.com/Webhook" }]; // Whether Dialogflow should return currently queued fulfillment response // messages in streaming APIs. If a webhook is specified, it happens before // Dialogflow invokes webhook. // Warning: // 1) This flag only affects streaming API. Responses are still queued // and returned once in non-streaming API. // 2) The flag can be enabled in any fulfillment but only the first 3 partial // responses will be returned. You may only want to apply it to fulfillments // that have slow webhooks. bool return_partial_responses = 8; // The tag used by the webhook to identify which fulfillment is being called. // This field is required if `webhook` is specified. string tag = 3; // Set parameter values before executing the webhook. repeated SetParameterAction set_parameter_actions = 4; // Conditional cases for this fulfillment. repeated ConditionalCases conditional_cases = 5; }