xref: /aosp_15_r20/external/googleapis/google/cloud/dialogflow/cx/v3/webhook.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.cloud.dialogflow.cx.v3;
18
19import "google/api/annotations.proto";
20import "google/api/client.proto";
21import "google/api/field_behavior.proto";
22import "google/api/resource.proto";
23import "google/cloud/dialogflow/cx/v3/response_message.proto";
24import "google/protobuf/duration.proto";
25import "google/protobuf/empty.proto";
26import "google/protobuf/field_mask.proto";
27import "google/protobuf/struct.proto";
28
29option cc_enable_arenas = true;
30option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3";
31option go_package = "cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb";
32option java_multiple_files = true;
33option java_outer_classname = "WebhookProto";
34option java_package = "com.google.cloud.dialogflow.cx.v3";
35option objc_class_prefix = "DF";
36option ruby_package = "Google::Cloud::Dialogflow::CX::V3";
37option (google.api.resource_definition) = {
38  type: "servicedirectory.googleapis.com/Service"
39  pattern: "projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}"
40};
41
42// Service for managing [Webhooks][google.cloud.dialogflow.cx.v3.Webhook].
43service Webhooks {
44  option (google.api.default_host) = "dialogflow.googleapis.com";
45  option (google.api.oauth_scopes) =
46      "https://www.googleapis.com/auth/cloud-platform,"
47      "https://www.googleapis.com/auth/dialogflow";
48
49  // Returns the list of all webhooks in the specified agent.
50  rpc ListWebhooks(ListWebhooksRequest) returns (ListWebhooksResponse) {
51    option (google.api.http) = {
52      get: "/v3/{parent=projects/*/locations/*/agents/*}/webhooks"
53    };
54    option (google.api.method_signature) = "parent";
55  }
56
57  // Retrieves the specified webhook.
58  rpc GetWebhook(GetWebhookRequest) returns (Webhook) {
59    option (google.api.http) = {
60      get: "/v3/{name=projects/*/locations/*/agents/*/webhooks/*}"
61    };
62    option (google.api.method_signature) = "name";
63  }
64
65  // Creates a webhook in the specified agent.
66  rpc CreateWebhook(CreateWebhookRequest) returns (Webhook) {
67    option (google.api.http) = {
68      post: "/v3/{parent=projects/*/locations/*/agents/*}/webhooks"
69      body: "webhook"
70    };
71    option (google.api.method_signature) = "parent,webhook";
72  }
73
74  // Updates the specified webhook.
75  rpc UpdateWebhook(UpdateWebhookRequest) returns (Webhook) {
76    option (google.api.http) = {
77      patch: "/v3/{webhook.name=projects/*/locations/*/agents/*/webhooks/*}"
78      body: "webhook"
79    };
80    option (google.api.method_signature) = "webhook,update_mask";
81  }
82
83  // Deletes the specified webhook.
84  rpc DeleteWebhook(DeleteWebhookRequest) returns (google.protobuf.Empty) {
85    option (google.api.http) = {
86      delete: "/v3/{name=projects/*/locations/*/agents/*/webhooks/*}"
87    };
88    option (google.api.method_signature) = "name";
89  }
90}
91
92// Webhooks host the developer's business logic. During a session, webhooks
93// allow the developer to use the data extracted by Dialogflow's natural
94// language processing to generate dynamic responses, validate collected data,
95// or trigger actions on the backend.
96message Webhook {
97  option (google.api.resource) = {
98    type: "dialogflow.googleapis.com/Webhook"
99    pattern: "projects/{project}/locations/{location}/agents/{agent}/webhooks/{webhook}"
100  };
101
102  // Represents configuration for a generic web service.
103  message GenericWebService {
104    // Represents the type of webhook configuration.
105    enum WebhookType {
106      // Default value. This value is unused.
107      WEBHOOK_TYPE_UNSPECIFIED = 0;
108
109      // Represents a standard webhook.
110      STANDARD = 1;
111
112      // Represents a flexible webhook.
113      FLEXIBLE = 2;
114    }
115
116    // HTTP method to use when calling webhooks.
117    enum HttpMethod {
118      // HTTP method not specified.
119      HTTP_METHOD_UNSPECIFIED = 0;
120
121      // HTTP POST Method.
122      POST = 1;
123
124      // HTTP GET Method.
125      GET = 2;
126
127      // HTTP HEAD Method.
128      HEAD = 3;
129
130      // HTTP PUT Method.
131      PUT = 4;
132
133      // HTTP DELETE Method.
134      DELETE = 5;
135
136      // HTTP PATCH Method.
137      PATCH = 6;
138
139      // HTTP OPTIONS Method.
140      OPTIONS = 7;
141    }
142
143    // Required. The webhook URI for receiving POST requests. It must use https
144    // protocol.
145    string uri = 1 [(google.api.field_behavior) = REQUIRED];
146
147    // The user name for HTTP Basic authentication.
148    string username = 2 [deprecated = true];
149
150    // The password for HTTP Basic authentication.
151    string password = 3 [deprecated = true];
152
153    // The HTTP request headers to send together with webhook
154    // requests.
155    map<string, string> request_headers = 4;
156
157    // Optional. Specifies a list of allowed custom CA certificates (in DER
158    // format) for HTTPS verification. This overrides the default SSL trust
159    // store. If this is empty or unspecified, Dialogflow will use Google's
160    // default trust store to verify certificates. N.B. Make sure the HTTPS
161    // server certificates are signed with "subject alt name". For instance a
162    // certificate can be self-signed using the following command,
163    // ```
164    //    openssl x509 -req -days 200 -in example.com.csr \
165    //      -signkey example.com.key \
166    //      -out example.com.crt \
167    //      -extfile <(printf "\nsubjectAltName='DNS:www.example.com'")
168    // ```
169    repeated bytes allowed_ca_certs = 5
170        [(google.api.field_behavior) = OPTIONAL];
171
172    // Optional. Type of the webhook.
173    WebhookType webhook_type = 6 [(google.api.field_behavior) = OPTIONAL];
174
175    // Optional. HTTP method for the flexible webhook calls. Standard webhook
176    // always uses POST.
177    HttpMethod http_method = 7 [(google.api.field_behavior) = OPTIONAL];
178
179    // Optional. Defines a custom JSON object as request body to send to
180    // flexible webhook.
181    string request_body = 8 [(google.api.field_behavior) = OPTIONAL];
182
183    // Optional. Maps the values extracted from specific fields of the flexible
184    // webhook response into session parameters.
185    // - Key: session parameter name
186    // - Value: field path in the webhook response
187    map<string, string> parameter_mapping = 9
188        [(google.api.field_behavior) = OPTIONAL];
189  }
190
191  // Represents configuration for a [Service
192  // Directory](https://cloud.google.com/service-directory) service.
193  message ServiceDirectoryConfig {
194    // Required. The name of [Service
195    // Directory](https://cloud.google.com/service-directory) service.
196    // Format: `projects/<Project ID>/locations/<Location
197    // ID>/namespaces/<Namespace ID>/services/<Service ID>`.
198    // `Location ID` of the service directory must be the same as the location
199    // of the agent.
200    string service = 1 [
201      (google.api.field_behavior) = REQUIRED,
202      (google.api.resource_reference) = {
203        type: "servicedirectory.googleapis.com/Service"
204      }
205    ];
206
207    // Generic Service configuration of this webhook.
208    GenericWebService generic_web_service = 2;
209  }
210
211  // The unique identifier of the webhook.
212  // Required for the
213  // [Webhooks.UpdateWebhook][google.cloud.dialogflow.cx.v3.Webhooks.UpdateWebhook]
214  // method.
215  // [Webhooks.CreateWebhook][google.cloud.dialogflow.cx.v3.Webhooks.CreateWebhook]
216  // populates the name automatically. Format: `projects/<Project
217  // ID>/locations/<Location ID>/agents/<Agent ID>/webhooks/<Webhook ID>`.
218  string name = 1;
219
220  // Required. The human-readable name of the webhook, unique within the agent.
221  string display_name = 2 [(google.api.field_behavior) = REQUIRED];
222
223  // Required. The webhook configuration.
224  oneof webhook {
225    // Configuration for a generic web service.
226    GenericWebService generic_web_service = 4;
227
228    // Configuration for a [Service
229    // Directory](https://cloud.google.com/service-directory) service.
230    ServiceDirectoryConfig service_directory = 7;
231  }
232
233  // Webhook execution timeout. Execution is considered failed if Dialogflow
234  // doesn't receive a response from webhook at the end of the timeout period.
235  // Defaults to 5 seconds, maximum allowed timeout is 30 seconds.
236  google.protobuf.Duration timeout = 6;
237
238  // Indicates whether the webhook is disabled.
239  bool disabled = 5;
240}
241
242// The request message for
243// [Webhooks.ListWebhooks][google.cloud.dialogflow.cx.v3.Webhooks.ListWebhooks].
244message ListWebhooksRequest {
245  // Required. The agent to list all webhooks for.
246  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>`.
247  string parent = 1 [
248    (google.api.field_behavior) = REQUIRED,
249    (google.api.resource_reference) = {
250      child_type: "dialogflow.googleapis.com/Webhook"
251    }
252  ];
253
254  // The maximum number of items to return in a single page. By default 100 and
255  // at most 1000.
256  int32 page_size = 2;
257
258  // The next_page_token value returned from a previous list request.
259  string page_token = 3;
260}
261
262// The response message for
263// [Webhooks.ListWebhooks][google.cloud.dialogflow.cx.v3.Webhooks.ListWebhooks].
264message ListWebhooksResponse {
265  // The list of webhooks. There will be a maximum number of items returned
266  // based on the page_size field in the request.
267  repeated Webhook webhooks = 1;
268
269  // Token to retrieve the next page of results, or empty if there are no more
270  // results in the list.
271  string next_page_token = 2;
272}
273
274// The request message for
275// [Webhooks.GetWebhook][google.cloud.dialogflow.cx.v3.Webhooks.GetWebhook].
276message GetWebhookRequest {
277  // Required. The name of the webhook.
278  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
279  // ID>/webhooks/<Webhook ID>`.
280  string name = 1 [
281    (google.api.field_behavior) = REQUIRED,
282    (google.api.resource_reference) = {
283      type: "dialogflow.googleapis.com/Webhook"
284    }
285  ];
286}
287
288// The request message for
289// [Webhooks.CreateWebhook][google.cloud.dialogflow.cx.v3.Webhooks.CreateWebhook].
290message CreateWebhookRequest {
291  // Required. The agent to create a webhook for.
292  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent ID>`.
293  string parent = 1 [
294    (google.api.field_behavior) = REQUIRED,
295    (google.api.resource_reference) = {
296      child_type: "dialogflow.googleapis.com/Webhook"
297    }
298  ];
299
300  // Required. The webhook to create.
301  Webhook webhook = 2 [(google.api.field_behavior) = REQUIRED];
302}
303
304// The request message for
305// [Webhooks.UpdateWebhook][google.cloud.dialogflow.cx.v3.Webhooks.UpdateWebhook].
306message UpdateWebhookRequest {
307  // Required. The webhook to update.
308  Webhook webhook = 1 [(google.api.field_behavior) = REQUIRED];
309
310  // The mask to control which fields get updated. If the mask is not present,
311  // all fields will be updated.
312  google.protobuf.FieldMask update_mask = 2;
313}
314
315// The request message for
316// [Webhooks.DeleteWebhook][google.cloud.dialogflow.cx.v3.Webhooks.DeleteWebhook].
317message DeleteWebhookRequest {
318  // Required. The name of the webhook to delete.
319  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
320  // ID>/webhooks/<Webhook ID>`.
321  string name = 1 [
322    (google.api.field_behavior) = REQUIRED,
323    (google.api.resource_reference) = {
324      type: "dialogflow.googleapis.com/Webhook"
325    }
326  ];
327
328  // This field has no effect for webhook not being used.
329  // For webhooks that are used by pages/flows/transition route groups:
330  //
331  // *  If `force` is set to false, an error will be returned with message
332  //    indicating the referenced resources.
333  // *  If `force` is set to true, Dialogflow will remove the webhook, as well
334  //    as any references to the webhook (i.e.
335  //    [Webhook][google.cloud.dialogflow.cx.v3.Fulfillment.webhook] and
336  //    [tag][google.cloud.dialogflow.cx.v3.Fulfillment.tag]in fulfillments that
337  //    point to this webhook will be removed).
338  bool force = 2;
339}
340
341// The request message for a webhook call. The request is sent as a JSON object
342// and the field names will be presented in camel cases.
343//
344// You may see undocumented fields in an actual request. These fields are used
345// internally by Dialogflow and should be ignored.
346message WebhookRequest {
347  // Represents fulfillment information communicated to the webhook.
348  message FulfillmentInfo {
349    // Always present.
350    // The value of the
351    // [Fulfillment.tag][google.cloud.dialogflow.cx.v3.Fulfillment.tag] field
352    // will be populated in this field by Dialogflow when the associated webhook
353    // is called. The tag is typically used by the webhook service to identify
354    // which fulfillment is being called, but it could be used for other
355    // purposes.
356    string tag = 1;
357  }
358
359  // Represents intent information communicated to the webhook.
360  message IntentInfo {
361    // Represents a value for an intent parameter.
362    message IntentParameterValue {
363      // Always present. Original text value extracted from user utterance.
364      string original_value = 1;
365
366      // Always present. Structured value for the parameter extracted from user
367      // utterance.
368      google.protobuf.Value resolved_value = 2;
369    }
370
371    // Always present. The unique identifier of the last matched
372    // [intent][google.cloud.dialogflow.cx.v3.Intent].
373    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
374    // ID>/intents/<Intent ID>`.
375    string last_matched_intent = 1 [(google.api.resource_reference) = {
376      type: "dialogflow.googleapis.com/Intent"
377    }];
378
379    // Always present. The display name of the last matched
380    // [intent][google.cloud.dialogflow.cx.v3.Intent].
381    string display_name = 3;
382
383    // Parameters identified as a result of intent matching. This is a map of
384    // the name of the identified parameter to the value of the parameter
385    // identified from the user's utterance. All parameters defined in the
386    // matched intent that are identified will be surfaced here.
387    map<string, IntentParameterValue> parameters = 2;
388
389    // The confidence of the matched intent. Values range from 0.0 (completely
390    // uncertain) to 1.0 (completely certain).
391    float confidence = 4;
392  }
393
394  // Represents the result of sentiment analysis.
395  message SentimentAnalysisResult {
396    // Sentiment score between -1.0 (negative sentiment) and 1.0 (positive
397    // sentiment).
398    float score = 1;
399
400    // A non-negative number in the [0, +inf) range, which represents the
401    // absolute magnitude of sentiment, regardless of score (positive or
402    // negative).
403    float magnitude = 2;
404  }
405
406  // Always present. The unique identifier of the
407  // [DetectIntentResponse][google.cloud.dialogflow.cx.v3.DetectIntentResponse]
408  // that will be returned to the API caller.
409  string detect_intent_response_id = 1;
410
411  // The original conversational query.
412  oneof query {
413    // If [natural language text][google.cloud.dialogflow.cx.v3.TextInput] was
414    // provided as input, this field will contain a copy of the text.
415    string text = 10;
416
417    // If an [intent][google.cloud.dialogflow.cx.v3.IntentInput] was provided as
418    // input, this field will contain a copy of the intent identifier. Format:
419    // `projects/<Project ID>/locations/<Location ID>/agents/<Agent
420    // ID>/intents/<Intent ID>`.
421    string trigger_intent = 11 [(google.api.resource_reference) = {
422      type: "dialogflow.googleapis.com/Intent"
423    }];
424
425    // If [natural language speech
426    // audio][google.cloud.dialogflow.cx.v3.AudioInput] was provided as input,
427    // this field will contain the transcript for the audio.
428    string transcript = 12;
429
430    // If an [event][google.cloud.dialogflow.cx.v3.EventInput] was provided as
431    // input, this field will contain the name of the event.
432    string trigger_event = 14;
433
434    // If [DTMF][google.cloud.dialogflow.cx.v3.DtmfInput] was provided as input,
435    // this field will contain the DTMF digits.
436    string dtmf_digits = 17;
437  }
438
439  // The language code specified in the [original
440  // request][QueryInput.language_code].
441  string language_code = 15;
442
443  // Always present. Information about the fulfillment that triggered this
444  // webhook call.
445  FulfillmentInfo fulfillment_info = 6;
446
447  // Information about the last matched intent.
448  IntentInfo intent_info = 3;
449
450  // Information about page status.
451  PageInfo page_info = 4;
452
453  // Information about session status.
454  SessionInfo session_info = 5;
455
456  // The list of rich message responses to present to the user. Webhook can
457  // choose to append or replace this list in
458  // [WebhookResponse.fulfillment_response][google.cloud.dialogflow.cx.v3.WebhookResponse.fulfillment_response];
459  repeated ResponseMessage messages = 7;
460
461  // Custom data set in
462  // [QueryParameters.payload][google.cloud.dialogflow.cx.v3.QueryParameters.payload].
463  google.protobuf.Struct payload = 8;
464
465  // The sentiment analysis result of the current user request. The field is
466  // filled when sentiment analysis is configured to be enabled for the request.
467  SentimentAnalysisResult sentiment_analysis_result = 9;
468}
469
470// The response message for a webhook call.
471message WebhookResponse {
472  // Represents a fulfillment response to the user.
473  message FulfillmentResponse {
474    // Defines merge behavior for `messages`.
475    enum MergeBehavior {
476      // Not specified. `APPEND` will be used.
477      MERGE_BEHAVIOR_UNSPECIFIED = 0;
478
479      // `messages` will be appended to the list of messages waiting to be sent
480      // to the user.
481      APPEND = 1;
482
483      // `messages` will replace the list of messages waiting to be sent to the
484      // user.
485      REPLACE = 2;
486    }
487
488    // The list of rich message responses to present to the user.
489    repeated ResponseMessage messages = 1;
490
491    // Merge behavior for `messages`.
492    MergeBehavior merge_behavior = 2;
493  }
494
495  // The fulfillment response to send to the user. This field can be omitted by
496  // the webhook if it does not intend to send any response to the user.
497  FulfillmentResponse fulfillment_response = 1;
498
499  // Information about page status. This field can be omitted by the webhook if
500  // it does not intend to modify page status.
501  PageInfo page_info = 2;
502
503  // Information about session status. This field can be omitted by the webhook
504  // if it does not intend to modify session status.
505  SessionInfo session_info = 3;
506
507  // Value to append directly to
508  // [QueryResult.webhook_payloads][google.cloud.dialogflow.cx.v3.QueryResult.webhook_payloads].
509  google.protobuf.Struct payload = 4;
510
511  // The target to transition to. This can be set optionally to indicate an
512  // immediate transition to a different page in the same host flow, or a
513  // different flow in the same agent.
514  oneof transition {
515    // The target page to transition to.
516    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
517    // ID>/flows/<Flow ID>/pages/<Page ID>`.
518    string target_page = 5 [(google.api.resource_reference) = {
519      type: "dialogflow.googleapis.com/Page"
520    }];
521
522    // The target flow to transition to.
523    // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
524    // ID>/flows/<Flow ID>`.
525    string target_flow = 6 [(google.api.resource_reference) = {
526      type: "dialogflow.googleapis.com/Flow"
527    }];
528  }
529}
530
531// Represents page information communicated to and from the webhook.
532message PageInfo {
533  // Represents form information.
534  message FormInfo {
535    // Represents parameter information.
536    message ParameterInfo {
537      // Represents the state of a parameter.
538      enum ParameterState {
539        // Not specified. This value should be never used.
540        PARAMETER_STATE_UNSPECIFIED = 0;
541
542        // Indicates that the parameter does not have a value.
543        EMPTY = 1;
544
545        // Indicates that the parameter value is invalid. This field can be used
546        // by the webhook to invalidate the parameter and ask the server to
547        // collect it from the user again.
548        INVALID = 2;
549
550        // Indicates that the parameter has a value.
551        FILLED = 3;
552      }
553
554      // Always present for
555      // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest].
556      // Required for
557      // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse].
558      // The human-readable name of the parameter, unique within the form. This
559      // field cannot be modified by the webhook.
560      string display_name = 1;
561
562      // Optional for both
563      // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest] and
564      // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse].
565      // Indicates whether the parameter is required. Optional parameters will
566      // not trigger prompts; however, they are filled if the user specifies
567      // them. Required parameters must be filled before form filling concludes.
568      bool required = 2;
569
570      // Always present for
571      // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest].
572      // Required for
573      // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
574      // state of the parameter. This field can be set to
575      // [INVALID][google.cloud.dialogflow.cx.v3.PageInfo.FormInfo.ParameterInfo.ParameterState.INVALID]
576      // by the webhook to invalidate the parameter; other values set by the
577      // webhook will be ignored.
578      ParameterState state = 3;
579
580      // Optional for both
581      // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest] and
582      // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
583      // value of the parameter. This field can be set by the webhook to change
584      // the parameter value.
585      google.protobuf.Value value = 4;
586
587      // Optional for
588      // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest]. Ignored
589      // for [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse].
590      // Indicates if the parameter value was just collected on the last
591      // conversation turn.
592      bool just_collected = 5;
593    }
594
595    // Optional for both
596    // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest] and
597    // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
598    // parameters contained in the form. Note that the webhook cannot add or
599    // remove any form parameter.
600    repeated ParameterInfo parameter_info = 2;
601  }
602
603  // Always present for
604  // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest]. Ignored for
605  // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
606  // unique identifier of the current page. Format: `projects/<Project
607  // ID>/locations/<Location ID>/agents/<Agent ID>/flows/<Flow ID>/pages/<Page
608  // ID>`.
609  string current_page = 1 [
610    (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Page" }
611  ];
612
613  // Always present for
614  // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest]. Ignored for
615  // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
616  // display name of the current page.
617  string display_name = 4;
618
619  // Optional for both
620  // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest] and
621  // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse].
622  // Information about the form.
623  FormInfo form_info = 3;
624}
625
626// Represents session information communicated to and from the webhook.
627message SessionInfo {
628  // Always present for
629  // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest]. Ignored for
630  // [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. The
631  // unique identifier of the
632  // [session][google.cloud.dialogflow.cx.v3.DetectIntentRequest.session]. This
633  // field can be used by the webhook to identify a session.
634  // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent
635  // ID>/sessions/<Session ID>` or `projects/<Project ID>/locations/<Location
636  // ID>/agents/<Agent ID>/environments/<Environment ID>/sessions/<Session ID>`
637  // if environment is specified.
638  string session = 1 [(google.api.resource_reference) = {
639    type: "dialogflow.googleapis.com/Session"
640  }];
641
642  // Optional for
643  // [WebhookRequest][google.cloud.dialogflow.cx.v3.WebhookRequest]. Optional
644  // for [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse]. All
645  // parameters collected from forms and intents during the session. Parameters
646  // can be created, updated, or removed by the webhook. To remove a parameter
647  // from the session, the webhook should explicitly set the parameter value to
648  // null in [WebhookResponse][google.cloud.dialogflow.cx.v3.WebhookResponse].
649  // The map is keyed by parameters' display names.
650  map<string, google.protobuf.Value> parameters = 2;
651}
652