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