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/fulfillment.proto"; 24import "google/protobuf/empty.proto"; 25import "google/protobuf/field_mask.proto"; 26import "google/protobuf/struct.proto"; 27 28option cc_enable_arenas = true; 29option csharp_namespace = "Google.Cloud.Dialogflow.Cx.V3"; 30option go_package = "cloud.google.com/go/dialogflow/cx/apiv3/cxpb;cxpb"; 31option java_multiple_files = true; 32option java_outer_classname = "PageProto"; 33option java_package = "com.google.cloud.dialogflow.cx.v3"; 34option objc_class_prefix = "DF"; 35option ruby_package = "Google::Cloud::Dialogflow::CX::V3"; 36 37// Service for managing [Pages][google.cloud.dialogflow.cx.v3.Page]. 38service Pages { 39 option (google.api.default_host) = "dialogflow.googleapis.com"; 40 option (google.api.oauth_scopes) = 41 "https://www.googleapis.com/auth/cloud-platform," 42 "https://www.googleapis.com/auth/dialogflow"; 43 44 // Returns the list of all pages in the specified flow. 45 rpc ListPages(ListPagesRequest) returns (ListPagesResponse) { 46 option (google.api.http) = { 47 get: "/v3/{parent=projects/*/locations/*/agents/*/flows/*}/pages" 48 }; 49 option (google.api.method_signature) = "parent"; 50 } 51 52 // Retrieves the specified page. 53 rpc GetPage(GetPageRequest) returns (Page) { 54 option (google.api.http) = { 55 get: "/v3/{name=projects/*/locations/*/agents/*/flows/*/pages/*}" 56 }; 57 option (google.api.method_signature) = "name"; 58 } 59 60 // Creates a page in the specified flow. 61 // 62 // Note: You should always train a flow prior to sending it queries. See the 63 // [training 64 // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training). 65 rpc CreatePage(CreatePageRequest) returns (Page) { 66 option (google.api.http) = { 67 post: "/v3/{parent=projects/*/locations/*/agents/*/flows/*}/pages" 68 body: "page" 69 }; 70 option (google.api.method_signature) = "parent,page"; 71 } 72 73 // Updates the specified page. 74 // 75 // Note: You should always train a flow prior to sending it queries. See the 76 // [training 77 // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training). 78 rpc UpdatePage(UpdatePageRequest) returns (Page) { 79 option (google.api.http) = { 80 patch: "/v3/{page.name=projects/*/locations/*/agents/*/flows/*/pages/*}" 81 body: "page" 82 }; 83 option (google.api.method_signature) = "page,update_mask"; 84 } 85 86 // Deletes the specified page. 87 // 88 // Note: You should always train a flow prior to sending it queries. See the 89 // [training 90 // documentation](https://cloud.google.com/dialogflow/cx/docs/concept/training). 91 rpc DeletePage(DeletePageRequest) returns (google.protobuf.Empty) { 92 option (google.api.http) = { 93 delete: "/v3/{name=projects/*/locations/*/agents/*/flows/*/pages/*}" 94 }; 95 option (google.api.method_signature) = "name"; 96 } 97} 98 99// A Dialogflow CX conversation (session) can be described and visualized as a 100// state machine. The states of a CX session are represented by pages. 101// 102// For each flow, you define many pages, where your combined pages can handle a 103// complete conversation on the topics the flow is designed for. At any given 104// moment, exactly one page is the current page, the current page is considered 105// active, and the flow associated with that page is considered active. Every 106// flow has a special start page. When a flow initially becomes active, the 107// start page page becomes the current page. For each conversational turn, the 108// current page will either stay the same or transition to another page. 109// 110// You configure each page to collect information from the end-user that is 111// relevant for the conversational state represented by the page. 112// 113// For more information, see the 114// [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page). 115message Page { 116 option (google.api.resource) = { 117 type: "dialogflow.googleapis.com/Page" 118 pattern: "projects/{project}/locations/{location}/agents/{agent}/flows/{flow}/pages/{page}" 119 }; 120 121 // The unique identifier of the page. 122 // Required for the 123 // [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage] method. 124 // [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage] 125 // populates the name automatically. 126 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 127 // ID>/flows/<Flow ID>/pages/<Page ID>`. 128 string name = 1; 129 130 // Required. The human-readable name of the page, unique within the flow. 131 string display_name = 2 [(google.api.field_behavior) = REQUIRED]; 132 133 // The fulfillment to call when the session is entering the page. 134 Fulfillment entry_fulfillment = 7; 135 136 // The form associated with the page, used for collecting parameters 137 // relevant to the page. 138 Form form = 4; 139 140 // Ordered list of 141 // [`TransitionRouteGroups`][google.cloud.dialogflow.cx.v3.TransitionRouteGroup] 142 // associated with the page. Transition route groups must be unique within a 143 // page. 144 // 145 // * If multiple transition routes within a page scope refer to the same 146 // intent, then the precedence order is: page's transition route -> page's 147 // transition route group -> flow's transition routes. 148 // 149 // * If multiple transition route groups within a page contain the same 150 // intent, then the first group in the ordered list takes precedence. 151 // 152 // Format:`projects/<Project ID>/locations/<Location ID>/agents/<Agent 153 // ID>/flows/<Flow ID>/transitionRouteGroups/<TransitionRouteGroup ID>`. 154 repeated string transition_route_groups = 11 155 [(google.api.resource_reference) = { 156 type: "dialogflow.googleapis.com/TransitionRouteGroup" 157 }]; 158 159 // A list of transitions for the transition rules of this page. 160 // They route the conversation to another page in the same flow, or another 161 // flow. 162 // 163 // When we are in a certain page, the TransitionRoutes are evalauted in the 164 // following order: 165 // 166 // * TransitionRoutes defined in the page with intent specified. 167 // * TransitionRoutes defined in the 168 // [transition route 169 // groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups] 170 // with intent specified. 171 // * TransitionRoutes defined in flow with intent specified. 172 // * TransitionRoutes defined in the 173 // [transition route 174 // groups][google.cloud.dialogflow.cx.v3.Flow.transition_route_groups] 175 // with intent specified. 176 // * TransitionRoutes defined in the page with only condition specified. 177 // * TransitionRoutes defined in the 178 // [transition route 179 // groups][google.cloud.dialogflow.cx.v3.Page.transition_route_groups] 180 // with only condition specified. 181 repeated TransitionRoute transition_routes = 9; 182 183 // Handlers associated with the page to handle events such as webhook errors, 184 // no match or no input. 185 repeated EventHandler event_handlers = 10; 186} 187 188// A form is a data model that groups related parameters that can be collected 189// from the user. The process in which the agent prompts the user and collects 190// parameter values from the user is called form filling. A form can be added to 191// a [page][google.cloud.dialogflow.cx.v3.Page]. When form filling is done, the 192// filled parameters will be written to the 193// [session][google.cloud.dialogflow.cx.v3.SessionInfo.parameters]. 194message Form { 195 // Represents a form parameter. 196 message Parameter { 197 // Configuration for how the filling of a parameter should be handled. 198 message FillBehavior { 199 // Required. The fulfillment to provide the initial prompt that the agent 200 // can present to the user in order to fill the parameter. 201 Fulfillment initial_prompt_fulfillment = 3 202 [(google.api.field_behavior) = REQUIRED]; 203 204 // The handlers for parameter-level events, used to provide reprompt for 205 // the parameter or transition to a different page/flow. The supported 206 // events are: 207 // * `sys.no-match-<N>`, where N can be from 1 to 6 208 // * `sys.no-match-default` 209 // * `sys.no-input-<N>`, where N can be from 1 to 6 210 // * `sys.no-input-default` 211 // * `sys.invalid-parameter` 212 // 213 // `initial_prompt_fulfillment` provides the first prompt for the 214 // parameter. 215 // 216 // If the user's response does not fill the parameter, a 217 // no-match/no-input event will be triggered, and the fulfillment 218 // associated with the `sys.no-match-1`/`sys.no-input-1` handler (if 219 // defined) will be called to provide a prompt. The 220 // `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to 221 // the next no-match/no-input event, and so on. 222 // 223 // A `sys.no-match-default` or `sys.no-input-default` handler will be used 224 // to handle all following no-match/no-input events after all numbered 225 // no-match/no-input handlers for the parameter are consumed. 226 // 227 // A `sys.invalid-parameter` handler can be defined to handle the case 228 // where the parameter values have been `invalidated` by webhook. For 229 // example, if the user's response fill the parameter, however the 230 // parameter was invalidated by webhook, the fulfillment associated with 231 // the `sys.invalid-parameter` handler (if defined) will be called to 232 // provide a prompt. 233 // 234 // If the event handler for the corresponding event can't be found on the 235 // parameter, `initial_prompt_fulfillment` will be re-prompted. 236 repeated EventHandler reprompt_event_handlers = 5; 237 } 238 239 // Required. The human-readable name of the parameter, unique within the 240 // form. 241 string display_name = 1 [(google.api.field_behavior) = REQUIRED]; 242 243 // Indicates whether the parameter is required. Optional parameters will not 244 // trigger prompts; however, they are filled if the user specifies them. 245 // Required parameters must be filled before form filling concludes. 246 bool required = 2; 247 248 // Required. The entity type of the parameter. 249 // Format: `projects/-/locations/-/agents/-/entityTypes/<System Entity Type 250 // ID>` for system entity types (for example, 251 // `projects/-/locations/-/agents/-/entityTypes/sys.date`), or 252 // `projects/<Project ID>/locations/<Location ID>/agents/<Agent 253 // ID>/entityTypes/<Entity Type ID>` for developer entity types. 254 string entity_type = 3 [ 255 (google.api.field_behavior) = REQUIRED, 256 (google.api.resource_reference) = { 257 type: "dialogflow.googleapis.com/EntityType" 258 } 259 ]; 260 261 // Indicates whether the parameter represents a list of values. 262 bool is_list = 4; 263 264 // Required. Defines fill behavior for the parameter. 265 FillBehavior fill_behavior = 7 [(google.api.field_behavior) = REQUIRED]; 266 267 // The default value of an optional parameter. If the parameter is required, 268 // the default value will be ignored. 269 google.protobuf.Value default_value = 9; 270 271 // Indicates whether the parameter content should be redacted in log. If 272 // redaction is enabled, the parameter content will be replaced by parameter 273 // name during logging. 274 // Note: the parameter content is subject to redaction if either parameter 275 // level redaction or [entity type level 276 // redaction][google.cloud.dialogflow.cx.v3.EntityType.redact] is enabled. 277 bool redact = 11; 278 } 279 280 // Parameters to collect from the user. 281 repeated Parameter parameters = 1; 282} 283 284// An event handler specifies an 285// [event][google.cloud.dialogflow.cx.v3.EventHandler.event] that can be handled 286// during a session. When the specified event happens, the following actions are 287// taken in order: 288// 289// * If there is a 290// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.EventHandler.trigger_fulfillment] 291// associated with the event, it will be called. 292// * If there is a 293// [`target_page`][google.cloud.dialogflow.cx.v3.EventHandler.target_page] 294// associated with the event, the session will transition into the specified 295// page. 296// * If there is a 297// [`target_flow`][google.cloud.dialogflow.cx.v3.EventHandler.target_flow] 298// associated with the event, the session will transition into the specified 299// flow. 300message EventHandler { 301 // Output only. The unique identifier of this event handler. 302 string name = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; 303 304 // Required. The name of the event to handle. 305 string event = 4 [(google.api.field_behavior) = REQUIRED]; 306 307 // The fulfillment to call when the event occurs. 308 // Handling webhook errors with a fulfillment enabled with webhook could 309 // cause infinite loop. It is invalid to specify such fulfillment for a 310 // handler handling webhooks. 311 Fulfillment trigger_fulfillment = 5; 312 313 // The target to transition to, either a page in the same host flow (the flow 314 // that owns this 315 // [TransitionRoute][google.cloud.dialogflow.cx.v3.TransitionRoute]), or 316 // another flow in the same agent. 317 oneof target { 318 // The target page to transition to. 319 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 320 // ID>/flows/<Flow ID>/pages/<Page ID>`. 321 string target_page = 2 [(google.api.resource_reference) = { 322 type: "dialogflow.googleapis.com/Page" 323 }]; 324 325 // The target flow to transition to. 326 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 327 // ID>/flows/<Flow ID>`. 328 string target_flow = 3 [(google.api.resource_reference) = { 329 type: "dialogflow.googleapis.com/Flow" 330 }]; 331 } 332} 333 334// A transition route specifies a [intent][google.cloud.dialogflow.cx.v3.Intent] 335// that can be matched and/or a data condition that can be evaluated during a 336// session. When a specified transition is matched, the following actions are 337// taken in order: 338// 339// * If there is a 340// [`trigger_fulfillment`][google.cloud.dialogflow.cx.v3.TransitionRoute.trigger_fulfillment] 341// associated with the transition, it will be called. 342// * If there is a 343// [`target_page`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_page] 344// associated with the transition, the session will transition into the 345// specified page. 346// * If there is a 347// [`target_flow`][google.cloud.dialogflow.cx.v3.TransitionRoute.target_flow] 348// associated with the transition, the session will transition into the 349// specified flow. 350message TransitionRoute { 351 // Output only. The unique identifier of this transition route. 352 string name = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; 353 354 // The unique identifier of an [Intent][google.cloud.dialogflow.cx.v3.Intent]. 355 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 356 // ID>/intents/<Intent ID>`. 357 // Indicates that the transition can only happen when the given intent is 358 // matched. 359 // At least one of `intent` or `condition` must be specified. When both 360 // `intent` and `condition` are specified, the transition can only happen 361 // when both are fulfilled. 362 string intent = 1 [(google.api.resource_reference) = { 363 type: "dialogflow.googleapis.com/Intent" 364 }]; 365 366 // The condition to evaluate against [form 367 // parameters][google.cloud.dialogflow.cx.v3.Form.parameters] or [session 368 // parameters][google.cloud.dialogflow.cx.v3.SessionInfo.parameters]. 369 // 370 // See the [conditions 371 // reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). 372 // At least one of `intent` or `condition` must be specified. When both 373 // `intent` and `condition` are specified, the transition can only happen 374 // when both are fulfilled. 375 string condition = 2; 376 377 // The fulfillment to call when the condition is satisfied. At least one of 378 // `trigger_fulfillment` and `target` must be specified. When both are 379 // defined, `trigger_fulfillment` is executed first. 380 Fulfillment trigger_fulfillment = 3; 381 382 // The target to transition to, either a page in the same host flow (the flow 383 // that owns this 384 // [TransitionRoute][google.cloud.dialogflow.cx.v3.TransitionRoute]), or 385 // another flow in the same agent. 386 oneof target { 387 // The target page to transition to. 388 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 389 // ID>/flows/<Flow ID>/pages/<Page ID>`. 390 string target_page = 4 [(google.api.resource_reference) = { 391 type: "dialogflow.googleapis.com/Page" 392 }]; 393 394 // The target flow to transition to. 395 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 396 // ID>/flows/<Flow ID>`. 397 string target_flow = 5 [(google.api.resource_reference) = { 398 type: "dialogflow.googleapis.com/Flow" 399 }]; 400 } 401} 402 403// The request message for 404// [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages]. 405message ListPagesRequest { 406 // Required. The flow to list all pages for. 407 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 408 // ID>/flows/<Flow ID>`. 409 string parent = 1 [ 410 (google.api.field_behavior) = REQUIRED, 411 (google.api.resource_reference) = { 412 child_type: "dialogflow.googleapis.com/Page" 413 } 414 ]; 415 416 // The language to list pages for. The following fields are language 417 // dependent: 418 // 419 // * `Page.entry_fulfillment.messages` 420 // * `Page.entry_fulfillment.conditional_cases` 421 // * `Page.event_handlers.trigger_fulfillment.messages` 422 // * `Page.event_handlers.trigger_fulfillment.conditional_cases` 423 // * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` 424 // * 425 // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` 426 // * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` 427 // * 428 // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` 429 // * `Page.transition_routes.trigger_fulfillment.messages` 430 // * `Page.transition_routes.trigger_fulfillment.conditional_cases` 431 // 432 // If not specified, the agent's default language is used. 433 // [Many 434 // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) 435 // are supported. 436 // Note: languages must be enabled in the agent before they can be used. 437 string language_code = 2; 438 439 // The maximum number of items to return in a single page. By default 100 and 440 // at most 1000. 441 int32 page_size = 3; 442 443 // The next_page_token value returned from a previous list request. 444 string page_token = 4; 445} 446 447// The response message for 448// [Pages.ListPages][google.cloud.dialogflow.cx.v3.Pages.ListPages]. 449message ListPagesResponse { 450 // The list of pages. There will be a maximum number of items returned based 451 // on the page_size field in the request. 452 repeated Page pages = 1; 453 454 // Token to retrieve the next page of results, or empty if there are no more 455 // results in the list. 456 string next_page_token = 2; 457} 458 459// The request message for 460// [Pages.GetPage][google.cloud.dialogflow.cx.v3.Pages.GetPage]. 461message GetPageRequest { 462 // Required. The name of the page. 463 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 464 // ID>/flows/<Flow ID>/pages/<Page ID>`. 465 string name = 1 [ 466 (google.api.field_behavior) = REQUIRED, 467 (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Page" } 468 ]; 469 470 // The language to retrieve the page for. The following fields are language 471 // dependent: 472 // 473 // * `Page.entry_fulfillment.messages` 474 // * `Page.entry_fulfillment.conditional_cases` 475 // * `Page.event_handlers.trigger_fulfillment.messages` 476 // * `Page.event_handlers.trigger_fulfillment.conditional_cases` 477 // * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` 478 // * 479 // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` 480 // * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` 481 // * 482 // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` 483 // * `Page.transition_routes.trigger_fulfillment.messages` 484 // * `Page.transition_routes.trigger_fulfillment.conditional_cases` 485 // 486 // If not specified, the agent's default language is used. 487 // [Many 488 // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) 489 // are supported. 490 // Note: languages must be enabled in the agent before they can be used. 491 string language_code = 2; 492} 493 494// The request message for 495// [Pages.CreatePage][google.cloud.dialogflow.cx.v3.Pages.CreatePage]. 496message CreatePageRequest { 497 // Required. The flow to create a page for. 498 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 499 // ID>/flows/<Flow ID>`. 500 string parent = 1 [ 501 (google.api.field_behavior) = REQUIRED, 502 (google.api.resource_reference) = { 503 child_type: "dialogflow.googleapis.com/Page" 504 } 505 ]; 506 507 // Required. The page to create. 508 Page page = 2 [(google.api.field_behavior) = REQUIRED]; 509 510 // The language of the following fields in `page`: 511 // 512 // * `Page.entry_fulfillment.messages` 513 // * `Page.entry_fulfillment.conditional_cases` 514 // * `Page.event_handlers.trigger_fulfillment.messages` 515 // * `Page.event_handlers.trigger_fulfillment.conditional_cases` 516 // * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` 517 // * 518 // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` 519 // * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` 520 // * 521 // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` 522 // * `Page.transition_routes.trigger_fulfillment.messages` 523 // * `Page.transition_routes.trigger_fulfillment.conditional_cases` 524 // 525 // If not specified, the agent's default language is used. 526 // [Many 527 // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) 528 // are supported. 529 // Note: languages must be enabled in the agent before they can be used. 530 string language_code = 3; 531} 532 533// The request message for 534// [Pages.UpdatePage][google.cloud.dialogflow.cx.v3.Pages.UpdatePage]. 535message UpdatePageRequest { 536 // Required. The page to update. 537 Page page = 1 [(google.api.field_behavior) = REQUIRED]; 538 539 // The language of the following fields in `page`: 540 // 541 // * `Page.entry_fulfillment.messages` 542 // * `Page.entry_fulfillment.conditional_cases` 543 // * `Page.event_handlers.trigger_fulfillment.messages` 544 // * `Page.event_handlers.trigger_fulfillment.conditional_cases` 545 // * `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages` 546 // * 547 // `Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases` 548 // * `Page.form.parameters.fill_behavior.reprompt_event_handlers.messages` 549 // * 550 // `Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases` 551 // * `Page.transition_routes.trigger_fulfillment.messages` 552 // * `Page.transition_routes.trigger_fulfillment.conditional_cases` 553 // 554 // If not specified, the agent's default language is used. 555 // [Many 556 // languages](https://cloud.google.com/dialogflow/cx/docs/reference/language) 557 // are supported. 558 // Note: languages must be enabled in the agent before they can be used. 559 string language_code = 2; 560 561 // The mask to control which fields get updated. If the mask is not present, 562 // all fields will be updated. 563 google.protobuf.FieldMask update_mask = 3; 564} 565 566// The request message for 567// [Pages.DeletePage][google.cloud.dialogflow.cx.v3.Pages.DeletePage]. 568message DeletePageRequest { 569 // Required. The name of the page to delete. 570 // Format: `projects/<Project ID>/locations/<Location ID>/agents/<Agent 571 // ID>/Flows/<flow ID>/pages/<Page ID>`. 572 string name = 1 [ 573 (google.api.field_behavior) = REQUIRED, 574 (google.api.resource_reference) = { type: "dialogflow.googleapis.com/Page" } 575 ]; 576 577 // This field has no effect for pages with no incoming transitions. 578 // For pages with incoming transitions: 579 // 580 // * If `force` is set to false, an error will be returned with message 581 // indicating the incoming transitions. 582 // * If `force` is set to true, Dialogflow will remove the page, as well as 583 // any transitions to the page (i.e. [Target 584 // page][EventHandler.target_page] in event handlers or [Target 585 // page][TransitionRoute.target_page] in transition routes that point to 586 // this page will be cleared). 587 bool force = 2; 588} 589