All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.gcp.diagflow.kotlin.CxFlowArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 8.10.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.diagflow.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.diagflow.CxFlowArgs.builder
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowAdvancedSettingsArgs
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowAdvancedSettingsArgsBuilder
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowEventHandlerArgs
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowEventHandlerArgsBuilder
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowNluSettingsArgs
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowNluSettingsArgsBuilder
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowTransitionRouteArgs
import com.pulumi.gcp.diagflow.kotlin.inputs.CxFlowTransitionRouteArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Flows represents the conversation flows when you build your chatbot agent.
 * To get more information about Flow, see:
 * * [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)
 * ## Example Usage
 * ### Dialogflowcx Flow Basic
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const agent = new gcp.diagflow.CxAgent("agent", {
 *     displayName: "dialogflowcx-agent",
 *     location: "global",
 *     defaultLanguageCode: "en",
 *     supportedLanguageCodes: [
 *         "fr",
 *         "de",
 *         "es",
 *     ],
 *     timeZone: "America/New_York",
 *     description: "Example description.",
 *     avatarUri: "https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *     enableStackdriverLogging: true,
 *     enableSpellCorrection: true,
 *     speechToTextSettings: {
 *         enableSpeechAdaptation: true,
 *     },
 * });
 * const basicFlow = new gcp.diagflow.CxFlow("basic_flow", {
 *     parent: agent.id,
 *     displayName: "MyFlow",
 *     description: "Test Flow",
 *     nluSettings: {
 *         classificationThreshold: 0.3,
 *         modelType: "MODEL_TYPE_STANDARD",
 *     },
 *     eventHandlers: [
 *         {
 *             event: "custom-event",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["I didn't get that. Can you say it again?"],
 *                     },
 *                 }],
 *             },
 *         },
 *         {
 *             event: "sys.no-match-default",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["Sorry, could you say that again?"],
 *                     },
 *                 }],
 *             },
 *         },
 *         {
 *             event: "sys.no-input-default",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["One more time?"],
 *                     },
 *                 }],
 *             },
 *         },
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * agent = gcp.diagflow.CxAgent("agent",
 *     display_name="dialogflowcx-agent",
 *     location="global",
 *     default_language_code="en",
 *     supported_language_codes=[
 *         "fr",
 *         "de",
 *         "es",
 *     ],
 *     time_zone="America/New_York",
 *     description="Example description.",
 *     avatar_uri="https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *     enable_stackdriver_logging=True,
 *     enable_spell_correction=True,
 *     speech_to_text_settings=gcp.diagflow.CxAgentSpeechToTextSettingsArgs(
 *         enable_speech_adaptation=True,
 *     ))
 * basic_flow = gcp.diagflow.CxFlow("basic_flow",
 *     parent=agent.id,
 *     display_name="MyFlow",
 *     description="Test Flow",
 *     nlu_settings=gcp.diagflow.CxFlowNluSettingsArgs(
 *         classification_threshold=0.3,
 *         model_type="MODEL_TYPE_STANDARD",
 *     ),
 *     event_handlers=[
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="custom-event",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["I didn't get that. Can you say it again?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="sys.no-match-default",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["Sorry, could you say that again?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="sys.no-input-default",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["One more time?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *     ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var agent = new Gcp.Diagflow.CxAgent("agent", new()
 *     {
 *         DisplayName = "dialogflowcx-agent",
 *         Location = "global",
 *         DefaultLanguageCode = "en",
 *         SupportedLanguageCodes = new[]
 *         {
 *             "fr",
 *             "de",
 *             "es",
 *         },
 *         TimeZone = "America/New_York",
 *         Description = "Example description.",
 *         AvatarUri = "https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *         EnableStackdriverLogging = true,
 *         EnableSpellCorrection = true,
 *         SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs
 *         {
 *             EnableSpeechAdaptation = true,
 *         },
 *     });
 *     var basicFlow = new Gcp.Diagflow.CxFlow("basic_flow", new()
 *     {
 *         Parent = agent.Id,
 *         DisplayName = "MyFlow",
 *         Description = "Test Flow",
 *         NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs
 *         {
 *             ClassificationThreshold = 0.3,
 *             ModelType = "MODEL_TYPE_STANDARD",
 *         },
 *         EventHandlers = new[]
 *         {
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "custom-event",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "I didn't get that. Can you say it again?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "sys.no-match-default",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "Sorry, could you say that again?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "sys.no-input-default",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "One more time?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		agent, err := diagflow.NewCxAgent(ctx, "agent", &diagflow.CxAgentArgs{
 * 			DisplayName:         pulumi.String("dialogflowcx-agent"),
 * 			Location:            pulumi.String("global"),
 * 			DefaultLanguageCode: pulumi.String("en"),
 * 			SupportedLanguageCodes: pulumi.StringArray{
 * 				pulumi.String("fr"),
 * 				pulumi.String("de"),
 * 				pulumi.String("es"),
 * 			},
 * 			TimeZone:                 pulumi.String("America/New_York"),
 * 			Description:              pulumi.String("Example description."),
 * 			AvatarUri:                pulumi.String("https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png"),
 * 			EnableStackdriverLogging: pulumi.Bool(true),
 * 			EnableSpellCorrection:    pulumi.Bool(true),
 * 			SpeechToTextSettings: &diagflow.CxAgentSpeechToTextSettingsArgs{
 * 				EnableSpeechAdaptation: pulumi.Bool(true),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = diagflow.NewCxFlow(ctx, "basic_flow", &diagflow.CxFlowArgs{
 * 			Parent:      agent.ID(),
 * 			DisplayName: pulumi.String("MyFlow"),
 * 			Description: pulumi.String("Test Flow"),
 * 			NluSettings: &diagflow.CxFlowNluSettingsArgs{
 * 				ClassificationThreshold: pulumi.Float64(0.3),
 * 				ModelType:               pulumi.String("MODEL_TYPE_STANDARD"),
 * 			},
 * 			EventHandlers: diagflow.CxFlowEventHandlerArray{
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("custom-event"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("I didn't get that. Can you say it again?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("sys.no-match-default"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("Sorry, could you say that again?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("sys.no-input-default"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("One more time?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.diagflow.CxAgent;
 * import com.pulumi.gcp.diagflow.CxAgentArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;
 * import com.pulumi.gcp.diagflow.CxFlow;
 * import com.pulumi.gcp.diagflow.CxFlowArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var agent = new CxAgent("agent", CxAgentArgs.builder()
 *             .displayName("dialogflowcx-agent")
 *             .location("global")
 *             .defaultLanguageCode("en")
 *             .supportedLanguageCodes(
 *                 "fr",
 *                 "de",
 *                 "es")
 *             .timeZone("America/New_York")
 *             .description("Example description.")
 *             .avatarUri("https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png")
 *             .enableStackdriverLogging(true)
 *             .enableSpellCorrection(true)
 *             .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()
 *                 .enableSpeechAdaptation(true)
 *                 .build())
 *             .build());
 *         var basicFlow = new CxFlow("basicFlow", CxFlowArgs.builder()
 *             .parent(agent.id())
 *             .displayName("MyFlow")
 *             .description("Test Flow")
 *             .nluSettings(CxFlowNluSettingsArgs.builder()
 *                 .classificationThreshold(0.3)
 *                 .modelType("MODEL_TYPE_STANDARD")
 *                 .build())
 *             .eventHandlers(
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("custom-event")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("I didn't get that. Can you say it again?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build(),
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("sys.no-match-default")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("Sorry, could you say that again?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build(),
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("sys.no-input-default")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("One more time?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   agent:
 *     type: gcp:diagflow:CxAgent
 *     properties:
 *       displayName: dialogflowcx-agent
 *       location: global
 *       defaultLanguageCode: en
 *       supportedLanguageCodes:
 *         - fr
 *         - de
 *         - es
 *       timeZone: America/New_York
 *       description: Example description.
 *       avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png
 *       enableStackdriverLogging: true
 *       enableSpellCorrection: true
 *       speechToTextSettings:
 *         enableSpeechAdaptation: true
 *   basicFlow:
 *     type: gcp:diagflow:CxFlow
 *     name: basic_flow
 *     properties:
 *       parent: ${agent.id}
 *       displayName: MyFlow
 *       description: Test Flow
 *       nluSettings:
 *         classificationThreshold: 0.3
 *         modelType: MODEL_TYPE_STANDARD
 *       eventHandlers:
 *         - event: custom-event
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - I didn't get that. Can you say it again?
 *         - event: sys.no-match-default
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - Sorry, could you say that again?
 *         - event: sys.no-input-default
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - One more time?
 * ```
 * 
 * ### Dialogflowcx Flow Full
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const agent = new gcp.diagflow.CxAgent("agent", {
 *     displayName: "dialogflowcx-agent",
 *     location: "global",
 *     defaultLanguageCode: "en",
 *     supportedLanguageCodes: [
 *         "fr",
 *         "de",
 *         "es",
 *     ],
 *     timeZone: "America/New_York",
 *     description: "Example description.",
 *     avatarUri: "https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *     enableStackdriverLogging: true,
 *     enableSpellCorrection: true,
 *     speechToTextSettings: {
 *         enableSpeechAdaptation: true,
 *     },
 * });
 * const bucket = new gcp.storage.Bucket("bucket", {
 *     name: "dialogflowcx-bucket",
 *     location: "US",
 *     uniformBucketLevelAccess: true,
 * });
 * const basicFlow = new gcp.diagflow.CxFlow("basic_flow", {
 *     parent: agent.id,
 *     displayName: "MyFlow",
 *     description: "Test Flow",
 *     nluSettings: {
 *         classificationThreshold: 0.3,
 *         modelType: "MODEL_TYPE_STANDARD",
 *     },
 *     eventHandlers: [
 *         {
 *             event: "custom-event",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["I didn't get that. Can you say it again?"],
 *                     },
 *                 }],
 *             },
 *         },
 *         {
 *             event: "sys.no-match-default",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["Sorry, could you say that again?"],
 *                     },
 *                 }],
 *             },
 *         },
 *         {
 *             event: "sys.no-input-default",
 *             triggerFulfillment: {
 *                 returnPartialResponses: false,
 *                 messages: [{
 *                     text: {
 *                         texts: ["One more time?"],
 *                     },
 *                 }],
 *             },
 *         },
 *         {
 *             event: "another-event",
 *             triggerFulfillment: {
 *                 returnPartialResponses: true,
 *                 messages: [
 *                     {
 *                         channel: "some-channel",
 *                         text: {
 *                             texts: ["Some text"],
 *                         },
 *                     },
 *                     {
 *                         payload: "          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
 *                     },
 *                     {
 *                         conversationSuccess: {
 *                             metadata: "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                         },
 *                     },
 *                     {
 *                         outputAudioText: {
 *                             text: "some output text",
 *                         },
 *                     },
 *                     {
 *                         outputAudioText: {
 *                             ssml: "            Some example SSML XML\n",
 *                         },
 *                     },
 *                     {
 *                         liveAgentHandoff: {
 *                             metadata: "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                         },
 *                     },
 *                     {
 *                         playAudio: {
 *                             audioUri: "http://example.com/some-audio-file.mp3",
 *                         },
 *                     },
 *                     {
 *                         telephonyTransferCall: {
 *                             phoneNumber: "1-234-567-8901",
 *                         },
 *                     },
 *                 ],
 *                 setParameterActions: [
 *                     {
 *                         parameter: "some-param",
 *                         value: "123.45",
 *                     },
 *                     {
 *                         parameter: "another-param",
 *                         value: JSON.stringify("abc"),
 *                     },
 *                     {
 *                         parameter: "other-param",
 *                         value: JSON.stringify(["foo"]),
 *                     },
 *                 ],
 *                 conditionalCases: [{
 *                     cases: JSON.stringify([
 *                         {
 *                             condition: "$sys.func.RAND() < 0.5",
 *                             caseContent: [
 *                                 {
 *                                     message: {
 *                                         text: {
 *                                             text: ["First case"],
 *                                         },
 *                                     },
 *                                 },
 *                                 {
 *                                     additionalCases: {
 *                                         cases: [{
 *                                             condition: "$sys.func.RAND() < 0.2",
 *                                             caseContent: [{
 *                                                 message: {
 *                                                     text: {
 *                                                         text: ["Nested case"],
 *                                                     },
 *                                                 },
 *                                             }],
 *                                         }],
 *                                     },
 *                                 },
 *                             ],
 *                         },
 *                         {
 *                             caseContent: [{
 *                                 message: {
 *                                     text: {
 *                                         text: ["Final case"],
 *                                     },
 *                                 },
 *                             }],
 *                         },
 *                     ]),
 *                 }],
 *             },
 *         },
 *     ],
 *     transitionRoutes: [{
 *         condition: "true",
 *         triggerFulfillment: {
 *             returnPartialResponses: true,
 *             messages: [
 *                 {
 *                     channel: "some-channel",
 *                     text: {
 *                         texts: ["Some text"],
 *                     },
 *                 },
 *                 {
 *                     payload: "          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
 *                 },
 *                 {
 *                     conversationSuccess: {
 *                         metadata: "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                     },
 *                 },
 *                 {
 *                     outputAudioText: {
 *                         text: "some output text",
 *                     },
 *                 },
 *                 {
 *                     outputAudioText: {
 *                         ssml: "            Some example SSML XML\n",
 *                     },
 *                 },
 *                 {
 *                     liveAgentHandoff: {
 *                         metadata: "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                     },
 *                 },
 *                 {
 *                     playAudio: {
 *                         audioUri: "http://example.com/some-audio-file.mp3",
 *                     },
 *                 },
 *                 {
 *                     telephonyTransferCall: {
 *                         phoneNumber: "1-234-567-8901",
 *                     },
 *                 },
 *             ],
 *             setParameterActions: [
 *                 {
 *                     parameter: "some-param",
 *                     value: "123.45",
 *                 },
 *                 {
 *                     parameter: "another-param",
 *                     value: JSON.stringify("abc"),
 *                 },
 *                 {
 *                     parameter: "other-param",
 *                     value: JSON.stringify(["foo"]),
 *                 },
 *             ],
 *             conditionalCases: [{
 *                 cases: JSON.stringify([
 *                     {
 *                         condition: "$sys.func.RAND() < 0.5",
 *                         caseContent: [
 *                             {
 *                                 message: {
 *                                     text: {
 *                                         text: ["First case"],
 *                                     },
 *                                 },
 *                             },
 *                             {
 *                                 additionalCases: {
 *                                     cases: [{
 *                                         condition: "$sys.func.RAND() < 0.2",
 *                                         caseContent: [{
 *                                             message: {
 *                                                 text: {
 *                                                     text: ["Nested case"],
 *                                                 },
 *                                             },
 *                                         }],
 *                                     }],
 *                                 },
 *                             },
 *                         ],
 *                     },
 *                     {
 *                         caseContent: [{
 *                             message: {
 *                                 text: {
 *                                     text: ["Final case"],
 *                                 },
 *                             },
 *                         }],
 *                     },
 *                 ]),
 *             }],
 *         },
 *         targetFlow: agent.startFlow,
 *     }],
 *     advancedSettings: {
 *         audioExportGcsDestination: {
 *             uri: pulumi.interpolate`${bucket.url}/prefix-`,
 *         },
 *         dtmfSettings: {
 *             enabled: true,
 *             maxDigits: 1,
 *             finishDigit: "#",
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import json
 * import pulumi_gcp as gcp
 * agent = gcp.diagflow.CxAgent("agent",
 *     display_name="dialogflowcx-agent",
 *     location="global",
 *     default_language_code="en",
 *     supported_language_codes=[
 *         "fr",
 *         "de",
 *         "es",
 *     ],
 *     time_zone="America/New_York",
 *     description="Example description.",
 *     avatar_uri="https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *     enable_stackdriver_logging=True,
 *     enable_spell_correction=True,
 *     speech_to_text_settings=gcp.diagflow.CxAgentSpeechToTextSettingsArgs(
 *         enable_speech_adaptation=True,
 *     ))
 * bucket = gcp.storage.Bucket("bucket",
 *     name="dialogflowcx-bucket",
 *     location="US",
 *     uniform_bucket_level_access=True)
 * basic_flow = gcp.diagflow.CxFlow("basic_flow",
 *     parent=agent.id,
 *     display_name="MyFlow",
 *     description="Test Flow",
 *     nlu_settings=gcp.diagflow.CxFlowNluSettingsArgs(
 *         classification_threshold=0.3,
 *         model_type="MODEL_TYPE_STANDARD",
 *     ),
 *     event_handlers=[
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="custom-event",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["I didn't get that. Can you say it again?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="sys.no-match-default",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["Sorry, could you say that again?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="sys.no-input-default",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=False,
 *                 messages=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                     text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                         texts=["One more time?"],
 *                     ),
 *                 )],
 *             ),
 *         ),
 *         gcp.diagflow.CxFlowEventHandlerArgs(
 *             event="another-event",
 *             trigger_fulfillment=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentArgs(
 *                 return_partial_responses=True,
 *                 messages=[
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         channel="some-channel",
 *                         text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs(
 *                             texts=["Some text"],
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         payload="          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         conversation_success=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs(
 *                             metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         output_audio_text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
 *                             text="some output text",
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         output_audio_text=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
 *                             ssml="            Some example SSML XML\n",
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         live_agent_handoff=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs(
 *                             metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         play_audio=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs(
 *                             audio_uri="http://example.com/some-audio-file.mp3",
 *                         ),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs(
 *                         telephony_transfer_call=gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs(
 *                             phone_number="1-234-567-8901",
 *                         ),
 *                     ),
 *                 ],
 *                 set_parameter_actions=[
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs(
 *                         parameter="some-param",
 *                         value="123.45",
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs(
 *                         parameter="another-param",
 *                         value=json.dumps("abc"),
 *                     ),
 *                     gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs(
 *                         parameter="other-param",
 *                         value=json.dumps(["foo"]),
 *                     ),
 *                 ],
 *                 conditional_cases=[gcp.diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs(
 *                     cases=json.dumps([
 *                         {
 *                             "condition": "$sys.func.RAND() < 0.5",
 *                             "caseContent": [
 *                                 {
 *                                     "message": {
 *                                         "text": {
 *                                             "text": ["First case"],
 *                                         },
 *                                     },
 *                                 },
 *                                 {
 *                                     "additionalCases": {
 *                                         "cases": [{
 *                                             "condition": "$sys.func.RAND() < 0.2",
 *                                             "caseContent": [{
 *                                                 "message": {
 *                                                     "text": {
 *                                                         "text": ["Nested case"],
 *                                                     },
 *                                                 },
 *                                             }],
 *                                         }],
 *                                     },
 *                                 },
 *                             ],
 *                         },
 *                         {
 *                             "caseContent": [{
 *                                 "message": {
 *                                     "text": {
 *                                         "text": ["Final case"],
 *                                     },
 *                                 },
 *                             }],
 *                         },
 *                     ]),
 *                 )],
 *             ),
 *         ),
 *     ],
 *     transition_routes=[gcp.diagflow.CxFlowTransitionRouteArgs(
 *         condition="true",
 *         trigger_fulfillment=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs(
 *             return_partial_responses=True,
 *             messages=[
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     channel="some-channel",
 *                     text=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs(
 *                         texts=["Some text"],
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     payload="          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     conversation_success=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs(
 *                         metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     output_audio_text=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs(
 *                         text="some output text",
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     output_audio_text=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs(
 *                         ssml="            Some example SSML XML\n",
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     live_agent_handoff=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs(
 *                         metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     play_audio=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs(
 *                         audio_uri="http://example.com/some-audio-file.mp3",
 *                     ),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs(
 *                     telephony_transfer_call=gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs(
 *                         phone_number="1-234-567-8901",
 *                     ),
 *                 ),
 *             ],
 *             set_parameter_actions=[
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs(
 *                     parameter="some-param",
 *                     value="123.45",
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs(
 *                     parameter="another-param",
 *                     value=json.dumps("abc"),
 *                 ),
 *                 gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs(
 *                     parameter="other-param",
 *                     value=json.dumps(["foo"]),
 *                 ),
 *             ],
 *             conditional_cases=[gcp.diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs(
 *                 cases=json.dumps([
 *                     {
 *                         "condition": "$sys.func.RAND() < 0.5",
 *                         "caseContent": [
 *                             {
 *                                 "message": {
 *                                     "text": {
 *                                         "text": ["First case"],
 *                                     },
 *                                 },
 *                             },
 *                             {
 *                                 "additionalCases": {
 *                                     "cases": [{
 *                                         "condition": "$sys.func.RAND() < 0.2",
 *                                         "caseContent": [{
 *                                             "message": {
 *                                                 "text": {
 *                                                     "text": ["Nested case"],
 *                                                 },
 *                                             },
 *                                         }],
 *                                     }],
 *                                 },
 *                             },
 *                         ],
 *                     },
 *                     {
 *                         "caseContent": [{
 *                             "message": {
 *                                 "text": {
 *                                     "text": ["Final case"],
 *                                 },
 *                             },
 *                         }],
 *                     },
 *                 ]),
 *             )],
 *         ),
 *         target_flow=agent.start_flow,
 *     )],
 *     advanced_settings=gcp.diagflow.CxFlowAdvancedSettingsArgs(
 *         audio_export_gcs_destination=gcp.diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs(
 *             uri=bucket.url.apply(lambda url: f"{url}/prefix-"),
 *         ),
 *         dtmf_settings=gcp.diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs(
 *             enabled=True,
 *             max_digits=1,
 *             finish_digit="#",
 *         ),
 *     ))
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using System.Text.Json;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var agent = new Gcp.Diagflow.CxAgent("agent", new()
 *     {
 *         DisplayName = "dialogflowcx-agent",
 *         Location = "global",
 *         DefaultLanguageCode = "en",
 *         SupportedLanguageCodes = new[]
 *         {
 *             "fr",
 *             "de",
 *             "es",
 *         },
 *         TimeZone = "America/New_York",
 *         Description = "Example description.",
 *         AvatarUri = "https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
 *         EnableStackdriverLogging = true,
 *         EnableSpellCorrection = true,
 *         SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs
 *         {
 *             EnableSpeechAdaptation = true,
 *         },
 *     });
 *     var bucket = new Gcp.Storage.Bucket("bucket", new()
 *     {
 *         Name = "dialogflowcx-bucket",
 *         Location = "US",
 *         UniformBucketLevelAccess = true,
 *     });
 *     var basicFlow = new Gcp.Diagflow.CxFlow("basic_flow", new()
 *     {
 *         Parent = agent.Id,
 *         DisplayName = "MyFlow",
 *         Description = "Test Flow",
 *         NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs
 *         {
 *             ClassificationThreshold = 0.3,
 *             ModelType = "MODEL_TYPE_STANDARD",
 *         },
 *         EventHandlers = new[]
 *         {
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "custom-event",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "I didn't get that. Can you say it again?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "sys.no-match-default",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "Sorry, could you say that again?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "sys.no-input-default",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = false,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "One more time?",
 *                                 },
 *                             },
 *                         },
 *                     },
 *                 },
 *             },
 *             new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
 *             {
 *                 Event = "another-event",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = true,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Channel = "some-channel",
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "Some text",
 *                                 },
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             Payload = @"          {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
 * ",
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs
 *                             {
 *                                 Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
 *                             {
 *                                 Text = "some output text",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
 *                             {
 *                                 Ssml = @"            Some example SSML XML
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs
 *                             {
 *                                 Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs
 *                             {
 *                                 AudioUri = "http://example.com/some-audio-file.mp3",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
 *                         {
 *                             TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs
 *                             {
 *                                 PhoneNumber = "1-234-567-8901",
 *                             },
 *                         },
 *                     },
 *                     SetParameterActions = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "some-param",
 *                             Value = "123.45",
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "another-param",
 *                             Value = JsonSerializer.Serialize("abc"),
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "other-param",
 *                             Value = JsonSerializer.Serialize(new[]
 *                             {
 *                                 "foo",
 *                             }),
 *                         },
 *                     },
 *                     ConditionalCases = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs
 *                         {
 *                             Cases = JsonSerializer.Serialize(new[]
 *                             {
 *                                 new Dictionary
 *                                 {
 *                                     ["condition"] = "$sys.func.RAND() < 0.5",
 *                                     ["caseContent"] = new[]
 *                                     {
 *                                         new Dictionary
 *                                         {
 *                                             ["message"] = new Dictionary
 *                                             {
 *                                                 ["text"] = new Dictionary
 *                                                 {
 *                                                     ["text"] = new[]
 *                                                     {
 *                                                         "First case",
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                         new Dictionary
 *                                         {
 *                                             ["additionalCases"] = new Dictionary
 *                                             {
 *                                                 ["cases"] = new[]
 *                                                 {
 *                                                     new Dictionary
 *                                                     {
 *                                                         ["condition"] = "$sys.func.RAND() < 0.2",
 *                                                         ["caseContent"] = new[]
 *                                                         {
 *                                                             new Dictionary
 *                                                             {
 *                                                                 ["message"] = new Dictionary
 *                                                                 {
 *                                                                     ["text"] = new Dictionary
 *                                                                     {
 *                                                                         ["text"] = new[]
 *                                                                         {
 *                                                                             "Nested case",
 *                                                                         },
 *                                                                     },
 *                                                                 },
 *                                                             },
 *                                                         },
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                     },
 *                                 },
 *                                 new Dictionary
 *                                 {
 *                                     ["caseContent"] = new[]
 *                                     {
 *                                         new Dictionary
 *                                         {
 *                                             ["message"] = new Dictionary
 *                                             {
 *                                                 ["text"] = new Dictionary
 *                                                 {
 *                                                     ["text"] = new[]
 *                                                     {
 *                                                         "Final case",
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                     },
 *                                 },
 *                             }),
 *                         },
 *                     },
 *                 },
 *             },
 *         },
 *         TransitionRoutes = new[]
 *         {
 *             new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs
 *             {
 *                 Condition = "true",
 *                 TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs
 *                 {
 *                     ReturnPartialResponses = true,
 *                     Messages = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             Channel = "some-channel",
 *                             Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs
 *                             {
 *                                 Texts = new[]
 *                                 {
 *                                     "Some text",
 *                                 },
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             Payload = @"          {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
 * ",
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs
 *                             {
 *                                 Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs
 *                             {
 *                                 Text = "some output text",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs
 *                             {
 *                                 Ssml = @"            Some example SSML XML
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs
 *                             {
 *                                 Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
 * ",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs
 *                             {
 *                                 AudioUri = "http://example.com/some-audio-file.mp3",
 *                             },
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
 *                         {
 *                             TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs
 *                             {
 *                                 PhoneNumber = "1-234-567-8901",
 *                             },
 *                         },
 *                     },
 *                     SetParameterActions = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "some-param",
 *                             Value = "123.45",
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "another-param",
 *                             Value = JsonSerializer.Serialize("abc"),
 *                         },
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs
 *                         {
 *                             Parameter = "other-param",
 *                             Value = JsonSerializer.Serialize(new[]
 *                             {
 *                                 "foo",
 *                             }),
 *                         },
 *                     },
 *                     ConditionalCases = new[]
 *                     {
 *                         new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs
 *                         {
 *                             Cases = JsonSerializer.Serialize(new[]
 *                             {
 *                                 new Dictionary
 *                                 {
 *                                     ["condition"] = "$sys.func.RAND() < 0.5",
 *                                     ["caseContent"] = new[]
 *                                     {
 *                                         new Dictionary
 *                                         {
 *                                             ["message"] = new Dictionary
 *                                             {
 *                                                 ["text"] = new Dictionary
 *                                                 {
 *                                                     ["text"] = new[]
 *                                                     {
 *                                                         "First case",
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                         new Dictionary
 *                                         {
 *                                             ["additionalCases"] = new Dictionary
 *                                             {
 *                                                 ["cases"] = new[]
 *                                                 {
 *                                                     new Dictionary
 *                                                     {
 *                                                         ["condition"] = "$sys.func.RAND() < 0.2",
 *                                                         ["caseContent"] = new[]
 *                                                         {
 *                                                             new Dictionary
 *                                                             {
 *                                                                 ["message"] = new Dictionary
 *                                                                 {
 *                                                                     ["text"] = new Dictionary
 *                                                                     {
 *                                                                         ["text"] = new[]
 *                                                                         {
 *                                                                             "Nested case",
 *                                                                         },
 *                                                                     },
 *                                                                 },
 *                                                             },
 *                                                         },
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                     },
 *                                 },
 *                                 new Dictionary
 *                                 {
 *                                     ["caseContent"] = new[]
 *                                     {
 *                                         new Dictionary
 *                                         {
 *                                             ["message"] = new Dictionary
 *                                             {
 *                                                 ["text"] = new Dictionary
 *                                                 {
 *                                                     ["text"] = new[]
 *                                                     {
 *                                                         "Final case",
 *                                                     },
 *                                                 },
 *                                             },
 *                                         },
 *                                     },
 *                                 },
 *                             }),
 *                         },
 *                     },
 *                 },
 *                 TargetFlow = agent.StartFlow,
 *             },
 *         },
 *         AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs
 *         {
 *             AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs
 *             {
 *                 Uri = bucket.Url.Apply(url => $"{url}/prefix-"),
 *             },
 *             DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs
 *             {
 *                 Enabled = true,
 *                 MaxDigits = 1,
 *                 FinishDigit = "#",
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"encoding/json"
 * 	"fmt"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/storage"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		agent, err := diagflow.NewCxAgent(ctx, "agent", &diagflow.CxAgentArgs{
 * 			DisplayName:         pulumi.String("dialogflowcx-agent"),
 * 			Location:            pulumi.String("global"),
 * 			DefaultLanguageCode: pulumi.String("en"),
 * 			SupportedLanguageCodes: pulumi.StringArray{
 * 				pulumi.String("fr"),
 * 				pulumi.String("de"),
 * 				pulumi.String("es"),
 * 			},
 * 			TimeZone:                 pulumi.String("America/New_York"),
 * 			Description:              pulumi.String("Example description."),
 * 			AvatarUri:                pulumi.String("https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png"),
 * 			EnableStackdriverLogging: pulumi.Bool(true),
 * 			EnableSpellCorrection:    pulumi.Bool(true),
 * 			SpeechToTextSettings: &diagflow.CxAgentSpeechToTextSettingsArgs{
 * 				EnableSpeechAdaptation: pulumi.Bool(true),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		bucket, err := storage.NewBucket(ctx, "bucket", &storage.BucketArgs{
 * 			Name:                     pulumi.String("dialogflowcx-bucket"),
 * 			Location:                 pulumi.String("US"),
 * 			UniformBucketLevelAccess: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		tmpJSON0, err := json.Marshal("abc")
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json0 := string(tmpJSON0)
 * 		tmpJSON1, err := json.Marshal([]string{
 * 			"foo",
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json1 := string(tmpJSON1)
 * 		tmpJSON2, err := json.Marshal([]interface{}{
 * 			map[string]interface{}{
 * 				"condition": "$sys.func.RAND() < 0.5",
 * 				"caseContent": []interface{}{
 * 					map[string]interface{}{
 * 						"message": map[string]interface{}{
 * 							"text": map[string]interface{}{
 * 								"text": []string{
 * 									"First case",
 * 								},
 * 							},
 * 						},
 * 					},
 * 					map[string]interface{}{
 * 						"additionalCases": map[string]interface{}{
 * 							"cases": []map[string]interface{}{
 * 								map[string]interface{}{
 * 									"condition": "$sys.func.RAND() < 0.2",
 * 									"caseContent": []map[string]interface{}{
 * 										map[string]interface{}{
 * 											"message": map[string]interface{}{
 * 												"text": map[string]interface{}{
 * 													"text": []string{
 * 														"Nested case",
 * 													},
 * 												},
 * 											},
 * 										},
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 			map[string]interface{}{
 * 				"caseContent": []map[string]interface{}{
 * 					map[string]interface{}{
 * 						"message": map[string]interface{}{
 * 							"text": map[string]interface{}{
 * 								"text": []string{
 * 									"Final case",
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json2 := string(tmpJSON2)
 * 		tmpJSON3, err := json.Marshal("abc")
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json3 := string(tmpJSON3)
 * 		tmpJSON4, err := json.Marshal([]string{
 * 			"foo",
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json4 := string(tmpJSON4)
 * 		tmpJSON5, err := json.Marshal([]interface{}{
 * 			map[string]interface{}{
 * 				"condition": "$sys.func.RAND() < 0.5",
 * 				"caseContent": []interface{}{
 * 					map[string]interface{}{
 * 						"message": map[string]interface{}{
 * 							"text": map[string]interface{}{
 * 								"text": []string{
 * 									"First case",
 * 								},
 * 							},
 * 						},
 * 					},
 * 					map[string]interface{}{
 * 						"additionalCases": map[string]interface{}{
 * 							"cases": []map[string]interface{}{
 * 								map[string]interface{}{
 * 									"condition": "$sys.func.RAND() < 0.2",
 * 									"caseContent": []map[string]interface{}{
 * 										map[string]interface{}{
 * 											"message": map[string]interface{}{
 * 												"text": map[string]interface{}{
 * 													"text": []string{
 * 														"Nested case",
 * 													},
 * 												},
 * 											},
 * 										},
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 			map[string]interface{}{
 * 				"caseContent": []map[string]interface{}{
 * 					map[string]interface{}{
 * 						"message": map[string]interface{}{
 * 							"text": map[string]interface{}{
 * 								"text": []string{
 * 									"Final case",
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json5 := string(tmpJSON5)
 * 		_, err = diagflow.NewCxFlow(ctx, "basic_flow", &diagflow.CxFlowArgs{
 * 			Parent:      agent.ID(),
 * 			DisplayName: pulumi.String("MyFlow"),
 * 			Description: pulumi.String("Test Flow"),
 * 			NluSettings: &diagflow.CxFlowNluSettingsArgs{
 * 				ClassificationThreshold: pulumi.Float64(0.3),
 * 				ModelType:               pulumi.String("MODEL_TYPE_STANDARD"),
 * 			},
 * 			EventHandlers: diagflow.CxFlowEventHandlerArray{
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("custom-event"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("I didn't get that. Can you say it again?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("sys.no-match-default"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("Sorry, could you say that again?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("sys.no-input-default"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(false),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("One more time?"),
 * 									},
 * 								},
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&diagflow.CxFlowEventHandlerArgs{
 * 					Event: pulumi.String("another-event"),
 * 					TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(true),
 * 						Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Channel: pulumi.String("some-channel"),
 * 								Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("Some text"),
 * 									},
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								Payload: pulumi.String("          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								ConversationSuccess: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{
 * 									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								OutputAudioText: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
 * 									Text: pulumi.String("some output text"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								OutputAudioText: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
 * 									Ssml: pulumi.String("            Some example SSML XML\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								LiveAgentHandoff: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{
 * 									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								PlayAudio: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{
 * 									AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
 * 								TelephonyTransferCall: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{
 * 									PhoneNumber: pulumi.String("1-234-567-8901"),
 * 								},
 * 							},
 * 						},
 * 						SetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("some-param"),
 * 								Value:     pulumi.String("123.45"),
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("another-param"),
 * 								Value:     pulumi.String(json0),
 * 							},
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("other-param"),
 * 								Value:     pulumi.String(json1),
 * 							},
 * 						},
 * 						ConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{
 * 							&diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{
 * 								Cases: pulumi.String(json2),
 * 							},
 * 						},
 * 					},
 * 				},
 * 			},
 * 			TransitionRoutes: diagflow.CxFlowTransitionRouteArray{
 * 				&diagflow.CxFlowTransitionRouteArgs{
 * 					Condition: pulumi.String("true"),
 * 					TriggerFulfillment: &diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{
 * 						ReturnPartialResponses: pulumi.Bool(true),
 * 						Messages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								Channel: pulumi.String("some-channel"),
 * 								Text: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{
 * 									Texts: pulumi.StringArray{
 * 										pulumi.String("Some text"),
 * 									},
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								Payload: pulumi.String("          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								ConversationSuccess: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{
 * 									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								OutputAudioText: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{
 * 									Text: pulumi.String("some output text"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								OutputAudioText: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{
 * 									Ssml: pulumi.String("            Some example SSML XML\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								LiveAgentHandoff: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{
 * 									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								PlayAudio: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{
 * 									AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
 * 								},
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
 * 								TelephonyTransferCall: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{
 * 									PhoneNumber: pulumi.String("1-234-567-8901"),
 * 								},
 * 							},
 * 						},
 * 						SetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("some-param"),
 * 								Value:     pulumi.String("123.45"),
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("another-param"),
 * 								Value:     pulumi.String(json3),
 * 							},
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{
 * 								Parameter: pulumi.String("other-param"),
 * 								Value:     pulumi.String(json4),
 * 							},
 * 						},
 * 						ConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{
 * 							&diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{
 * 								Cases: pulumi.String(json5),
 * 							},
 * 						},
 * 					},
 * 					TargetFlow: agent.StartFlow,
 * 				},
 * 			},
 * 			AdvancedSettings: &diagflow.CxFlowAdvancedSettingsArgs{
 * 				AudioExportGcsDestination: &diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{
 * 					Uri: bucket.Url.ApplyT(func(url string) (string, error) {
 * 						return fmt.Sprintf("%v/prefix-", url), nil
 * 					}).(pulumi.StringOutput),
 * 				},
 * 				DtmfSettings: &diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{
 * 					Enabled:     pulumi.Bool(true),
 * 					MaxDigits:   pulumi.Int(1),
 * 					FinishDigit: pulumi.String("#"),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.diagflow.CxAgent;
 * import com.pulumi.gcp.diagflow.CxAgentArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;
 * import com.pulumi.gcp.storage.Bucket;
 * import com.pulumi.gcp.storage.BucketArgs;
 * import com.pulumi.gcp.diagflow.CxFlow;
 * import com.pulumi.gcp.diagflow.CxFlowArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;
 * import com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;
 * import static com.pulumi.codegen.internal.Serialization.*;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var agent = new CxAgent("agent", CxAgentArgs.builder()
 *             .displayName("dialogflowcx-agent")
 *             .location("global")
 *             .defaultLanguageCode("en")
 *             .supportedLanguageCodes(
 *                 "fr",
 *                 "de",
 *                 "es")
 *             .timeZone("America/New_York")
 *             .description("Example description.")
 *             .avatarUri("https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png")
 *             .enableStackdriverLogging(true)
 *             .enableSpellCorrection(true)
 *             .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()
 *                 .enableSpeechAdaptation(true)
 *                 .build())
 *             .build());
 *         var bucket = new Bucket("bucket", BucketArgs.builder()
 *             .name("dialogflowcx-bucket")
 *             .location("US")
 *             .uniformBucketLevelAccess(true)
 *             .build());
 *         var basicFlow = new CxFlow("basicFlow", CxFlowArgs.builder()
 *             .parent(agent.id())
 *             .displayName("MyFlow")
 *             .description("Test Flow")
 *             .nluSettings(CxFlowNluSettingsArgs.builder()
 *                 .classificationThreshold(0.3)
 *                 .modelType("MODEL_TYPE_STANDARD")
 *                 .build())
 *             .eventHandlers(
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("custom-event")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("I didn't get that. Can you say it again?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build(),
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("sys.no-match-default")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("Sorry, could you say that again?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build(),
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("sys.no-input-default")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(false)
 *                         .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                             .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("One more time?")
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .build(),
 *                 CxFlowEventHandlerArgs.builder()
 *                     .event("another-event")
 *                     .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
 *                         .returnPartialResponses(true)
 *                         .messages(
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .channel("some-channel")
 *                                 .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
 *                                     .texts("Some text")
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .payload("""
 *           {"some-key": "some-value", "other-key": ["other-value"]}
 *                                 """)
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()
 *                                     .metadata("""
 *             {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *                                     """)
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
 *                                     .text("some output text")
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
 *                                     .ssml("""
 *             Some example SSML XML
 *                                     """)
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
 *                                     .metadata("""
 *             {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *                                     """)
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()
 *                                     .audioUri("http://example.com/some-audio-file.mp3")
 *                                     .build())
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
 *                                 .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
 *                                     .phoneNumber("1-234-567-8901")
 *                                     .build())
 *                                 .build())
 *                         .setParameterActions(
 *                             CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
 *                                 .parameter("some-param")
 *                                 .value("123.45")
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
 *                                 .parameter("another-param")
 *                                 .value(serializeJson(
 *                                     "abc"))
 *                                 .build(),
 *                             CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
 *                                 .parameter("other-param")
 *                                 .value(serializeJson(
 *                                     jsonArray("foo")))
 *                                 .build())
 *                         .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()
 *                             .cases(serializeJson(
 *                                 jsonArray(
 *                                     jsonObject(
 *                                         jsonProperty("condition", "$sys.func.RAND() < 0.5"),
 *                                         jsonProperty("caseContent", jsonArray(
 *                                             jsonObject(
 *                                                 jsonProperty("message", jsonObject(
 *                                                     jsonProperty("text", jsonObject(
 *                                                         jsonProperty("text", jsonArray("First case"))
 *                                                     ))
 *                                                 ))
 *                                             ),
 *                                             jsonObject(
 *                                                 jsonProperty("additionalCases", jsonObject(
 *                                                     jsonProperty("cases", jsonArray(jsonObject(
 *                                                         jsonProperty("condition", "$sys.func.RAND() < 0.2"),
 *                                                         jsonProperty("caseContent", jsonArray(jsonObject(
 *                                                             jsonProperty("message", jsonObject(
 *                                                                 jsonProperty("text", jsonObject(
 *                                                                     jsonProperty("text", jsonArray("Nested case"))
 *                                                                 ))
 *                                                             ))
 *                                                         )))
 *                                                     )))
 *                                                 ))
 *                                             )
 *                                         ))
 *                                     ),
 *                                     jsonObject(
 *                                         jsonProperty("caseContent", jsonArray(jsonObject(
 *                                             jsonProperty("message", jsonObject(
 *                                                 jsonProperty("text", jsonObject(
 *                                                     jsonProperty("text", jsonArray("Final case"))
 *                                                 ))
 *                                             ))
 *                                         )))
 *                                     )
 *                                 )))
 *                             .build())
 *                         .build())
 *                     .build())
 *             .transitionRoutes(CxFlowTransitionRouteArgs.builder()
 *                 .condition("true")
 *                 .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()
 *                     .returnPartialResponses(true)
 *                     .messages(
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .channel("some-channel")
 *                             .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()
 *                                 .texts("Some text")
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .payload("""
 *           {"some-key": "some-value", "other-key": ["other-value"]}
 *                             """)
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()
 *                                 .metadata("""
 *             {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *                                 """)
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
 *                                 .text("some output text")
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
 *                                 .ssml("""
 *             Some example SSML XML
 *                                 """)
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
 *                                 .metadata("""
 *             {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *                                 """)
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()
 *                                 .audioUri("http://example.com/some-audio-file.mp3")
 *                                 .build())
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
 *                             .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
 *                                 .phoneNumber("1-234-567-8901")
 *                                 .build())
 *                             .build())
 *                     .setParameterActions(
 *                         CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
 *                             .parameter("some-param")
 *                             .value("123.45")
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
 *                             .parameter("another-param")
 *                             .value(serializeJson(
 *                                 "abc"))
 *                             .build(),
 *                         CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
 *                             .parameter("other-param")
 *                             .value(serializeJson(
 *                                 jsonArray("foo")))
 *                             .build())
 *                     .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()
 *                         .cases(serializeJson(
 *                             jsonArray(
 *                                 jsonObject(
 *                                     jsonProperty("condition", "$sys.func.RAND() < 0.5"),
 *                                     jsonProperty("caseContent", jsonArray(
 *                                         jsonObject(
 *                                             jsonProperty("message", jsonObject(
 *                                                 jsonProperty("text", jsonObject(
 *                                                     jsonProperty("text", jsonArray("First case"))
 *                                                 ))
 *                                             ))
 *                                         ),
 *                                         jsonObject(
 *                                             jsonProperty("additionalCases", jsonObject(
 *                                                 jsonProperty("cases", jsonArray(jsonObject(
 *                                                     jsonProperty("condition", "$sys.func.RAND() < 0.2"),
 *                                                     jsonProperty("caseContent", jsonArray(jsonObject(
 *                                                         jsonProperty("message", jsonObject(
 *                                                             jsonProperty("text", jsonObject(
 *                                                                 jsonProperty("text", jsonArray("Nested case"))
 *                                                             ))
 *                                                         ))
 *                                                     )))
 *                                                 )))
 *                                             ))
 *                                         )
 *                                     ))
 *                                 ),
 *                                 jsonObject(
 *                                     jsonProperty("caseContent", jsonArray(jsonObject(
 *                                         jsonProperty("message", jsonObject(
 *                                             jsonProperty("text", jsonObject(
 *                                                 jsonProperty("text", jsonArray("Final case"))
 *                                             ))
 *                                         ))
 *                                     )))
 *                                 )
 *                             )))
 *                         .build())
 *                     .build())
 *                 .targetFlow(agent.startFlow())
 *                 .build())
 *             .advancedSettings(CxFlowAdvancedSettingsArgs.builder()
 *                 .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()
 *                     .uri(bucket.url().applyValue(url -> String.format("%s/prefix-", url)))
 *                     .build())
 *                 .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()
 *                     .enabled(true)
 *                     .maxDigits(1)
 *                     .finishDigit("#")
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   agent:
 *     type: gcp:diagflow:CxAgent
 *     properties:
 *       displayName: dialogflowcx-agent
 *       location: global
 *       defaultLanguageCode: en
 *       supportedLanguageCodes:
 *         - fr
 *         - de
 *         - es
 *       timeZone: America/New_York
 *       description: Example description.
 *       avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png
 *       enableStackdriverLogging: true
 *       enableSpellCorrection: true
 *       speechToTextSettings:
 *         enableSpeechAdaptation: true
 *   bucket:
 *     type: gcp:storage:Bucket
 *     properties:
 *       name: dialogflowcx-bucket
 *       location: US
 *       uniformBucketLevelAccess: true
 *   basicFlow:
 *     type: gcp:diagflow:CxFlow
 *     name: basic_flow
 *     properties:
 *       parent: ${agent.id}
 *       displayName: MyFlow
 *       description: Test Flow
 *       nluSettings:
 *         classificationThreshold: 0.3
 *         modelType: MODEL_TYPE_STANDARD
 *       eventHandlers:
 *         - event: custom-event
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - I didn't get that. Can you say it again?
 *         - event: sys.no-match-default
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - Sorry, could you say that again?
 *         - event: sys.no-input-default
 *           triggerFulfillment:
 *             returnPartialResponses: false
 *             messages:
 *               - text:
 *                   texts:
 *                     - One more time?
 *         - event: another-event
 *           triggerFulfillment:
 *             returnPartialResponses: true
 *             messages:
 *               - channel: some-channel
 *                 text:
 *                   texts:
 *                     - Some text
 *               - payload: |2
 *                             {"some-key": "some-value", "other-key": ["other-value"]}
 *               - conversationSuccess:
 *                   metadata: |2
 *                                 {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *               - outputAudioText:
 *                   text: some output text
 *               - outputAudioText:
 *                   ssml: |2
 *                                 Some example SSML XML
 *               - liveAgentHandoff:
 *                   metadata: |2
 *                                 {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *               - playAudio:
 *                   audioUri: http://example.com/some-audio-file.mp3
 *               - telephonyTransferCall:
 *                   phoneNumber: 1-234-567-8901
 *             setParameterActions:
 *               - parameter: some-param
 *                 value: '123.45'
 *               - parameter: another-param
 *                 value:
 *                   fn::toJSON: abc
 *               - parameter: other-param
 *                 value:
 *                   fn::toJSON:
 *                     - foo
 *             conditionalCases:
 *               - cases:
 *                   fn::toJSON:
 *                     - condition: $sys.func.RAND() < 0.5
 *                       caseContent:
 *                         - message:
 *                             text:
 *                               text:
 *                                 - First case
 *                         - additionalCases:
 *                             cases:
 *                               - condition: $sys.func.RAND() < 0.2
 *                                 caseContent:
 *                                   - message:
 *                                       text:
 *                                         text:
 *                                           - Nested case
 *                     - caseContent:
 *                         - message:
 *                             text:
 *                               text:
 *                                 - Final case
 *       transitionRoutes:
 *         - condition: 'true'
 *           triggerFulfillment:
 *             returnPartialResponses: true
 *             messages:
 *               - channel: some-channel
 *                 text:
 *                   texts:
 *                     - Some text
 *               - payload: |2
 *                             {"some-key": "some-value", "other-key": ["other-value"]}
 *               - conversationSuccess:
 *                   metadata: |2
 *                                 {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *               - outputAudioText:
 *                   text: some output text
 *               - outputAudioText:
 *                   ssml: |2
 *                                 Some example SSML XML
 *               - liveAgentHandoff:
 *                   metadata: |2
 *                                 {"some-metadata-key": "some-value", "other-metadata-key": 1234}
 *               - playAudio:
 *                   audioUri: http://example.com/some-audio-file.mp3
 *               - telephonyTransferCall:
 *                   phoneNumber: 1-234-567-8901
 *             setParameterActions:
 *               - parameter: some-param
 *                 value: '123.45'
 *               - parameter: another-param
 *                 value:
 *                   fn::toJSON: abc
 *               - parameter: other-param
 *                 value:
 *                   fn::toJSON:
 *                     - foo
 *             conditionalCases:
 *               - cases:
 *                   fn::toJSON:
 *                     - condition: $sys.func.RAND() < 0.5
 *                       caseContent:
 *                         - message:
 *                             text:
 *                               text:
 *                                 - First case
 *                         - additionalCases:
 *                             cases:
 *                               - condition: $sys.func.RAND() < 0.2
 *                                 caseContent:
 *                                   - message:
 *                                       text:
 *                                         text:
 *                                           - Nested case
 *                     - caseContent:
 *                         - message:
 *                             text:
 *                               text:
 *                                 - Final case
 *           targetFlow: ${agent.startFlow}
 *       advancedSettings:
 *         audioExportGcsDestination:
 *           uri: ${bucket.url}/prefix-
 *         dtmfSettings:
 *           enabled: true
 *           maxDigits: 1
 *           finishDigit: '#'
 * ```
 * 
 * ## Import
 * Flow can be imported using any of these accepted formats:
 * * `{{parent}}/flows/{{name}}`
 * * `{{parent}}/{{name}}`
 * When using the `pulumi import` command, Flow can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}
 * ```
 * ```sh
 * $ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}
 * ```
 * @property advancedSettings Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.
 * Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
 * Structure is documented below.
 * @property description The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
 * @property displayName The human-readable name of the flow.
 * - - -
 * @property eventHandlers A flow's event handlers serve two purposes:
 * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
 * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
 * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
 * Structure is documented below.
 * @property isDefaultStartFlow Marks this as the [Default Start Flow](https://cloud.google.com/dialogflow/cx/docs/concept/flow#start) for an agent. When you create an agent, the Default Start Flow is created automatically.
 * The Default Start Flow cannot be deleted; deleting the `gcp.diagflow.CxFlow` resource does nothing to the underlying GCP resources.
 * > Avoid having multiple `gcp.diagflow.CxFlow` resources linked to the same agent with `is_default_start_flow = true` because they will compete to control a single Default Start Flow resource in GCP.
 * @property languageCode The language of the following fields in flow:
 * Flow.event_handlers.trigger_fulfillment.messages
 * Flow.event_handlers.trigger_fulfillment.conditional_cases
 * Flow.transition_routes.trigger_fulfillment.messages
 * Flow.transition_routes.trigger_fulfillment.conditional_cases
 * If not specified, the agent's default language is used. Many languages are supported. Note: languages must be enabled in the agent before they can be used.
 * @property nluSettings NLU related settings of the flow.
 * Structure is documented below.
 * @property parent The agent to create a flow for.
 * Format: projects//locations//agents/.
 * @property transitionRouteGroups A flow's transition route group serve two purposes:
 * They are responsible for matching the user's first utterances in the flow.
 * They are inherited by every page's [transition route groups][Page.transition_route_groups]. Transition route groups defined in the page have higher priority than those defined in the flow.
 * Format:projects//locations//agents//flows//transitionRouteGroups/.
 * @property transitionRoutes A flow's transition routes serve two purposes:
 * They are responsible for matching the user's first utterances in the flow.
 * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
 * TransitionRoutes are evalauted in the following order:
 * TransitionRoutes with intent specified.
 * TransitionRoutes with only condition specified.
 * TransitionRoutes with intent specified are inherited by pages in the flow.
 * Structure is documented below.
 */
public data class CxFlowArgs(
    public val advancedSettings: Output? = null,
    public val description: Output? = null,
    public val displayName: Output? = null,
    public val eventHandlers: Output>? = null,
    public val isDefaultStartFlow: Output? = null,
    public val languageCode: Output? = null,
    public val nluSettings: Output? = null,
    public val parent: Output? = null,
    public val transitionRouteGroups: Output>? = null,
    public val transitionRoutes: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.diagflow.CxFlowArgs =
        com.pulumi.gcp.diagflow.CxFlowArgs.builder()
            .advancedSettings(advancedSettings?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .description(description?.applyValue({ args0 -> args0 }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .eventHandlers(
                eventHandlers?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .isDefaultStartFlow(isDefaultStartFlow?.applyValue({ args0 -> args0 }))
            .languageCode(languageCode?.applyValue({ args0 -> args0 }))
            .nluSettings(nluSettings?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .parent(parent?.applyValue({ args0 -> args0 }))
            .transitionRouteGroups(transitionRouteGroups?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .transitionRoutes(
                transitionRoutes?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [CxFlowArgs].
 */
@PulumiTagMarker
public class CxFlowArgsBuilder internal constructor() {
    private var advancedSettings: Output? = null

    private var description: Output? = null

    private var displayName: Output? = null

    private var eventHandlers: Output>? = null

    private var isDefaultStartFlow: Output? = null

    private var languageCode: Output? = null

    private var nluSettings: Output? = null

    private var parent: Output? = null

    private var transitionRouteGroups: Output>? = null

    private var transitionRoutes: Output>? = null

    /**
     * @param value Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.
     * Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
     * Structure is documented below.
     */
    @JvmName("wlminaqbboftjyek")
    public suspend fun advancedSettings(`value`: Output) {
        this.advancedSettings = value
    }

    /**
     * @param value The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
     */
    @JvmName("fopcoqpsvuruhruo")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The human-readable name of the flow.
     * - - -
     */
    @JvmName("gycvuvokdnypidbf")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("ofxmpvyrsxdoosxj")
    public suspend fun eventHandlers(`value`: Output>) {
        this.eventHandlers = value
    }

    @JvmName("cuhcgyeyxcroaamg")
    public suspend fun eventHandlers(vararg values: Output) {
        this.eventHandlers = Output.all(values.asList())
    }

    /**
     * @param values A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("utugkydgurtuixov")
    public suspend fun eventHandlers(values: List>) {
        this.eventHandlers = Output.all(values)
    }

    /**
     * @param value Marks this as the [Default Start Flow](https://cloud.google.com/dialogflow/cx/docs/concept/flow#start) for an agent. When you create an agent, the Default Start Flow is created automatically.
     * The Default Start Flow cannot be deleted; deleting the `gcp.diagflow.CxFlow` resource does nothing to the underlying GCP resources.
     * > Avoid having multiple `gcp.diagflow.CxFlow` resources linked to the same agent with `is_default_start_flow = true` because they will compete to control a single Default Start Flow resource in GCP.
     */
    @JvmName("qqayyxkiafqkvrch")
    public suspend fun isDefaultStartFlow(`value`: Output) {
        this.isDefaultStartFlow = value
    }

    /**
     * @param value The language of the following fields in flow:
     * Flow.event_handlers.trigger_fulfillment.messages
     * Flow.event_handlers.trigger_fulfillment.conditional_cases
     * Flow.transition_routes.trigger_fulfillment.messages
     * Flow.transition_routes.trigger_fulfillment.conditional_cases
     * If not specified, the agent's default language is used. Many languages are supported. Note: languages must be enabled in the agent before they can be used.
     */
    @JvmName("tjuwyskkvwsqndll")
    public suspend fun languageCode(`value`: Output) {
        this.languageCode = value
    }

    /**
     * @param value NLU related settings of the flow.
     * Structure is documented below.
     */
    @JvmName("bglatktxhsjcfkfx")
    public suspend fun nluSettings(`value`: Output) {
        this.nluSettings = value
    }

    /**
     * @param value The agent to create a flow for.
     * Format: projects//locations//agents/.
     */
    @JvmName("xvjpbhqawypriqyf")
    public suspend fun parent(`value`: Output) {
        this.parent = value
    }

    /**
     * @param value A flow's transition route group serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition route groups][Page.transition_route_groups]. Transition route groups defined in the page have higher priority than those defined in the flow.
     * Format:projects//locations//agents//flows//transitionRouteGroups/.
     */
    @JvmName("sfacyutkdotgjtjh")
    public suspend fun transitionRouteGroups(`value`: Output>) {
        this.transitionRouteGroups = value
    }

    @JvmName("ggyplbakonfqhbuy")
    public suspend fun transitionRouteGroups(vararg values: Output) {
        this.transitionRouteGroups = Output.all(values.asList())
    }

    /**
     * @param values A flow's transition route group serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition route groups][Page.transition_route_groups]. Transition route groups defined in the page have higher priority than those defined in the flow.
     * Format:projects//locations//agents//flows//transitionRouteGroups/.
     */
    @JvmName("xwvqydofnbdrcqay")
    public suspend fun transitionRouteGroups(values: List>) {
        this.transitionRouteGroups = Output.all(values)
    }

    /**
     * @param value A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("vjvkvsumicolkbda")
    public suspend fun transitionRoutes(`value`: Output>) {
        this.transitionRoutes = value
    }

    @JvmName("tvknkqojrdhuyltt")
    public suspend fun transitionRoutes(vararg values: Output) {
        this.transitionRoutes = Output.all(values.asList())
    }

    /**
     * @param values A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("depmlnjoevwropkq")
    public suspend fun transitionRoutes(values: List>) {
        this.transitionRoutes = Output.all(values)
    }

    /**
     * @param value Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.
     * Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
     * Structure is documented below.
     */
    @JvmName("ulwxljehwxfgfgvl")
    public suspend fun advancedSettings(`value`: CxFlowAdvancedSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.advancedSettings = mapped
    }

    /**
     * @param argument Hierarchical advanced settings for this flow. The settings exposed at the lower level overrides the settings exposed at the higher level.
     * Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.
     * Structure is documented below.
     */
    @JvmName("lsirmrxashsarrut")
    public suspend fun advancedSettings(argument: suspend CxFlowAdvancedSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = CxFlowAdvancedSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.advancedSettings = mapped
    }

    /**
     * @param value The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
     */
    @JvmName("etrkosbcbtlrqtib")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The human-readable name of the flow.
     * - - -
     */
    @JvmName("tcwvflfvurgycvcv")
    public suspend fun displayName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.displayName = mapped
    }

    /**
     * @param value A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("swpggtjuimodhqcp")
    public suspend fun eventHandlers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.eventHandlers = mapped
    }

    /**
     * @param argument A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("vqydfytlbxcnacrp")
    public suspend fun eventHandlers(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            CxFlowEventHandlerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.eventHandlers = mapped
    }

    /**
     * @param argument A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("pxpwvuwpxegndxnl")
    public suspend fun eventHandlers(vararg argument: suspend CxFlowEventHandlerArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            CxFlowEventHandlerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.eventHandlers = mapped
    }

    /**
     * @param argument A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("vtrqvrbpuuabotrv")
    public suspend fun eventHandlers(argument: suspend CxFlowEventHandlerArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(CxFlowEventHandlerArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.eventHandlers = mapped
    }

    /**
     * @param values A flow's event handlers serve two purposes:
     * They are responsible for handling events (e.g. no match, webhook errors) in the flow.
     * They are inherited by every page's [event handlers][Page.event_handlers], which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow.
     * Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored.
     * Structure is documented below.
     */
    @JvmName("yfstjhahqjdexgox")
    public suspend fun eventHandlers(vararg values: CxFlowEventHandlerArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.eventHandlers = mapped
    }

    /**
     * @param value Marks this as the [Default Start Flow](https://cloud.google.com/dialogflow/cx/docs/concept/flow#start) for an agent. When you create an agent, the Default Start Flow is created automatically.
     * The Default Start Flow cannot be deleted; deleting the `gcp.diagflow.CxFlow` resource does nothing to the underlying GCP resources.
     * > Avoid having multiple `gcp.diagflow.CxFlow` resources linked to the same agent with `is_default_start_flow = true` because they will compete to control a single Default Start Flow resource in GCP.
     */
    @JvmName("ansfqggbvouffrgh")
    public suspend fun isDefaultStartFlow(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.isDefaultStartFlow = mapped
    }

    /**
     * @param value The language of the following fields in flow:
     * Flow.event_handlers.trigger_fulfillment.messages
     * Flow.event_handlers.trigger_fulfillment.conditional_cases
     * Flow.transition_routes.trigger_fulfillment.messages
     * Flow.transition_routes.trigger_fulfillment.conditional_cases
     * If not specified, the agent's default language is used. Many languages are supported. Note: languages must be enabled in the agent before they can be used.
     */
    @JvmName("pyquldmcgntpghbj")
    public suspend fun languageCode(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.languageCode = mapped
    }

    /**
     * @param value NLU related settings of the flow.
     * Structure is documented below.
     */
    @JvmName("vilpbgwaphqyjvrl")
    public suspend fun nluSettings(`value`: CxFlowNluSettingsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.nluSettings = mapped
    }

    /**
     * @param argument NLU related settings of the flow.
     * Structure is documented below.
     */
    @JvmName("nplgqmbudouiyjeq")
    public suspend fun nluSettings(argument: suspend CxFlowNluSettingsArgsBuilder.() -> Unit) {
        val toBeMapped = CxFlowNluSettingsArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.nluSettings = mapped
    }

    /**
     * @param value The agent to create a flow for.
     * Format: projects//locations//agents/.
     */
    @JvmName("bgmijeuuellucxru")
    public suspend fun parent(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parent = mapped
    }

    /**
     * @param value A flow's transition route group serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition route groups][Page.transition_route_groups]. Transition route groups defined in the page have higher priority than those defined in the flow.
     * Format:projects//locations//agents//flows//transitionRouteGroups/.
     */
    @JvmName("wogmikkbyyldhxfk")
    public suspend fun transitionRouteGroups(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.transitionRouteGroups = mapped
    }

    /**
     * @param values A flow's transition route group serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition route groups][Page.transition_route_groups]. Transition route groups defined in the page have higher priority than those defined in the flow.
     * Format:projects//locations//agents//flows//transitionRouteGroups/.
     */
    @JvmName("hywvkjsolhxnryyv")
    public suspend fun transitionRouteGroups(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.transitionRouteGroups = mapped
    }

    /**
     * @param value A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("iaqnpjqjjssmkbyl")
    public suspend fun transitionRoutes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.transitionRoutes = mapped
    }

    /**
     * @param argument A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("hksnvldaukexaxww")
    public suspend fun transitionRoutes(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            CxFlowTransitionRouteArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.transitionRoutes = mapped
    }

    /**
     * @param argument A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("infrfloilrfhxmrv")
    public suspend fun transitionRoutes(vararg argument: suspend CxFlowTransitionRouteArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            CxFlowTransitionRouteArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.transitionRoutes = mapped
    }

    /**
     * @param argument A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("jdvuqyixeioibavu")
    public suspend fun transitionRoutes(argument: suspend CxFlowTransitionRouteArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(CxFlowTransitionRouteArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.transitionRoutes = mapped
    }

    /**
     * @param values A flow's transition routes serve two purposes:
     * They are responsible for matching the user's first utterances in the flow.
     * They are inherited by every page's [transition routes][Page.transition_routes] and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow.
     * TransitionRoutes are evalauted in the following order:
     * TransitionRoutes with intent specified.
     * TransitionRoutes with only condition specified.
     * TransitionRoutes with intent specified are inherited by pages in the flow.
     * Structure is documented below.
     */
    @JvmName("eoaqglhpdmfvvwnl")
    public suspend fun transitionRoutes(vararg values: CxFlowTransitionRouteArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.transitionRoutes = mapped
    }

    internal fun build(): CxFlowArgs = CxFlowArgs(
        advancedSettings = advancedSettings,
        description = description,
        displayName = displayName,
        eventHandlers = eventHandlers,
        isDefaultStartFlow = isDefaultStartFlow,
        languageCode = languageCode,
        nluSettings = nluSettings,
        parent = parent,
        transitionRouteGroups = transitionRouteGroups,
        transitionRoutes = transitionRoutes,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy