1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. diagflow
  5. CxFlow
Google Cloud Classic v8.5.0 published on Tuesday, Oct 8, 2024 by Pulumi

gcp.diagflow.CxFlow

Explore with Pulumi AI

gcp logo
Google Cloud Classic v8.5.0 published on Tuesday, Oct 8, 2024 by Pulumi

    Flows represents the conversation flows when you build your chatbot agent.

    To get more information about Flow, see:

    Example Usage

    Dialogflowcx Flow Basic

    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?"],
                        },
                    }],
                },
            },
        ],
    });
    
    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={
            "enable_speech_adaptation": True,
        })
    basic_flow = gcp.diagflow.CxFlow("basic_flow",
        parent=agent.id,
        display_name="MyFlow",
        description="Test Flow",
        nlu_settings={
            "classification_threshold": 0.3,
            "model_type": "MODEL_TYPE_STANDARD",
        },
        event_handlers=[
            {
                "event": "custom-event",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["I didn't get that. Can you say it again?"],
                        },
                    }],
                },
            },
            {
                "event": "sys.no-match-default",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["Sorry, could you say that again?"],
                        },
                    }],
                },
            },
            {
                "event": "sys.no-input-default",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["One more time?"],
                        },
                    }],
                },
            },
        ])
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-gcp/sdk/v8/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
    	})
    }
    
    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?",
                                    },
                                },
                            },
                        },
                    },
                },
            },
        });
    
    });
    
    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());
    
        }
    }
    
    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

    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: "            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\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: "            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\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: "#",
            },
        },
    });
    
    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={
            "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={
            "classification_threshold": 0.3,
            "model_type": "MODEL_TYPE_STANDARD",
        },
        event_handlers=[
            {
                "event": "custom-event",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["I didn't get that. Can you say it again?"],
                        },
                    }],
                },
            },
            {
                "event": "sys.no-match-default",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["Sorry, could you say that again?"],
                        },
                    }],
                },
            },
            {
                "event": "sys.no-input-default",
                "trigger_fulfillment": {
                    "return_partial_responses": False,
                    "messages": [{
                        "text": {
                            "texts": ["One more time?"],
                        },
                    }],
                },
            },
            {
                "event": "another-event",
                "trigger_fulfillment": {
                    "return_partial_responses": True,
                    "messages": [
                        {
                            "channel": "some-channel",
                            "text": {
                                "texts": ["Some text"],
                            },
                        },
                        {
                            "payload": "          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                        },
                        {
                            "conversation_success": {
                                "metadata": "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                            },
                        },
                        {
                            "output_audio_text": {
                                "text": "some output text",
                            },
                        },
                        {
                            "output_audio_text": {
                                "ssml": "            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                            },
                        },
                        {
                            "live_agent_handoff": {
                                "metadata": "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                            },
                        },
                        {
                            "play_audio": {
                                "audio_uri": "http://example.com/some-audio-file.mp3",
                            },
                        },
                        {
                            "telephony_transfer_call": {
                                "phone_number": "1-234-567-8901",
                            },
                        },
                    ],
                    "set_parameter_actions": [
                        {
                            "parameter": "some-param",
                            "value": "123.45",
                        },
                        {
                            "parameter": "another-param",
                            "value": json.dumps("abc"),
                        },
                        {
                            "parameter": "other-param",
                            "value": json.dumps(["foo"]),
                        },
                    ],
                    "conditional_cases": [{
                        "cases": json.dumps([
                            {
                                "condition": "$sys.func.RAND() < 0.5",
                                "case_content": [
                                    {
                                        "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=[{
            "condition": "true",
            "trigger_fulfillment": {
                "return_partial_responses": True,
                "messages": [
                    {
                        "channel": "some-channel",
                        "text": {
                            "texts": ["Some text"],
                        },
                    },
                    {
                        "payload": "          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                    },
                    {
                        "conversation_success": {
                            "metadata": "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        },
                    },
                    {
                        "output_audio_text": {
                            "text": "some output text",
                        },
                    },
                    {
                        "output_audio_text": {
                            "ssml": "            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                        },
                    },
                    {
                        "live_agent_handoff": {
                            "metadata": "            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        },
                    },
                    {
                        "play_audio": {
                            "audio_uri": "http://example.com/some-audio-file.mp3",
                        },
                    },
                    {
                        "telephony_transfer_call": {
                            "phone_number": "1-234-567-8901",
                        },
                    },
                ],
                "set_parameter_actions": [
                    {
                        "parameter": "some-param",
                        "value": "123.45",
                    },
                    {
                        "parameter": "another-param",
                        "value": json.dumps("abc"),
                    },
                    {
                        "parameter": "other-param",
                        "value": json.dumps(["foo"]),
                    },
                ],
                "conditional_cases": [{
                    "cases": json.dumps([
                        {
                            "condition": "$sys.func.RAND() < 0.5",
                            "case_content": [
                                {
                                    "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={
            "audio_export_gcs_destination": {
                "uri": bucket.url.apply(lambda url: f"{url}/prefix-"),
            },
            "dtmf_settings": {
                "enabled": True,
                "max_digits": 1,
                "finish_digit": "#",
            },
        })
    
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/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("            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\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("            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\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
    	})
    }
    
    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 = @"            <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                },
                            },
                            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<string, object?>
                                    {
                                        ["condition"] = "$sys.func.RAND() < 0.5",
                                        ["caseContent"] = new[]
                                        {
                                            new Dictionary<string, object?>
                                            {
                                                ["message"] = new Dictionary<string, object?>
                                                {
                                                    ["text"] = new Dictionary<string, object?>
                                                    {
                                                        ["text"] = new[]
                                                        {
                                                            "First case",
                                                        },
                                                    },
                                                },
                                            },
                                            new Dictionary<string, object?>
                                            {
                                                ["additionalCases"] = new Dictionary<string, object?>
                                                {
                                                    ["cases"] = new[]
                                                    {
                                                        new Dictionary<string, object?>
                                                        {
                                                            ["condition"] = "$sys.func.RAND() < 0.2",
                                                            ["caseContent"] = new[]
                                                            {
                                                                new Dictionary<string, object?>
                                                                {
                                                                    ["message"] = new Dictionary<string, object?>
                                                                    {
                                                                        ["text"] = new Dictionary<string, object?>
                                                                        {
                                                                            ["text"] = new[]
                                                                            {
                                                                                "Nested case",
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                    new Dictionary<string, object?>
                                    {
                                        ["caseContent"] = new[]
                                        {
                                            new Dictionary<string, object?>
                                            {
                                                ["message"] = new Dictionary<string, object?>
                                                {
                                                    ["text"] = new Dictionary<string, object?>
                                                    {
                                                        ["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 = @"            <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                },
                            },
                            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<string, object?>
                                    {
                                        ["condition"] = "$sys.func.RAND() < 0.5",
                                        ["caseContent"] = new[]
                                        {
                                            new Dictionary<string, object?>
                                            {
                                                ["message"] = new Dictionary<string, object?>
                                                {
                                                    ["text"] = new Dictionary<string, object?>
                                                    {
                                                        ["text"] = new[]
                                                        {
                                                            "First case",
                                                        },
                                                    },
                                                },
                                            },
                                            new Dictionary<string, object?>
                                            {
                                                ["additionalCases"] = new Dictionary<string, object?>
                                                {
                                                    ["cases"] = new[]
                                                    {
                                                        new Dictionary<string, object?>
                                                        {
                                                            ["condition"] = "$sys.func.RAND() < 0.2",
                                                            ["caseContent"] = new[]
                                                            {
                                                                new Dictionary<string, object?>
                                                                {
                                                                    ["message"] = new Dictionary<string, object?>
                                                                    {
                                                                        ["text"] = new Dictionary<string, object?>
                                                                        {
                                                                            ["text"] = new[]
                                                                            {
                                                                                "Nested case",
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                    new Dictionary<string, object?>
                                    {
                                        ["caseContent"] = new[]
                                        {
                                            new Dictionary<string, object?>
                                            {
                                                ["message"] = new Dictionary<string, object?>
                                                {
                                                    ["text"] = new Dictionary<string, object?>
                                                    {
                                                        ["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 = "#",
                },
            },
        });
    
    });
    
    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("""
                <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                        """)
                                        .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("""
                <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                    """)
                                    .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());
    
        }
    }
    
    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
                                    <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                  - 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
                                    <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                  - 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: '#'
    

    Create CxFlow Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new CxFlow(name: string, args: CxFlowArgs, opts?: CustomResourceOptions);
    @overload
    def CxFlow(resource_name: str,
               args: CxFlowArgs,
               opts: Optional[ResourceOptions] = None)
    
    @overload
    def CxFlow(resource_name: str,
               opts: Optional[ResourceOptions] = None,
               display_name: Optional[str] = None,
               advanced_settings: Optional[CxFlowAdvancedSettingsArgs] = None,
               description: Optional[str] = None,
               event_handlers: Optional[Sequence[CxFlowEventHandlerArgs]] = None,
               is_default_start_flow: Optional[bool] = None,
               language_code: Optional[str] = None,
               nlu_settings: Optional[CxFlowNluSettingsArgs] = None,
               parent: Optional[str] = None,
               transition_route_groups: Optional[Sequence[str]] = None,
               transition_routes: Optional[Sequence[CxFlowTransitionRouteArgs]] = None)
    func NewCxFlow(ctx *Context, name string, args CxFlowArgs, opts ...ResourceOption) (*CxFlow, error)
    public CxFlow(string name, CxFlowArgs args, CustomResourceOptions? opts = null)
    public CxFlow(String name, CxFlowArgs args)
    public CxFlow(String name, CxFlowArgs args, CustomResourceOptions options)
    
    type: gcp:diagflow:CxFlow
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args CxFlowArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args CxFlowArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args CxFlowArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args CxFlowArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args CxFlowArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var cxFlowResource = new Gcp.Diagflow.CxFlow("cxFlowResource", new()
    {
        DisplayName = "string",
        AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs
        {
            AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs
            {
                Uri = "string",
            },
            DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs
            {
                Enabled = false,
                FinishDigit = "string",
                MaxDigits = 0,
            },
        },
        Description = "string",
        EventHandlers = new[]
        {
            new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs
            {
                Event = "string",
                Name = "string",
                TargetFlow = "string",
                TargetPage = "string",
                TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs
                {
                    ConditionalCases = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs
                        {
                            Cases = "string",
                        },
                    },
                    Messages = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs
                        {
                            Channel = "string",
                            ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs
                            {
                                Metadata = "string",
                            },
                            LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs
                            {
                                Metadata = "string",
                            },
                            OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
                            {
                                AllowPlaybackInterruption = false,
                                Ssml = "string",
                                Text = "string",
                            },
                            Payload = "string",
                            PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs
                            {
                                AudioUri = "string",
                                AllowPlaybackInterruption = false,
                            },
                            TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs
                            {
                                PhoneNumber = "string",
                            },
                            Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs
                            {
                                AllowPlaybackInterruption = false,
                                Texts = new[]
                                {
                                    "string",
                                },
                            },
                        },
                    },
                    ReturnPartialResponses = false,
                    SetParameterActions = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs
                        {
                            Parameter = "string",
                            Value = "string",
                        },
                    },
                    Tag = "string",
                    Webhook = "string",
                },
            },
        },
        IsDefaultStartFlow = false,
        LanguageCode = "string",
        NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs
        {
            ClassificationThreshold = 0,
            ModelTrainingMode = "string",
            ModelType = "string",
        },
        Parent = "string",
        TransitionRouteGroups = new[]
        {
            "string",
        },
        TransitionRoutes = new[]
        {
            new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs
            {
                Condition = "string",
                Intent = "string",
                Name = "string",
                TargetFlow = "string",
                TargetPage = "string",
                TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs
                {
                    ConditionalCases = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs
                        {
                            Cases = "string",
                        },
                    },
                    Messages = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs
                        {
                            Channel = "string",
                            ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs
                            {
                                Metadata = "string",
                            },
                            LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs
                            {
                                Metadata = "string",
                            },
                            OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs
                            {
                                AllowPlaybackInterruption = false,
                                Ssml = "string",
                                Text = "string",
                            },
                            Payload = "string",
                            PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs
                            {
                                AudioUri = "string",
                                AllowPlaybackInterruption = false,
                            },
                            TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs
                            {
                                PhoneNumber = "string",
                            },
                            Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs
                            {
                                AllowPlaybackInterruption = false,
                                Texts = new[]
                                {
                                    "string",
                                },
                            },
                        },
                    },
                    ReturnPartialResponses = false,
                    SetParameterActions = new[]
                    {
                        new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs
                        {
                            Parameter = "string",
                            Value = "string",
                        },
                    },
                    Tag = "string",
                    Webhook = "string",
                },
            },
        },
    });
    
    example, err := diagflow.NewCxFlow(ctx, "cxFlowResource", &diagflow.CxFlowArgs{
    	DisplayName: pulumi.String("string"),
    	AdvancedSettings: &diagflow.CxFlowAdvancedSettingsArgs{
    		AudioExportGcsDestination: &diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{
    			Uri: pulumi.String("string"),
    		},
    		DtmfSettings: &diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{
    			Enabled:     pulumi.Bool(false),
    			FinishDigit: pulumi.String("string"),
    			MaxDigits:   pulumi.Int(0),
    		},
    	},
    	Description: pulumi.String("string"),
    	EventHandlers: diagflow.CxFlowEventHandlerArray{
    		&diagflow.CxFlowEventHandlerArgs{
    			Event:      pulumi.String("string"),
    			Name:       pulumi.String("string"),
    			TargetFlow: pulumi.String("string"),
    			TargetPage: pulumi.String("string"),
    			TriggerFulfillment: &diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{
    				ConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{
    					&diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{
    						Cases: pulumi.String("string"),
    					},
    				},
    				Messages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{
    					&diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{
    						Channel: pulumi.String("string"),
    						ConversationSuccess: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{
    							Metadata: pulumi.String("string"),
    						},
    						LiveAgentHandoff: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{
    							Metadata: pulumi.String("string"),
    						},
    						OutputAudioText: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
    							AllowPlaybackInterruption: pulumi.Bool(false),
    							Ssml:                      pulumi.String("string"),
    							Text:                      pulumi.String("string"),
    						},
    						Payload: pulumi.String("string"),
    						PlayAudio: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{
    							AudioUri:                  pulumi.String("string"),
    							AllowPlaybackInterruption: pulumi.Bool(false),
    						},
    						TelephonyTransferCall: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{
    							PhoneNumber: pulumi.String("string"),
    						},
    						Text: &diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{
    							AllowPlaybackInterruption: pulumi.Bool(false),
    							Texts: pulumi.StringArray{
    								pulumi.String("string"),
    							},
    						},
    					},
    				},
    				ReturnPartialResponses: pulumi.Bool(false),
    				SetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{
    					&diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{
    						Parameter: pulumi.String("string"),
    						Value:     pulumi.String("string"),
    					},
    				},
    				Tag:     pulumi.String("string"),
    				Webhook: pulumi.String("string"),
    			},
    		},
    	},
    	IsDefaultStartFlow: pulumi.Bool(false),
    	LanguageCode:       pulumi.String("string"),
    	NluSettings: &diagflow.CxFlowNluSettingsArgs{
    		ClassificationThreshold: pulumi.Float64(0),
    		ModelTrainingMode:       pulumi.String("string"),
    		ModelType:               pulumi.String("string"),
    	},
    	Parent: pulumi.String("string"),
    	TransitionRouteGroups: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	TransitionRoutes: diagflow.CxFlowTransitionRouteArray{
    		&diagflow.CxFlowTransitionRouteArgs{
    			Condition:  pulumi.String("string"),
    			Intent:     pulumi.String("string"),
    			Name:       pulumi.String("string"),
    			TargetFlow: pulumi.String("string"),
    			TargetPage: pulumi.String("string"),
    			TriggerFulfillment: &diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{
    				ConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{
    					&diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{
    						Cases: pulumi.String("string"),
    					},
    				},
    				Messages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{
    					&diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{
    						Channel: pulumi.String("string"),
    						ConversationSuccess: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{
    							Metadata: pulumi.String("string"),
    						},
    						LiveAgentHandoff: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{
    							Metadata: pulumi.String("string"),
    						},
    						OutputAudioText: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{
    							AllowPlaybackInterruption: pulumi.Bool(false),
    							Ssml:                      pulumi.String("string"),
    							Text:                      pulumi.String("string"),
    						},
    						Payload: pulumi.String("string"),
    						PlayAudio: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{
    							AudioUri:                  pulumi.String("string"),
    							AllowPlaybackInterruption: pulumi.Bool(false),
    						},
    						TelephonyTransferCall: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{
    							PhoneNumber: pulumi.String("string"),
    						},
    						Text: &diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{
    							AllowPlaybackInterruption: pulumi.Bool(false),
    							Texts: pulumi.StringArray{
    								pulumi.String("string"),
    							},
    						},
    					},
    				},
    				ReturnPartialResponses: pulumi.Bool(false),
    				SetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{
    					&diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{
    						Parameter: pulumi.String("string"),
    						Value:     pulumi.String("string"),
    					},
    				},
    				Tag:     pulumi.String("string"),
    				Webhook: pulumi.String("string"),
    			},
    		},
    	},
    })
    
    var cxFlowResource = new CxFlow("cxFlowResource", CxFlowArgs.builder()
        .displayName("string")
        .advancedSettings(CxFlowAdvancedSettingsArgs.builder()
            .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()
                .uri("string")
                .build())
            .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()
                .enabled(false)
                .finishDigit("string")
                .maxDigits(0)
                .build())
            .build())
        .description("string")
        .eventHandlers(CxFlowEventHandlerArgs.builder()
            .event("string")
            .name("string")
            .targetFlow("string")
            .targetPage("string")
            .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
                .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()
                    .cases("string")
                    .build())
                .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
                    .channel("string")
                    .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()
                        .metadata("string")
                        .build())
                    .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
                        .metadata("string")
                        .build())
                    .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                        .allowPlaybackInterruption(false)
                        .ssml("string")
                        .text("string")
                        .build())
                    .payload("string")
                    .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()
                        .audioUri("string")
                        .allowPlaybackInterruption(false)
                        .build())
                    .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
                        .phoneNumber("string")
                        .build())
                    .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
                        .allowPlaybackInterruption(false)
                        .texts("string")
                        .build())
                    .build())
                .returnPartialResponses(false)
                .setParameterActions(CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                    .parameter("string")
                    .value("string")
                    .build())
                .tag("string")
                .webhook("string")
                .build())
            .build())
        .isDefaultStartFlow(false)
        .languageCode("string")
        .nluSettings(CxFlowNluSettingsArgs.builder()
            .classificationThreshold(0)
            .modelTrainingMode("string")
            .modelType("string")
            .build())
        .parent("string")
        .transitionRouteGroups("string")
        .transitionRoutes(CxFlowTransitionRouteArgs.builder()
            .condition("string")
            .intent("string")
            .name("string")
            .targetFlow("string")
            .targetPage("string")
            .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()
                .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()
                    .cases("string")
                    .build())
                .messages(CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
                    .channel("string")
                    .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()
                        .metadata("string")
                        .build())
                    .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
                        .metadata("string")
                        .build())
                    .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                        .allowPlaybackInterruption(false)
                        .ssml("string")
                        .text("string")
                        .build())
                    .payload("string")
                    .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()
                        .audioUri("string")
                        .allowPlaybackInterruption(false)
                        .build())
                    .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
                        .phoneNumber("string")
                        .build())
                    .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()
                        .allowPlaybackInterruption(false)
                        .texts("string")
                        .build())
                    .build())
                .returnPartialResponses(false)
                .setParameterActions(CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
                    .parameter("string")
                    .value("string")
                    .build())
                .tag("string")
                .webhook("string")
                .build())
            .build())
        .build());
    
    cx_flow_resource = gcp.diagflow.CxFlow("cxFlowResource",
        display_name="string",
        advanced_settings={
            "audioExportGcsDestination": {
                "uri": "string",
            },
            "dtmfSettings": {
                "enabled": False,
                "finishDigit": "string",
                "maxDigits": 0,
            },
        },
        description="string",
        event_handlers=[{
            "event": "string",
            "name": "string",
            "targetFlow": "string",
            "targetPage": "string",
            "triggerFulfillment": {
                "conditionalCases": [{
                    "cases": "string",
                }],
                "messages": [{
                    "channel": "string",
                    "conversationSuccess": {
                        "metadata": "string",
                    },
                    "liveAgentHandoff": {
                        "metadata": "string",
                    },
                    "outputAudioText": {
                        "allowPlaybackInterruption": False,
                        "ssml": "string",
                        "text": "string",
                    },
                    "payload": "string",
                    "playAudio": {
                        "audioUri": "string",
                        "allowPlaybackInterruption": False,
                    },
                    "telephonyTransferCall": {
                        "phoneNumber": "string",
                    },
                    "text": {
                        "allowPlaybackInterruption": False,
                        "texts": ["string"],
                    },
                }],
                "returnPartialResponses": False,
                "setParameterActions": [{
                    "parameter": "string",
                    "value": "string",
                }],
                "tag": "string",
                "webhook": "string",
            },
        }],
        is_default_start_flow=False,
        language_code="string",
        nlu_settings={
            "classificationThreshold": 0,
            "modelTrainingMode": "string",
            "modelType": "string",
        },
        parent="string",
        transition_route_groups=["string"],
        transition_routes=[{
            "condition": "string",
            "intent": "string",
            "name": "string",
            "targetFlow": "string",
            "targetPage": "string",
            "triggerFulfillment": {
                "conditionalCases": [{
                    "cases": "string",
                }],
                "messages": [{
                    "channel": "string",
                    "conversationSuccess": {
                        "metadata": "string",
                    },
                    "liveAgentHandoff": {
                        "metadata": "string",
                    },
                    "outputAudioText": {
                        "allowPlaybackInterruption": False,
                        "ssml": "string",
                        "text": "string",
                    },
                    "payload": "string",
                    "playAudio": {
                        "audioUri": "string",
                        "allowPlaybackInterruption": False,
                    },
                    "telephonyTransferCall": {
                        "phoneNumber": "string",
                    },
                    "text": {
                        "allowPlaybackInterruption": False,
                        "texts": ["string"],
                    },
                }],
                "returnPartialResponses": False,
                "setParameterActions": [{
                    "parameter": "string",
                    "value": "string",
                }],
                "tag": "string",
                "webhook": "string",
            },
        }])
    
    const cxFlowResource = new gcp.diagflow.CxFlow("cxFlowResource", {
        displayName: "string",
        advancedSettings: {
            audioExportGcsDestination: {
                uri: "string",
            },
            dtmfSettings: {
                enabled: false,
                finishDigit: "string",
                maxDigits: 0,
            },
        },
        description: "string",
        eventHandlers: [{
            event: "string",
            name: "string",
            targetFlow: "string",
            targetPage: "string",
            triggerFulfillment: {
                conditionalCases: [{
                    cases: "string",
                }],
                messages: [{
                    channel: "string",
                    conversationSuccess: {
                        metadata: "string",
                    },
                    liveAgentHandoff: {
                        metadata: "string",
                    },
                    outputAudioText: {
                        allowPlaybackInterruption: false,
                        ssml: "string",
                        text: "string",
                    },
                    payload: "string",
                    playAudio: {
                        audioUri: "string",
                        allowPlaybackInterruption: false,
                    },
                    telephonyTransferCall: {
                        phoneNumber: "string",
                    },
                    text: {
                        allowPlaybackInterruption: false,
                        texts: ["string"],
                    },
                }],
                returnPartialResponses: false,
                setParameterActions: [{
                    parameter: "string",
                    value: "string",
                }],
                tag: "string",
                webhook: "string",
            },
        }],
        isDefaultStartFlow: false,
        languageCode: "string",
        nluSettings: {
            classificationThreshold: 0,
            modelTrainingMode: "string",
            modelType: "string",
        },
        parent: "string",
        transitionRouteGroups: ["string"],
        transitionRoutes: [{
            condition: "string",
            intent: "string",
            name: "string",
            targetFlow: "string",
            targetPage: "string",
            triggerFulfillment: {
                conditionalCases: [{
                    cases: "string",
                }],
                messages: [{
                    channel: "string",
                    conversationSuccess: {
                        metadata: "string",
                    },
                    liveAgentHandoff: {
                        metadata: "string",
                    },
                    outputAudioText: {
                        allowPlaybackInterruption: false,
                        ssml: "string",
                        text: "string",
                    },
                    payload: "string",
                    playAudio: {
                        audioUri: "string",
                        allowPlaybackInterruption: false,
                    },
                    telephonyTransferCall: {
                        phoneNumber: "string",
                    },
                    text: {
                        allowPlaybackInterruption: false,
                        texts: ["string"],
                    },
                }],
                returnPartialResponses: false,
                setParameterActions: [{
                    parameter: "string",
                    value: "string",
                }],
                tag: "string",
                webhook: "string",
            },
        }],
    });
    
    type: gcp:diagflow:CxFlow
    properties:
        advancedSettings:
            audioExportGcsDestination:
                uri: string
            dtmfSettings:
                enabled: false
                finishDigit: string
                maxDigits: 0
        description: string
        displayName: string
        eventHandlers:
            - event: string
              name: string
              targetFlow: string
              targetPage: string
              triggerFulfillment:
                conditionalCases:
                    - cases: string
                messages:
                    - channel: string
                      conversationSuccess:
                        metadata: string
                      liveAgentHandoff:
                        metadata: string
                      outputAudioText:
                        allowPlaybackInterruption: false
                        ssml: string
                        text: string
                      payload: string
                      playAudio:
                        allowPlaybackInterruption: false
                        audioUri: string
                      telephonyTransferCall:
                        phoneNumber: string
                      text:
                        allowPlaybackInterruption: false
                        texts:
                            - string
                returnPartialResponses: false
                setParameterActions:
                    - parameter: string
                      value: string
                tag: string
                webhook: string
        isDefaultStartFlow: false
        languageCode: string
        nluSettings:
            classificationThreshold: 0
            modelTrainingMode: string
            modelType: string
        parent: string
        transitionRouteGroups:
            - string
        transitionRoutes:
            - condition: string
              intent: string
              name: string
              targetFlow: string
              targetPage: string
              triggerFulfillment:
                conditionalCases:
                    - cases: string
                messages:
                    - channel: string
                      conversationSuccess:
                        metadata: string
                      liveAgentHandoff:
                        metadata: string
                      outputAudioText:
                        allowPlaybackInterruption: false
                        ssml: string
                        text: string
                      payload: string
                      playAudio:
                        allowPlaybackInterruption: false
                        audioUri: string
                      telephonyTransferCall:
                        phoneNumber: string
                      text:
                        allowPlaybackInterruption: false
                        texts:
                            - string
                returnPartialResponses: false
                setParameterActions:
                    - parameter: string
                      value: string
                tag: string
                webhook: string
    

    CxFlow Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The CxFlow resource accepts the following input properties:

    DisplayName string
    The human-readable name of the flow.


    AdvancedSettings CxFlowAdvancedSettings
    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.
    Description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    EventHandlers List<CxFlowEventHandler>
    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.
    IsDefaultStartFlow bool

    Marks this as the Default Start Flow 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.

    LanguageCode string
    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.
    NluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    Parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    TransitionRouteGroups List<string>
    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/.
    TransitionRoutes List<CxFlowTransitionRoute>
    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.
    DisplayName string
    The human-readable name of the flow.


    AdvancedSettings CxFlowAdvancedSettingsArgs
    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.
    Description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    EventHandlers []CxFlowEventHandlerArgs
    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.
    IsDefaultStartFlow bool

    Marks this as the Default Start Flow 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.

    LanguageCode string
    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.
    NluSettings CxFlowNluSettingsArgs
    NLU related settings of the flow. Structure is documented below.
    Parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    TransitionRouteGroups []string
    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/.
    TransitionRoutes []CxFlowTransitionRouteArgs
    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.
    displayName String
    The human-readable name of the flow.


    advancedSettings CxFlowAdvancedSettings
    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.
    description String
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    eventHandlers List<CxFlowEventHandler>
    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.
    isDefaultStartFlow Boolean

    Marks this as the Default Start Flow 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.

    languageCode String
    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.
    nluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    parent String
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups List<String>
    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/.
    transitionRoutes List<CxFlowTransitionRoute>
    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.
    displayName string
    The human-readable name of the flow.


    advancedSettings CxFlowAdvancedSettings
    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.
    description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    eventHandlers CxFlowEventHandler[]
    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.
    isDefaultStartFlow boolean

    Marks this as the Default Start Flow 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.

    languageCode string
    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.
    nluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups string[]
    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/.
    transitionRoutes CxFlowTransitionRoute[]
    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.
    display_name str
    The human-readable name of the flow.


    advanced_settings CxFlowAdvancedSettingsArgs
    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.
    description str
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    event_handlers Sequence[CxFlowEventHandlerArgs]
    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.
    is_default_start_flow bool

    Marks this as the Default Start Flow 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.

    language_code str
    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.
    nlu_settings CxFlowNluSettingsArgs
    NLU related settings of the flow. Structure is documented below.
    parent str
    The agent to create a flow for. Format: projects//locations//agents/.
    transition_route_groups Sequence[str]
    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/.
    transition_routes Sequence[CxFlowTransitionRouteArgs]
    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.
    displayName String
    The human-readable name of the flow.


    advancedSettings Property Map
    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.
    description String
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    eventHandlers List<Property Map>
    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.
    isDefaultStartFlow Boolean

    Marks this as the Default Start Flow 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.

    languageCode String
    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.
    nluSettings Property Map
    NLU related settings of the flow. Structure is documented below.
    parent String
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups List<String>
    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/.
    transitionRoutes List<Property Map>
    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.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the CxFlow resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    id str
    The provider-assigned unique ID for this managed resource.
    name str
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The unique identifier of the flow. Format: projects//locations//agents//flows/.

    Look up Existing CxFlow Resource

    Get an existing CxFlow resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: CxFlowState, opts?: CustomResourceOptions): CxFlow
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            advanced_settings: Optional[CxFlowAdvancedSettingsArgs] = None,
            description: Optional[str] = None,
            display_name: Optional[str] = None,
            event_handlers: Optional[Sequence[CxFlowEventHandlerArgs]] = None,
            is_default_start_flow: Optional[bool] = None,
            language_code: Optional[str] = None,
            name: Optional[str] = None,
            nlu_settings: Optional[CxFlowNluSettingsArgs] = None,
            parent: Optional[str] = None,
            transition_route_groups: Optional[Sequence[str]] = None,
            transition_routes: Optional[Sequence[CxFlowTransitionRouteArgs]] = None) -> CxFlow
    func GetCxFlow(ctx *Context, name string, id IDInput, state *CxFlowState, opts ...ResourceOption) (*CxFlow, error)
    public static CxFlow Get(string name, Input<string> id, CxFlowState? state, CustomResourceOptions? opts = null)
    public static CxFlow get(String name, Output<String> id, CxFlowState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AdvancedSettings CxFlowAdvancedSettings
    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.
    Description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    DisplayName string
    The human-readable name of the flow.


    EventHandlers List<CxFlowEventHandler>
    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.
    IsDefaultStartFlow bool

    Marks this as the Default Start Flow 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.

    LanguageCode string
    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.
    Name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    NluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    Parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    TransitionRouteGroups List<string>
    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/.
    TransitionRoutes List<CxFlowTransitionRoute>
    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.
    AdvancedSettings CxFlowAdvancedSettingsArgs
    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.
    Description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    DisplayName string
    The human-readable name of the flow.


    EventHandlers []CxFlowEventHandlerArgs
    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.
    IsDefaultStartFlow bool

    Marks this as the Default Start Flow 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.

    LanguageCode string
    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.
    Name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    NluSettings CxFlowNluSettingsArgs
    NLU related settings of the flow. Structure is documented below.
    Parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    TransitionRouteGroups []string
    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/.
    TransitionRoutes []CxFlowTransitionRouteArgs
    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.
    advancedSettings CxFlowAdvancedSettings
    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.
    description String
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    displayName String
    The human-readable name of the flow.


    eventHandlers List<CxFlowEventHandler>
    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.
    isDefaultStartFlow Boolean

    Marks this as the Default Start Flow 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.

    languageCode String
    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.
    name String
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    nluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    parent String
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups List<String>
    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/.
    transitionRoutes List<CxFlowTransitionRoute>
    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.
    advancedSettings CxFlowAdvancedSettings
    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.
    description string
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    displayName string
    The human-readable name of the flow.


    eventHandlers CxFlowEventHandler[]
    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.
    isDefaultStartFlow boolean

    Marks this as the Default Start Flow 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.

    languageCode string
    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.
    name string
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    nluSettings CxFlowNluSettings
    NLU related settings of the flow. Structure is documented below.
    parent string
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups string[]
    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/.
    transitionRoutes CxFlowTransitionRoute[]
    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.
    advanced_settings CxFlowAdvancedSettingsArgs
    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.
    description str
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    display_name str
    The human-readable name of the flow.


    event_handlers Sequence[CxFlowEventHandlerArgs]
    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.
    is_default_start_flow bool

    Marks this as the Default Start Flow 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.

    language_code str
    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.
    name str
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    nlu_settings CxFlowNluSettingsArgs
    NLU related settings of the flow. Structure is documented below.
    parent str
    The agent to create a flow for. Format: projects//locations//agents/.
    transition_route_groups Sequence[str]
    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/.
    transition_routes Sequence[CxFlowTransitionRouteArgs]
    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.
    advancedSettings Property Map
    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.
    description String
    The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.
    displayName String
    The human-readable name of the flow.


    eventHandlers List<Property Map>
    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.
    isDefaultStartFlow Boolean

    Marks this as the Default Start Flow 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.

    languageCode String
    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.
    name String
    The unique identifier of the flow. Format: projects//locations//agents//flows/.
    nluSettings Property Map
    NLU related settings of the flow. Structure is documented below.
    parent String
    The agent to create a flow for. Format: projects//locations//agents/.
    transitionRouteGroups List<String>
    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/.
    transitionRoutes List<Property Map>
    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.

    Supporting Types

    CxFlowAdvancedSettings, CxFlowAdvancedSettingsArgs

    AudioExportGcsDestination CxFlowAdvancedSettingsAudioExportGcsDestination
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    DtmfSettings CxFlowAdvancedSettingsDtmfSettings
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.
    AudioExportGcsDestination CxFlowAdvancedSettingsAudioExportGcsDestination
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    DtmfSettings CxFlowAdvancedSettingsDtmfSettings
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.
    audioExportGcsDestination CxFlowAdvancedSettingsAudioExportGcsDestination
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    dtmfSettings CxFlowAdvancedSettingsDtmfSettings
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.
    audioExportGcsDestination CxFlowAdvancedSettingsAudioExportGcsDestination
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    dtmfSettings CxFlowAdvancedSettingsDtmfSettings
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.
    audio_export_gcs_destination CxFlowAdvancedSettingsAudioExportGcsDestination
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    dtmf_settings CxFlowAdvancedSettingsDtmfSettings
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.
    audioExportGcsDestination Property Map
    If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels:

    • Agent level
    • Flow level Structure is documented below.
    dtmfSettings Property Map
    Define behaviors for DTMF (dual tone multi frequency). DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Exposed at the following levels:

    • Agent level
    • Flow level
    • Page level
    • Parameter level Structure is documented below.

    CxFlowAdvancedSettingsAudioExportGcsDestination, CxFlowAdvancedSettingsAudioExportGcsDestinationArgs

    Uri string
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix
    Uri string
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix
    uri String
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix
    uri string
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix
    uri str
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix
    uri String
    The Google Cloud Storage URI for the exported objects. Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation. Format: gs://bucket/object-name-or-prefix

    CxFlowAdvancedSettingsDtmfSettings, CxFlowAdvancedSettingsDtmfSettingsArgs

    Enabled bool
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    FinishDigit string
    The digit that terminates a DTMF digit sequence.
    MaxDigits int
    Max length of DTMF digits.
    Enabled bool
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    FinishDigit string
    The digit that terminates a DTMF digit sequence.
    MaxDigits int
    Max length of DTMF digits.
    enabled Boolean
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    finishDigit String
    The digit that terminates a DTMF digit sequence.
    maxDigits Integer
    Max length of DTMF digits.
    enabled boolean
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    finishDigit string
    The digit that terminates a DTMF digit sequence.
    maxDigits number
    Max length of DTMF digits.
    enabled bool
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    finish_digit str
    The digit that terminates a DTMF digit sequence.
    max_digits int
    Max length of DTMF digits.
    enabled Boolean
    If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a "3" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).
    finishDigit String
    The digit that terminates a DTMF digit sequence.
    maxDigits Number
    Max length of DTMF digits.

    CxFlowEventHandler, CxFlowEventHandlerArgs

    Event string
    The name of the event to handle.
    Name string
    (Output) The unique identifier of this event handler.
    TargetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    TargetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    TriggerFulfillment CxFlowEventHandlerTriggerFulfillment
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.
    Event string
    The name of the event to handle.
    Name string
    (Output) The unique identifier of this event handler.
    TargetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    TargetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    TriggerFulfillment CxFlowEventHandlerTriggerFulfillment
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.
    event String
    The name of the event to handle.
    name String
    (Output) The unique identifier of this event handler.
    targetFlow String
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage String
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment CxFlowEventHandlerTriggerFulfillment
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.
    event string
    The name of the event to handle.
    name string
    (Output) The unique identifier of this event handler.
    targetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment CxFlowEventHandlerTriggerFulfillment
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.
    event str
    The name of the event to handle.
    name str
    (Output) The unique identifier of this event handler.
    target_flow str
    The target flow to transition to. Format: projects//locations//agents//flows/.
    target_page str
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    trigger_fulfillment CxFlowEventHandlerTriggerFulfillment
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.
    event String
    The name of the event to handle.
    name String
    (Output) The unique identifier of this event handler.
    targetFlow String
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage String
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment Property Map
    The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks. Structure is documented below.

    CxFlowEventHandlerTriggerFulfillment, CxFlowEventHandlerTriggerFulfillmentArgs

    ConditionalCases List<CxFlowEventHandlerTriggerFulfillmentConditionalCase>
    Conditional cases for this fulfillment. Structure is documented below.
    Messages List<CxFlowEventHandlerTriggerFulfillmentMessage>
    The list of rich message responses to present to the user. Structure is documented below.
    ReturnPartialResponses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    SetParameterActions List<CxFlowEventHandlerTriggerFulfillmentSetParameterAction>
    Set parameter values before executing the webhook. Structure is documented below.
    Tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    Webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    ConditionalCases []CxFlowEventHandlerTriggerFulfillmentConditionalCase
    Conditional cases for this fulfillment. Structure is documented below.
    Messages []CxFlowEventHandlerTriggerFulfillmentMessage
    The list of rich message responses to present to the user. Structure is documented below.
    ReturnPartialResponses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    SetParameterActions []CxFlowEventHandlerTriggerFulfillmentSetParameterAction
    Set parameter values before executing the webhook. Structure is documented below.
    Tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    Webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases List<CxFlowEventHandlerTriggerFulfillmentConditionalCase>
    Conditional cases for this fulfillment. Structure is documented below.
    messages List<CxFlowEventHandlerTriggerFulfillmentMessage>
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses Boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions List<CxFlowEventHandlerTriggerFulfillmentSetParameterAction>
    Set parameter values before executing the webhook. Structure is documented below.
    tag String
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook String
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases CxFlowEventHandlerTriggerFulfillmentConditionalCase[]
    Conditional cases for this fulfillment. Structure is documented below.
    messages CxFlowEventHandlerTriggerFulfillmentMessage[]
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions CxFlowEventHandlerTriggerFulfillmentSetParameterAction[]
    Set parameter values before executing the webhook. Structure is documented below.
    tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditional_cases Sequence[CxFlowEventHandlerTriggerFulfillmentConditionalCase]
    Conditional cases for this fulfillment. Structure is documented below.
    messages Sequence[CxFlowEventHandlerTriggerFulfillmentMessage]
    The list of rich message responses to present to the user. Structure is documented below.
    return_partial_responses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    set_parameter_actions Sequence[CxFlowEventHandlerTriggerFulfillmentSetParameterAction]
    Set parameter values before executing the webhook. Structure is documented below.
    tag str
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook str
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases List<Property Map>
    Conditional cases for this fulfillment. Structure is documented below.
    messages List<Property Map>
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses Boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions List<Property Map>
    Set parameter values before executing the webhook. Structure is documented below.
    tag String
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook String
    The webhook to call. Format: projects//locations//agents//webhooks/.

    CxFlowEventHandlerTriggerFulfillmentConditionalCase, CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs

    Cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    Cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases String
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases str
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases String
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.

    CxFlowEventHandlerTriggerFulfillmentMessage, CxFlowEventHandlerTriggerFulfillmentMessageArgs

    Channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    ConversationSuccess CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    LiveAgentHandoff CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    OutputAudioText CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    Payload string
    A custom, platform-specific payload.
    PlayAudio CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    TelephonyTransferCall CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    Text CxFlowEventHandlerTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    Channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    ConversationSuccess CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    LiveAgentHandoff CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    OutputAudioText CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    Payload string
    A custom, platform-specific payload.
    PlayAudio CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    TelephonyTransferCall CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    Text CxFlowEventHandlerTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel String
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload String
    A custom, platform-specific payload.
    playAudio CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowEventHandlerTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload string
    A custom, platform-specific payload.
    playAudio CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowEventHandlerTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel str
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversation_success CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    live_agent_handoff CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    output_audio_text CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload str
    A custom, platform-specific payload.
    play_audio CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephony_transfer_call CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowEventHandlerTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel String
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess Property Map
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff Property Map
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText Property Map
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload String
    A custom, platform-specific payload.
    playAudio Property Map
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall Property Map
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text Property Map
    The text response message. Structure is documented below.

    CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccess, CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs

    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata str
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.

    CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoff, CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs

    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata str
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.

    CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioText, CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs

    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Ssml string
    The SSML text to be synthesized. For more information, see SSML.
    Text string
    The raw text to be synthesized.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Ssml string
    The SSML text to be synthesized. For more information, see SSML.
    Text string
    The raw text to be synthesized.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml String
    The SSML text to be synthesized. For more information, see SSML.
    text String
    The raw text to be synthesized.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml string
    The SSML text to be synthesized. For more information, see SSML.
    text string
    The raw text to be synthesized.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml str
    The SSML text to be synthesized. For more information, see SSML.
    text str
    The raw text to be synthesized.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml String
    The SSML text to be synthesized. For more information, see SSML.
    text String
    The raw text to be synthesized.

    CxFlowEventHandlerTriggerFulfillmentMessagePlayAudio, CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs

    AudioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    AudioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri String
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audio_uri str
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri String
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.

    CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCall, CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs

    PhoneNumber string
    Transfer the call to a phone number in E.164 format.
    PhoneNumber string
    Transfer the call to a phone number in E.164 format.
    phoneNumber String
    Transfer the call to a phone number in E.164 format.
    phoneNumber string
    Transfer the call to a phone number in E.164 format.
    phone_number str
    Transfer the call to a phone number in E.164 format.
    phoneNumber String
    Transfer the call to a phone number in E.164 format.

    CxFlowEventHandlerTriggerFulfillmentMessageText, CxFlowEventHandlerTriggerFulfillmentMessageTextArgs

    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Texts List<string>
    A collection of text responses.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Texts []string
    A collection of text responses.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts List<String>
    A collection of text responses.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts string[]
    A collection of text responses.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts Sequence[str]
    A collection of text responses.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts List<String>
    A collection of text responses.

    CxFlowEventHandlerTriggerFulfillmentSetParameterAction, CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs

    Parameter string
    Display name of the parameter.
    Value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    Parameter string
    Display name of the parameter.
    Value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter String
    Display name of the parameter.
    value String
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter string
    Display name of the parameter.
    value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter str
    Display name of the parameter.
    value str
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter String
    Display name of the parameter.
    value String
    The new JSON-encoded value of the parameter. A null value clears the parameter.

    CxFlowNluSettings, CxFlowNluSettingsArgs

    ClassificationThreshold double
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    ModelTrainingMode string
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    ModelType string
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.
    ClassificationThreshold float64
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    ModelTrainingMode string
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    ModelType string
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.
    classificationThreshold Double
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    modelTrainingMode String
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    modelType String
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.
    classificationThreshold number
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    modelTrainingMode string
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    modelType string
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.
    classification_threshold float
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    model_training_mode str
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    model_type str
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.
    classificationThreshold Number
    To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a no-match event will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.
    modelTrainingMode String
    Indicates NLU model training mode.

    • MODEL_TRAINING_MODE_AUTOMATIC: NLU model training is automatically triggered when a flow gets modified. User can also manually trigger model training in this mode.
    • MODEL_TRAINING_MODE_MANUAL: User needs to manually trigger NLU model training. Best for large flows whose models take long time to train. Possible values are: MODEL_TRAINING_MODE_AUTOMATIC, MODEL_TRAINING_MODE_MANUAL.
    modelType String
    Indicates the type of NLU model.

    • MODEL_TYPE_STANDARD: Use standard NLU model.
    • MODEL_TYPE_ADVANCED: Use advanced NLU model. Possible values are: MODEL_TYPE_STANDARD, MODEL_TYPE_ADVANCED.

    CxFlowTransitionRoute, CxFlowTransitionRouteArgs

    Condition string
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    Intent string
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    Name string
    (Output) The unique identifier of this transition route.
    TargetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    TargetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    TriggerFulfillment CxFlowTransitionRouteTriggerFulfillment
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.
    Condition string
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    Intent string
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    Name string
    (Output) The unique identifier of this transition route.
    TargetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    TargetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    TriggerFulfillment CxFlowTransitionRouteTriggerFulfillment
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.
    condition String
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    intent String
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    name String
    (Output) The unique identifier of this transition route.
    targetFlow String
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage String
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment CxFlowTransitionRouteTriggerFulfillment
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.
    condition string
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    intent string
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    name string
    (Output) The unique identifier of this transition route.
    targetFlow string
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage string
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment CxFlowTransitionRouteTriggerFulfillment
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.
    condition str
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    intent str
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    name str
    (Output) The unique identifier of this transition route.
    target_flow str
    The target flow to transition to. Format: projects//locations//agents//flows/.
    target_page str
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    trigger_fulfillment CxFlowTransitionRouteTriggerFulfillment
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.
    condition String
    The condition to evaluate against form parameters or session parameters. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    intent String
    The unique identifier of an Intent. Format: projects//locations//agents//intents/. Indicates that the transition can only happen when the given intent is matched. At least one of intent or condition must be specified. When both intent and condition are specified, the transition can only happen when both are fulfilled.
    name String
    (Output) The unique identifier of this transition route.
    targetFlow String
    The target flow to transition to. Format: projects//locations//agents//flows/.
    targetPage String
    The target page to transition to. Format: projects//locations//agents//flows//pages/.
    triggerFulfillment Property Map
    The fulfillment to call when the condition is satisfied. At least one of triggerFulfillment and target must be specified. When both are defined, triggerFulfillment is executed first. Structure is documented below.

    CxFlowTransitionRouteTriggerFulfillment, CxFlowTransitionRouteTriggerFulfillmentArgs

    ConditionalCases List<CxFlowTransitionRouteTriggerFulfillmentConditionalCase>
    Conditional cases for this fulfillment. Structure is documented below.
    Messages List<CxFlowTransitionRouteTriggerFulfillmentMessage>
    The list of rich message responses to present to the user. Structure is documented below.
    ReturnPartialResponses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    SetParameterActions List<CxFlowTransitionRouteTriggerFulfillmentSetParameterAction>
    Set parameter values before executing the webhook. Structure is documented below.
    Tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    Webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    ConditionalCases []CxFlowTransitionRouteTriggerFulfillmentConditionalCase
    Conditional cases for this fulfillment. Structure is documented below.
    Messages []CxFlowTransitionRouteTriggerFulfillmentMessage
    The list of rich message responses to present to the user. Structure is documented below.
    ReturnPartialResponses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    SetParameterActions []CxFlowTransitionRouteTriggerFulfillmentSetParameterAction
    Set parameter values before executing the webhook. Structure is documented below.
    Tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    Webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases List<CxFlowTransitionRouteTriggerFulfillmentConditionalCase>
    Conditional cases for this fulfillment. Structure is documented below.
    messages List<CxFlowTransitionRouteTriggerFulfillmentMessage>
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses Boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions List<CxFlowTransitionRouteTriggerFulfillmentSetParameterAction>
    Set parameter values before executing the webhook. Structure is documented below.
    tag String
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook String
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases CxFlowTransitionRouteTriggerFulfillmentConditionalCase[]
    Conditional cases for this fulfillment. Structure is documented below.
    messages CxFlowTransitionRouteTriggerFulfillmentMessage[]
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions CxFlowTransitionRouteTriggerFulfillmentSetParameterAction[]
    Set parameter values before executing the webhook. Structure is documented below.
    tag string
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook string
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditional_cases Sequence[CxFlowTransitionRouteTriggerFulfillmentConditionalCase]
    Conditional cases for this fulfillment. Structure is documented below.
    messages Sequence[CxFlowTransitionRouteTriggerFulfillmentMessage]
    The list of rich message responses to present to the user. Structure is documented below.
    return_partial_responses bool
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    set_parameter_actions Sequence[CxFlowTransitionRouteTriggerFulfillmentSetParameterAction]
    Set parameter values before executing the webhook. Structure is documented below.
    tag str
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook str
    The webhook to call. Format: projects//locations//agents//webhooks/.
    conditionalCases List<Property Map>
    Conditional cases for this fulfillment. Structure is documented below.
    messages List<Property Map>
    The list of rich message responses to present to the user. Structure is documented below.
    returnPartialResponses Boolean
    Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.
    setParameterActions List<Property Map>
    Set parameter values before executing the webhook. Structure is documented below.
    tag String
    The tag used by the webhook to identify which fulfillment is being called. This field is required if webhook is specified.
    webhook String
    The webhook to call. Format: projects//locations//agents//webhooks/.

    CxFlowTransitionRouteTriggerFulfillmentConditionalCase, CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs

    Cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    Cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases String
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases string
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases str
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.
    cases String
    A JSON encoded list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored. See Case for the schema.

    CxFlowTransitionRouteTriggerFulfillmentMessage, CxFlowTransitionRouteTriggerFulfillmentMessageArgs

    Channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    ConversationSuccess CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    LiveAgentHandoff CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    OutputAudioText CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    Payload string
    A custom, platform-specific payload.
    PlayAudio CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    TelephonyTransferCall CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    Text CxFlowTransitionRouteTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    Channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    ConversationSuccess CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    LiveAgentHandoff CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    OutputAudioText CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    Payload string
    A custom, platform-specific payload.
    PlayAudio CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    TelephonyTransferCall CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    Text CxFlowTransitionRouteTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel String
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload String
    A custom, platform-specific payload.
    playAudio CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowTransitionRouteTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel string
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload string
    A custom, platform-specific payload.
    playAudio CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowTransitionRouteTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel str
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversation_success CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    live_agent_handoff CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    output_audio_text CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload str
    A custom, platform-specific payload.
    play_audio CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephony_transfer_call CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text CxFlowTransitionRouteTriggerFulfillmentMessageText
    The text response message. Structure is documented below.
    channel String
    The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.
    conversationSuccess Property Map
    Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates that the conversation succeeded.
    • In a webhook response when you determine that you handled the customer issue. Structure is documented below.
    liveAgentHandoff Property Map
    Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example:

    • In the entryFulfillment of a Page if entering the page indicates something went extremely wrong in the conversation.
    • In a webhook response when you determine that the customer issue can only be handled by a human. Structure is documented below.
    outputAudioText Property Map
    A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message. Structure is documented below.
    payload String
    A custom, platform-specific payload.
    playAudio Property Map
    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.
    telephonyTransferCall Property Map
    Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint. Structure is documented below.
    text Property Map
    The text response message. Structure is documented below.

    CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccess, CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs

    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata str
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.

    CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoff, CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs

    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    Metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata string
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata str
    Custom metadata. Dialogflow doesn't impose any structure on this.
    metadata String
    Custom metadata. Dialogflow doesn't impose any structure on this.

    CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioText, CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs

    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Ssml string
    The SSML text to be synthesized. For more information, see SSML.
    Text string
    The raw text to be synthesized.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Ssml string
    The SSML text to be synthesized. For more information, see SSML.
    Text string
    The raw text to be synthesized.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml String
    The SSML text to be synthesized. For more information, see SSML.
    text String
    The raw text to be synthesized.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml string
    The SSML text to be synthesized. For more information, see SSML.
    text string
    The raw text to be synthesized.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml str
    The SSML text to be synthesized. For more information, see SSML.
    text str
    The raw text to be synthesized.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    ssml String
    The SSML text to be synthesized. For more information, see SSML.
    text String
    The raw text to be synthesized.

    CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudio, CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs

    AudioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    AudioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri String
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri string
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audio_uri str
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    audioUri String
    URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.

    CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCall, CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs

    PhoneNumber string
    Transfer the call to a phone number in E.164 format.
    PhoneNumber string
    Transfer the call to a phone number in E.164 format.
    phoneNumber String
    Transfer the call to a phone number in E.164 format.
    phoneNumber string
    Transfer the call to a phone number in E.164 format.
    phone_number str
    Transfer the call to a phone number in E.164 format.
    phoneNumber String
    Transfer the call to a phone number in E.164 format.

    CxFlowTransitionRouteTriggerFulfillmentMessageText, CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs

    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Texts List<string>
    A collection of text responses.
    AllowPlaybackInterruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    Texts []string
    A collection of text responses.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts List<String>
    A collection of text responses.
    allowPlaybackInterruption boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts string[]
    A collection of text responses.
    allow_playback_interruption bool
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts Sequence[str]
    A collection of text responses.
    allowPlaybackInterruption Boolean
    (Output) Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.
    texts List<String>
    A collection of text responses.

    CxFlowTransitionRouteTriggerFulfillmentSetParameterAction, CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs

    Parameter string
    Display name of the parameter.
    Value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    Parameter string
    Display name of the parameter.
    Value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter String
    Display name of the parameter.
    value String
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter string
    Display name of the parameter.
    value string
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter str
    Display name of the parameter.
    value str
    The new JSON-encoded value of the parameter. A null value clears the parameter.
    parameter String
    Display name of the parameter.
    value String
    The new JSON-encoded value of the parameter. A null value clears the parameter.

    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:

    $ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}
    
    $ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Google Cloud (GCP) Classic pulumi/pulumi-gcp
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the google-beta Terraform Provider.
    gcp logo
    Google Cloud Classic v8.5.0 published on Tuesday, Oct 8, 2024 by Pulumi