1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. diagflow
  5. CxPage
Google Cloud Classic v7.2.1 published on Wednesday, Nov 22, 2023 by Pulumi

gcp.diagflow.CxPage

Explore with Pulumi AI

gcp logo
Google Cloud Classic v7.2.1 published on Wednesday, Nov 22, 2023 by Pulumi

    A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.

    To get more information about Page, see:

    Example Usage

    Dialogflowcx Page Full

    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 myPage2 = new Gcp.Diagflow.CxPage("myPage2", new()
        {
            Parent = agent.StartFlow,
            DisplayName = "MyPage2",
        });
    
        var myWebhook = new Gcp.Diagflow.CxWebhook("myWebhook", new()
        {
            Parent = agent.Id,
            DisplayName = "MyWebhook",
            GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs
            {
                Uri = "https://example.com",
            },
        });
    
        var basicPage = new Gcp.Diagflow.CxPage("basicPage", new()
        {
            Parent = agent.StartFlow,
            DisplayName = "MyPage",
            EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs
            {
                Messages = new[]
                {
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        Channel = "some-channel",
                        Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs
                        {
                            Texts = new[]
                            {
                                "Welcome to page",
                            },
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        Payload = @"        {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
    ",
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs
                        {
                            Metadata = @"          {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs
                        {
                            Text = "some output text",
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs
                        {
                            Ssml = @"          <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs
                        {
                            Metadata = @"          {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs
                        {
                            AudioUri = "http://example.com/some-audio-file.mp3",
                        },
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs
                    {
                        TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs
                        {
                            PhoneNumber = "1-234-567-8901",
                        },
                    },
                },
                SetParameterActions = new[]
                {
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs
                    {
                        Parameter = "some-param",
                        Value = "123.45",
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs
                    {
                        Parameter = "another-param",
                        Value = JsonSerializer.Serialize("abc"),
                    },
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs
                    {
                        Parameter = "other-param",
                        Value = JsonSerializer.Serialize(new[]
                        {
                            "foo",
                        }),
                    },
                },
                ConditionalCases = new[]
                {
                    new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs
                    {
                        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",
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        }),
                    },
                },
            },
            EventHandlers = new[]
            {
                new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs
                {
                    Event = "some-event",
                    TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs
                    {
                        ReturnPartialResponses = true,
                        Messages = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                Channel = "some-channel",
                                Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs
                                {
                                    Texts = new[]
                                    {
                                        "Some text",
                                    },
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                Payload = @"          {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
    ",
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs
                                {
                                    Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
                                {
                                    Text = "some output text",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
                                {
                                    Ssml = @"            <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs
                                {
                                    Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs
                                {
                                    AudioUri = "http://example.com/some-audio-file.mp3",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs
                            {
                                TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs
                                {
                                    PhoneNumber = "1-234-567-8901",
                                },
                            },
                        },
                        SetParameterActions = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "some-param",
                                Value = "123.45",
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "another-param",
                                Value = JsonSerializer.Serialize("abc"),
                            },
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "other-param",
                                Value = JsonSerializer.Serialize(new[]
                                {
                                    "foo",
                                }),
                            },
                        },
                        ConditionalCases = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs
                            {
                                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",
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                }),
                            },
                        },
                    },
                },
            },
            Form = new Gcp.Diagflow.Inputs.CxPageFormArgs
            {
                Parameters = new[]
                {
                    new Gcp.Diagflow.Inputs.CxPageFormParameterArgs
                    {
                        DisplayName = "param1",
                        EntityType = "projects/-/locations/-/agents/-/entityTypes/sys.date",
                        DefaultValue = JsonSerializer.Serialize("2000-01-01"),
                        FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs
                        {
                            InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs
                            {
                                Messages = new[]
                                {
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        Channel = "some-channel",
                                        Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs
                                        {
                                            Texts = new[]
                                            {
                                                "Please provide param1",
                                            },
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        Payload = @"              {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
    ",
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs
                                        {
                                            Metadata = @"                {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs
                                        {
                                            Text = "some output text",
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs
                                        {
                                            Ssml = @"                <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs
                                        {
                                            Metadata = @"                {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs
                                        {
                                            AudioUri = "http://example.com/some-audio-file.mp3",
                                        },
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs
                                    {
                                        TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs
                                        {
                                            PhoneNumber = "1-234-567-8901",
                                        },
                                    },
                                },
                                SetParameterActions = new[]
                                {
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs
                                    {
                                        Parameter = "some-param",
                                        Value = "123.45",
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs
                                    {
                                        Parameter = "another-param",
                                        Value = JsonSerializer.Serialize("abc"),
                                    },
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs
                                    {
                                        Parameter = "other-param",
                                        Value = JsonSerializer.Serialize(new[]
                                        {
                                            "foo",
                                        }),
                                    },
                                },
                                ConditionalCases = new[]
                                {
                                    new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs
                                    {
                                        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",
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        }),
                                    },
                                },
                            },
                            RepromptEventHandlers = new[]
                            {
                                new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs
                                {
                                    Event = "sys.no-match-1",
                                    TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs
                                    {
                                        ReturnPartialResponses = true,
                                        Webhook = myWebhook.Id,
                                        Tag = "some-tag",
                                        Messages = new[]
                                        {
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                Channel = "some-channel",
                                                Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs
                                                {
                                                    Texts = new[]
                                                    {
                                                        "Please provide param1",
                                                    },
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                Payload = @"                {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
    ",
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs
                                                {
                                                    Metadata = @"                  {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
                                                {
                                                    Text = "some output text",
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs
                                                {
                                                    Ssml = @"                  <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs
                                                {
                                                    Metadata = @"                  {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs
                                                {
                                                    AudioUri = "http://example.com/some-audio-file.mp3",
                                                },
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs
                                            {
                                                TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs
                                                {
                                                    PhoneNumber = "1-234-567-8901",
                                                },
                                            },
                                        },
                                        SetParameterActions = new[]
                                        {
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs
                                            {
                                                Parameter = "some-param",
                                                Value = "123.45",
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs
                                            {
                                                Parameter = "another-param",
                                                Value = JsonSerializer.Serialize("abc"),
                                            },
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs
                                            {
                                                Parameter = "other-param",
                                                Value = JsonSerializer.Serialize(new[]
                                                {
                                                    "foo",
                                                }),
                                            },
                                        },
                                        ConditionalCases = new[]
                                        {
                                            new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs
                                            {
                                                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",
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                        },
                                                    },
                                                }),
                                            },
                                        },
                                    },
                                },
                                new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs
                                {
                                    Event = "sys.no-match-2",
                                    TargetFlow = agent.StartFlow,
                                },
                                new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs
                                {
                                    Event = "sys.no-match-3",
                                    TargetPage = myPage2.Id,
                                },
                            },
                        },
                        Required = true,
                        Redact = true,
                        AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs
                        {
                            DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs
                            {
                                Enabled = true,
                                MaxDigits = 1,
                                FinishDigit = "#",
                            },
                        },
                    },
                },
            },
            TransitionRoutes = new[]
            {
                new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs
                {
                    Condition = "$page.params.status = 'FINAL'",
                    TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs
                    {
                        Messages = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                Channel = "some-channel",
                                Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs
                                {
                                    Texts = new[]
                                    {
                                        "information completed, navigating to page 2",
                                    },
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                Payload = @"          {""some-key"": ""some-value"", ""other-key"": [""other-value""]}
    ",
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs
                                {
                                    Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs
                                {
                                    Text = "some output text",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs
                                {
                                    Ssml = @"            <speak>Some example <say-as interpret-as=""characters"">SSML XML</say-as></speak>
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs
                                {
                                    Metadata = @"            {""some-metadata-key"": ""some-value"", ""other-metadata-key"": 1234}
    ",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs
                                {
                                    AudioUri = "http://example.com/some-audio-file.mp3",
                                },
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs
                            {
                                TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs
                                {
                                    PhoneNumber = "1-234-567-8901",
                                },
                            },
                        },
                        SetParameterActions = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "some-param",
                                Value = "123.45",
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "another-param",
                                Value = JsonSerializer.Serialize("abc"),
                            },
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs
                            {
                                Parameter = "other-param",
                                Value = JsonSerializer.Serialize(new[]
                                {
                                    "foo",
                                }),
                            },
                        },
                        ConditionalCases = new[]
                        {
                            new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs
                            {
                                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",
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                }),
                            },
                        },
                    },
                    TargetPage = myPage2.Id,
                },
            },
            AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs
            {
                DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs
                {
                    Enabled = true,
                    MaxDigits = 1,
                    FinishDigit = "#",
                },
            },
        });
    
    });
    
    package main
    
    import (
    	"encoding/json"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/diagflow"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		agent, err := diagflow.NewCxAgent(ctx, "agent", &diagflow.CxAgentArgs{
    			DisplayName:         pulumi.String("dialogflowcx-agent"),
    			Location:            pulumi.String("global"),
    			DefaultLanguageCode: pulumi.String("en"),
    			SupportedLanguageCodes: pulumi.StringArray{
    				pulumi.String("fr"),
    				pulumi.String("de"),
    				pulumi.String("es"),
    			},
    			TimeZone:                 pulumi.String("America/New_York"),
    			Description:              pulumi.String("Example description."),
    			AvatarUri:                pulumi.String("https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png"),
    			EnableStackdriverLogging: pulumi.Bool(true),
    			EnableSpellCorrection:    pulumi.Bool(true),
    			SpeechToTextSettings: &diagflow.CxAgentSpeechToTextSettingsArgs{
    				EnableSpeechAdaptation: pulumi.Bool(true),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		myPage2, err := diagflow.NewCxPage(ctx, "myPage2", &diagflow.CxPageArgs{
    			Parent:      agent.StartFlow,
    			DisplayName: pulumi.String("MyPage2"),
    		})
    		if err != nil {
    			return err
    		}
    		myWebhook, err := diagflow.NewCxWebhook(ctx, "myWebhook", &diagflow.CxWebhookArgs{
    			Parent:      agent.ID(),
    			DisplayName: pulumi.String("MyWebhook"),
    			GenericWebService: &diagflow.CxWebhookGenericWebServiceArgs{
    				Uri: pulumi.String("https://example.com"),
    			},
    		})
    		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)
    		tmpJSON6, err := json.Marshal("2000-01-01")
    		if err != nil {
    			return err
    		}
    		json6 := string(tmpJSON6)
    		tmpJSON7, err := json.Marshal("abc")
    		if err != nil {
    			return err
    		}
    		json7 := string(tmpJSON7)
    		tmpJSON8, err := json.Marshal([]string{
    			"foo",
    		})
    		if err != nil {
    			return err
    		}
    		json8 := string(tmpJSON8)
    		tmpJSON9, 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
    		}
    		json9 := string(tmpJSON9)
    		tmpJSON10, err := json.Marshal("abc")
    		if err != nil {
    			return err
    		}
    		json10 := string(tmpJSON10)
    		tmpJSON11, err := json.Marshal([]string{
    			"foo",
    		})
    		if err != nil {
    			return err
    		}
    		json11 := string(tmpJSON11)
    		tmpJSON12, 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
    		}
    		json12 := string(tmpJSON12)
    		tmpJSON13, err := json.Marshal("abc")
    		if err != nil {
    			return err
    		}
    		json13 := string(tmpJSON13)
    		tmpJSON14, err := json.Marshal([]string{
    			"foo",
    		})
    		if err != nil {
    			return err
    		}
    		json14 := string(tmpJSON14)
    		tmpJSON15, 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
    		}
    		json15 := string(tmpJSON15)
    		_, err = diagflow.NewCxPage(ctx, "basicPage", &diagflow.CxPageArgs{
    			Parent:      agent.StartFlow,
    			DisplayName: pulumi.String("MyPage"),
    			EntryFulfillment: &diagflow.CxPageEntryFulfillmentArgs{
    				Messages: diagflow.CxPageEntryFulfillmentMessageArray{
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						Channel: pulumi.String("some-channel"),
    						Text: &diagflow.CxPageEntryFulfillmentMessageTextArgs{
    							Texts: pulumi.StringArray{
    								pulumi.String("Welcome to page"),
    							},
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						Payload: pulumi.String("        {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						ConversationSuccess: &diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{
    							Metadata: pulumi.String("          {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						OutputAudioText: &diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{
    							Text: pulumi.String("some output text"),
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						OutputAudioText: &diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{
    							Ssml: pulumi.String("          <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n"),
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						LiveAgentHandoff: &diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{
    							Metadata: pulumi.String("          {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						PlayAudio: &diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{
    							AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
    						},
    					},
    					&diagflow.CxPageEntryFulfillmentMessageArgs{
    						TelephonyTransferCall: &diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{
    							PhoneNumber: pulumi.String("1-234-567-8901"),
    						},
    					},
    				},
    				SetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{
    					&diagflow.CxPageEntryFulfillmentSetParameterActionArgs{
    						Parameter: pulumi.String("some-param"),
    						Value:     pulumi.String("123.45"),
    					},
    					&diagflow.CxPageEntryFulfillmentSetParameterActionArgs{
    						Parameter: pulumi.String("another-param"),
    						Value:     pulumi.String(json0),
    					},
    					&diagflow.CxPageEntryFulfillmentSetParameterActionArgs{
    						Parameter: pulumi.String("other-param"),
    						Value:     pulumi.String(json1),
    					},
    				},
    				ConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{
    					&diagflow.CxPageEntryFulfillmentConditionalCaseArgs{
    						Cases: pulumi.String(json2),
    					},
    				},
    			},
    			EventHandlers: diagflow.CxPageEventHandlerArray{
    				&diagflow.CxPageEventHandlerArgs{
    					Event: pulumi.String("some-event"),
    					TriggerFulfillment: &diagflow.CxPageEventHandlerTriggerFulfillmentArgs{
    						ReturnPartialResponses: pulumi.Bool(true),
    						Messages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								Channel: pulumi.String("some-channel"),
    								Text: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{
    									Texts: pulumi.StringArray{
    										pulumi.String("Some text"),
    									},
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								Payload: pulumi.String("          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								ConversationSuccess: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{
    									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								OutputAudioText: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
    									Text: pulumi.String("some output text"),
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								OutputAudioText: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
    									Ssml: pulumi.String("            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n"),
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								LiveAgentHandoff: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{
    									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								PlayAudio: &diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{
    									AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
    								},
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{
    								TelephonyTransferCall: &diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{
    									PhoneNumber: pulumi.String("1-234-567-8901"),
    								},
    							},
    						},
    						SetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{
    							&diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("some-param"),
    								Value:     pulumi.String("123.45"),
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("another-param"),
    								Value:     pulumi.String(json3),
    							},
    							&diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("other-param"),
    								Value:     pulumi.String(json4),
    							},
    						},
    						ConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{
    							&diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{
    								Cases: pulumi.String(json5),
    							},
    						},
    					},
    				},
    			},
    			Form: &diagflow.CxPageFormArgs{
    				Parameters: diagflow.CxPageFormParameterArray{
    					&diagflow.CxPageFormParameterArgs{
    						DisplayName:  pulumi.String("param1"),
    						EntityType:   pulumi.String("projects/-/locations/-/agents/-/entityTypes/sys.date"),
    						DefaultValue: pulumi.String(json6),
    						FillBehavior: &diagflow.CxPageFormParameterFillBehaviorArgs{
    							InitialPromptFulfillment: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{
    								Messages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										Channel: pulumi.String("some-channel"),
    										Text: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{
    											Texts: pulumi.StringArray{
    												pulumi.String("Please provide param1"),
    											},
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										Payload: pulumi.String("              {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										ConversationSuccess: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{
    											Metadata: pulumi.String("                {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										OutputAudioText: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{
    											Text: pulumi.String("some output text"),
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										OutputAudioText: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{
    											Ssml: pulumi.String("                <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n"),
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										LiveAgentHandoff: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{
    											Metadata: pulumi.String("                {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										PlayAudio: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{
    											AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
    										},
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{
    										TelephonyTransferCall: &diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{
    											PhoneNumber: pulumi.String("1-234-567-8901"),
    										},
    									},
    								},
    								SetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{
    										Parameter: pulumi.String("some-param"),
    										Value:     pulumi.String("123.45"),
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{
    										Parameter: pulumi.String("another-param"),
    										Value:     pulumi.String(json7),
    									},
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{
    										Parameter: pulumi.String("other-param"),
    										Value:     pulumi.String(json8),
    									},
    								},
    								ConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{
    									&diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{
    										Cases: pulumi.String(json9),
    									},
    								},
    							},
    							RepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{
    								&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{
    									Event: pulumi.String("sys.no-match-1"),
    									TriggerFulfillment: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{
    										ReturnPartialResponses: pulumi.Bool(true),
    										Webhook:                myWebhook.ID(),
    										Tag:                    pulumi.String("some-tag"),
    										Messages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												Channel: pulumi.String("some-channel"),
    												Text: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{
    													Texts: pulumi.StringArray{
    														pulumi.String("Please provide param1"),
    													},
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												Payload: pulumi.String("                {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												ConversationSuccess: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{
    													Metadata: pulumi.String("                  {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												OutputAudioText: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
    													Text: pulumi.String("some output text"),
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												OutputAudioText: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{
    													Ssml: pulumi.String("                  <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n"),
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												LiveAgentHandoff: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{
    													Metadata: pulumi.String("                  {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												PlayAudio: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{
    													AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
    												},
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{
    												TelephonyTransferCall: &diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{
    													PhoneNumber: pulumi.String("1-234-567-8901"),
    												},
    											},
    										},
    										SetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{
    												Parameter: pulumi.String("some-param"),
    												Value:     pulumi.String("123.45"),
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{
    												Parameter: pulumi.String("another-param"),
    												Value:     pulumi.String(json10),
    											},
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{
    												Parameter: pulumi.String("other-param"),
    												Value:     pulumi.String(json11),
    											},
    										},
    										ConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{
    											&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{
    												Cases: pulumi.String(json12),
    											},
    										},
    									},
    								},
    								&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{
    									Event:      pulumi.String("sys.no-match-2"),
    									TargetFlow: agent.StartFlow,
    								},
    								&diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{
    									Event:      pulumi.String("sys.no-match-3"),
    									TargetPage: myPage2.ID(),
    								},
    							},
    						},
    						Required: pulumi.Bool(true),
    						Redact:   pulumi.Bool(true),
    						AdvancedSettings: &diagflow.CxPageFormParameterAdvancedSettingsArgs{
    							DtmfSettings: &diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{
    								Enabled:     pulumi.Bool(true),
    								MaxDigits:   pulumi.Int(1),
    								FinishDigit: pulumi.String("#"),
    							},
    						},
    					},
    				},
    			},
    			TransitionRoutes: diagflow.CxPageTransitionRouteArray{
    				&diagflow.CxPageTransitionRouteArgs{
    					Condition: pulumi.String("$page.params.status = 'FINAL'"),
    					TriggerFulfillment: &diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{
    						Messages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								Channel: pulumi.String("some-channel"),
    								Text: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{
    									Texts: pulumi.StringArray{
    										pulumi.String("information completed, navigating to page 2"),
    									},
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								Payload: pulumi.String("          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n"),
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								ConversationSuccess: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{
    									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								OutputAudioText: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{
    									Text: pulumi.String("some output text"),
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								OutputAudioText: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{
    									Ssml: pulumi.String("            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n"),
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								LiveAgentHandoff: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{
    									Metadata: pulumi.String("            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n"),
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								PlayAudio: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{
    									AudioUri: pulumi.String("http://example.com/some-audio-file.mp3"),
    								},
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{
    								TelephonyTransferCall: &diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{
    									PhoneNumber: pulumi.String("1-234-567-8901"),
    								},
    							},
    						},
    						SetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("some-param"),
    								Value:     pulumi.String("123.45"),
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("another-param"),
    								Value:     pulumi.String(json13),
    							},
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{
    								Parameter: pulumi.String("other-param"),
    								Value:     pulumi.String(json14),
    							},
    						},
    						ConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{
    							&diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{
    								Cases: pulumi.String(json15),
    							},
    						},
    					},
    					TargetPage: myPage2.ID(),
    				},
    			},
    			AdvancedSettings: &diagflow.CxPageAdvancedSettingsArgs{
    				DtmfSettings: &diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{
    					Enabled:     pulumi.Bool(true),
    					MaxDigits:   pulumi.Int(1),
    					FinishDigit: pulumi.String("#"),
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    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.CxPage;
    import com.pulumi.gcp.diagflow.CxPageArgs;
    import com.pulumi.gcp.diagflow.CxWebhook;
    import com.pulumi.gcp.diagflow.CxWebhookArgs;
    import com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;
    import com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;
    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 myPage2 = new CxPage("myPage2", CxPageArgs.builder()        
                .parent(agent.startFlow())
                .displayName("MyPage2")
                .build());
    
            var myWebhook = new CxWebhook("myWebhook", CxWebhookArgs.builder()        
                .parent(agent.id())
                .displayName("MyWebhook")
                .genericWebService(CxWebhookGenericWebServiceArgs.builder()
                    .uri("https://example.com")
                    .build())
                .build());
    
            var basicPage = new CxPage("basicPage", CxPageArgs.builder()        
                .parent(agent.startFlow())
                .displayName("MyPage")
                .entryFulfillment(CxPageEntryFulfillmentArgs.builder()
                    .messages(                
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .channel("some-channel")
                            .text(CxPageEntryFulfillmentMessageTextArgs.builder()
                                .texts("Welcome to page")
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .payload("""
            {"some-key": "some-value", "other-key": ["other-value"]}
                            """)
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()
                                .metadata("""
              {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                """)
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()
                                .text("some output text")
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()
                                .ssml("""
              <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                """)
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()
                                .metadata("""
              {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                """)
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()
                                .audioUri("http://example.com/some-audio-file.mp3")
                                .build())
                            .build(),
                        CxPageEntryFulfillmentMessageArgs.builder()
                            .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()
                                .phoneNumber("1-234-567-8901")
                                .build())
                            .build())
                    .setParameterActions(                
                        CxPageEntryFulfillmentSetParameterActionArgs.builder()
                            .parameter("some-param")
                            .value("123.45")
                            .build(),
                        CxPageEntryFulfillmentSetParameterActionArgs.builder()
                            .parameter("another-param")
                            .value(serializeJson(
                                "abc"))
                            .build(),
                        CxPageEntryFulfillmentSetParameterActionArgs.builder()
                            .parameter("other-param")
                            .value(serializeJson(
                                jsonArray("foo")))
                            .build())
                    .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.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())
                .eventHandlers(CxPageEventHandlerArgs.builder()
                    .event("some-event")
                    .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()
                        .returnPartialResponses(true)
                        .messages(                    
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .channel("some-channel")
                                .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()
                                    .texts("Some text")
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .payload("""
              {"some-key": "some-value", "other-key": ["other-value"]}
                                """)
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()
                                    .metadata("""
                {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                    """)
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                    .text("some output text")
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                    .ssml("""
                <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                    """)
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
                                    .metadata("""
                {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                    """)
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()
                                    .audioUri("http://example.com/some-audio-file.mp3")
                                    .build())
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()
                                .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
                                    .phoneNumber("1-234-567-8901")
                                    .build())
                                .build())
                        .setParameterActions(                    
                            CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("some-param")
                                .value("123.45")
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("another-param")
                                .value(serializeJson(
                                    "abc"))
                                .build(),
                            CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("other-param")
                                .value(serializeJson(
                                    jsonArray("foo")))
                                .build())
                        .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.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())
                .form(CxPageFormArgs.builder()
                    .parameters(CxPageFormParameterArgs.builder()
                        .displayName("param1")
                        .entityType("projects/-/locations/-/agents/-/entityTypes/sys.date")
                        .defaultValue(serializeJson(
                            "2000-01-01"))
                        .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()
                            .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()
                                .messages(                            
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .channel("some-channel")
                                        .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()
                                            .texts("Please provide param1")
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .payload("""
                  {"some-key": "some-value", "other-key": ["other-value"]}
                                        """)
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()
                                            .metadata("""
                    {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                            """)
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()
                                            .text("some output text")
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()
                                            .ssml("""
                    <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                            """)
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()
                                            .metadata("""
                    {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                            """)
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()
                                            .audioUri("http://example.com/some-audio-file.mp3")
                                            .build())
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()
                                        .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()
                                            .phoneNumber("1-234-567-8901")
                                            .build())
                                        .build())
                                .setParameterActions(                            
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()
                                        .parameter("some-param")
                                        .value("123.45")
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()
                                        .parameter("another-param")
                                        .value(serializeJson(
                                            "abc"))
                                        .build(),
                                    CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()
                                        .parameter("other-param")
                                        .value(serializeJson(
                                            jsonArray("foo")))
                                        .build())
                                .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.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())
                            .repromptEventHandlers(                        
                                CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()
                                    .event("sys.no-match-1")
                                    .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()
                                        .returnPartialResponses(true)
                                        .webhook(myWebhook.id())
                                        .tag("some-tag")
                                        .messages(                                    
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .channel("some-channel")
                                                .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()
                                                    .texts("Please provide param1")
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .payload("""
                    {"some-key": "some-value", "other-key": ["other-value"]}
                                                """)
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()
                                                    .metadata("""
                      {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                                    """)
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                                    .text("some output text")
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                                    .ssml("""
                      <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                                    """)
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
                                                    .metadata("""
                      {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                                    """)
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()
                                                    .audioUri("http://example.com/some-audio-file.mp3")
                                                    .build())
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()
                                                .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
                                                    .phoneNumber("1-234-567-8901")
                                                    .build())
                                                .build())
                                        .setParameterActions(                                    
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                                .parameter("some-param")
                                                .value("123.45")
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                                .parameter("another-param")
                                                .value(serializeJson(
                                                    "abc"))
                                                .build(),
                                            CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
                                                .parameter("other-param")
                                                .value(serializeJson(
                                                    jsonArray("foo")))
                                                .build())
                                        .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.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(),
                                CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()
                                    .event("sys.no-match-2")
                                    .targetFlow(agent.startFlow())
                                    .build(),
                                CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()
                                    .event("sys.no-match-3")
                                    .targetPage(myPage2.id())
                                    .build())
                            .build())
                        .required("true")
                        .redact("true")
                        .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()
                            .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()
                                .enabled(true)
                                .maxDigits(1)
                                .finishDigit("#")
                                .build())
                            .build())
                        .build())
                    .build())
                .transitionRoutes(CxPageTransitionRouteArgs.builder()
                    .condition("$page.params.status = 'FINAL'")
                    .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()
                        .messages(                    
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .channel("some-channel")
                                .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()
                                    .texts("information completed, navigating to page 2")
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .payload("""
              {"some-key": "some-value", "other-key": ["other-value"]}
                                """)
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()
                                    .metadata("""
                {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                    """)
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                    .text("some output text")
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
                                    .ssml("""
                <speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
                                    """)
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
                                    .metadata("""
                {"some-metadata-key": "some-value", "other-metadata-key": 1234}
                                    """)
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()
                                    .audioUri("http://example.com/some-audio-file.mp3")
                                    .build())
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()
                                .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
                                    .phoneNumber("1-234-567-8901")
                                    .build())
                                .build())
                        .setParameterActions(                    
                            CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("some-param")
                                .value("123.45")
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("another-param")
                                .value(serializeJson(
                                    "abc"))
                                .build(),
                            CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
                                .parameter("other-param")
                                .value(serializeJson(
                                    jsonArray("foo")))
                                .build())
                        .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.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())
                    .targetPage(myPage2.id())
                    .build())
                .advancedSettings(CxPageAdvancedSettingsArgs.builder()
                    .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()
                        .enabled(true)
                        .maxDigits(1)
                        .finishDigit("#")
                        .build())
                    .build())
                .build());
    
        }
    }
    
    import pulumi
    import json
    import pulumi_gcp as gcp
    
    agent = gcp.diagflow.CxAgent("agent",
        display_name="dialogflowcx-agent",
        location="global",
        default_language_code="en",
        supported_language_codes=[
            "fr",
            "de",
            "es",
        ],
        time_zone="America/New_York",
        description="Example description.",
        avatar_uri="https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png",
        enable_stackdriver_logging=True,
        enable_spell_correction=True,
        speech_to_text_settings=gcp.diagflow.CxAgentSpeechToTextSettingsArgs(
            enable_speech_adaptation=True,
        ))
    my_page2 = gcp.diagflow.CxPage("myPage2",
        parent=agent.start_flow,
        display_name="MyPage2")
    my_webhook = gcp.diagflow.CxWebhook("myWebhook",
        parent=agent.id,
        display_name="MyWebhook",
        generic_web_service=gcp.diagflow.CxWebhookGenericWebServiceArgs(
            uri="https://example.com",
        ))
    basic_page = gcp.diagflow.CxPage("basicPage",
        parent=agent.start_flow,
        display_name="MyPage",
        entry_fulfillment=gcp.diagflow.CxPageEntryFulfillmentArgs(
            messages=[
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    channel="some-channel",
                    text=gcp.diagflow.CxPageEntryFulfillmentMessageTextArgs(
                        texts=["Welcome to page"],
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    payload="        {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    conversation_success=gcp.diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs(
                        metadata="          {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    output_audio_text=gcp.diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs(
                        text="some output text",
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    output_audio_text=gcp.diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs(
                        ssml="          <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    live_agent_handoff=gcp.diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs(
                        metadata="          {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    play_audio=gcp.diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs(
                        audio_uri="http://example.com/some-audio-file.mp3",
                    ),
                ),
                gcp.diagflow.CxPageEntryFulfillmentMessageArgs(
                    telephony_transfer_call=gcp.diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs(
                        phone_number="1-234-567-8901",
                    ),
                ),
            ],
            set_parameter_actions=[
                gcp.diagflow.CxPageEntryFulfillmentSetParameterActionArgs(
                    parameter="some-param",
                    value="123.45",
                ),
                gcp.diagflow.CxPageEntryFulfillmentSetParameterActionArgs(
                    parameter="another-param",
                    value=json.dumps("abc"),
                ),
                gcp.diagflow.CxPageEntryFulfillmentSetParameterActionArgs(
                    parameter="other-param",
                    value=json.dumps(["foo"]),
                ),
            ],
            conditional_cases=[gcp.diagflow.CxPageEntryFulfillmentConditionalCaseArgs(
                cases=json.dumps([
                    {
                        "condition": "$sys.func.RAND() < 0.5",
                        "caseContent": [
                            {
                                "message": {
                                    "text": {
                                        "text": ["First case"],
                                    },
                                },
                            },
                            {
                                "additionalCases": {
                                    "cases": [{
                                        "condition": "$sys.func.RAND() < 0.2",
                                        "caseContent": [{
                                            "message": {
                                                "text": {
                                                    "text": ["Nested case"],
                                                },
                                            },
                                        }],
                                    }],
                                },
                            },
                        ],
                    },
                    {
                        "caseContent": [{
                            "message": {
                                "text": {
                                    "text": ["Final case"],
                                },
                            },
                        }],
                    },
                ]),
            )],
        ),
        event_handlers=[gcp.diagflow.CxPageEventHandlerArgs(
            event="some-event",
            trigger_fulfillment=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentArgs(
                return_partial_responses=True,
                messages=[
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        channel="some-channel",
                        text=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs(
                            texts=["Some text"],
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        payload="          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        conversation_success=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs(
                            metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        output_audio_text=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
                            text="some output text",
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        output_audio_text=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
                            ssml="            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        live_agent_handoff=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs(
                            metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        play_audio=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs(
                            audio_uri="http://example.com/some-audio-file.mp3",
                        ),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs(
                        telephony_transfer_call=gcp.diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs(
                            phone_number="1-234-567-8901",
                        ),
                    ),
                ],
                set_parameter_actions=[
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs(
                        parameter="some-param",
                        value="123.45",
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs(
                        parameter="another-param",
                        value=json.dumps("abc"),
                    ),
                    gcp.diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs(
                        parameter="other-param",
                        value=json.dumps(["foo"]),
                    ),
                ],
                conditional_cases=[gcp.diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs(
                    cases=json.dumps([
                        {
                            "condition": "$sys.func.RAND() < 0.5",
                            "caseContent": [
                                {
                                    "message": {
                                        "text": {
                                            "text": ["First case"],
                                        },
                                    },
                                },
                                {
                                    "additionalCases": {
                                        "cases": [{
                                            "condition": "$sys.func.RAND() < 0.2",
                                            "caseContent": [{
                                                "message": {
                                                    "text": {
                                                        "text": ["Nested case"],
                                                    },
                                                },
                                            }],
                                        }],
                                    },
                                },
                            ],
                        },
                        {
                            "caseContent": [{
                                "message": {
                                    "text": {
                                        "text": ["Final case"],
                                    },
                                },
                            }],
                        },
                    ]),
                )],
            ),
        )],
        form=gcp.diagflow.CxPageFormArgs(
            parameters=[gcp.diagflow.CxPageFormParameterArgs(
                display_name="param1",
                entity_type="projects/-/locations/-/agents/-/entityTypes/sys.date",
                default_value=json.dumps("2000-01-01"),
                fill_behavior=gcp.diagflow.CxPageFormParameterFillBehaviorArgs(
                    initial_prompt_fulfillment=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs(
                        messages=[
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                channel="some-channel",
                                text=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs(
                                    texts=["Please provide param1"],
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                payload="              {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                conversation_success=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs(
                                    metadata="                {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                output_audio_text=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs(
                                    text="some output text",
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                output_audio_text=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs(
                                    ssml="                <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                live_agent_handoff=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs(
                                    metadata="                {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                play_audio=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs(
                                    audio_uri="http://example.com/some-audio-file.mp3",
                                ),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs(
                                telephony_transfer_call=gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs(
                                    phone_number="1-234-567-8901",
                                ),
                            ),
                        ],
                        set_parameter_actions=[
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs(
                                parameter="some-param",
                                value="123.45",
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs(
                                parameter="another-param",
                                value=json.dumps("abc"),
                            ),
                            gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs(
                                parameter="other-param",
                                value=json.dumps(["foo"]),
                            ),
                        ],
                        conditional_cases=[gcp.diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs(
                            cases=json.dumps([
                                {
                                    "condition": "$sys.func.RAND() < 0.5",
                                    "caseContent": [
                                        {
                                            "message": {
                                                "text": {
                                                    "text": ["First case"],
                                                },
                                            },
                                        },
                                        {
                                            "additionalCases": {
                                                "cases": [{
                                                    "condition": "$sys.func.RAND() < 0.2",
                                                    "caseContent": [{
                                                        "message": {
                                                            "text": {
                                                                "text": ["Nested case"],
                                                            },
                                                        },
                                                    }],
                                                }],
                                            },
                                        },
                                    ],
                                },
                                {
                                    "caseContent": [{
                                        "message": {
                                            "text": {
                                                "text": ["Final case"],
                                            },
                                        },
                                    }],
                                },
                            ]),
                        )],
                    ),
                    reprompt_event_handlers=[
                        gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs(
                            event="sys.no-match-1",
                            trigger_fulfillment=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs(
                                return_partial_responses=True,
                                webhook=my_webhook.id,
                                tag="some-tag",
                                messages=[
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        channel="some-channel",
                                        text=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs(
                                            texts=["Please provide param1"],
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        payload="                {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        conversation_success=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs(
                                            metadata="                  {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        output_audio_text=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
                                            text="some output text",
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        output_audio_text=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs(
                                            ssml="                  <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        live_agent_handoff=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs(
                                            metadata="                  {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        play_audio=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs(
                                            audio_uri="http://example.com/some-audio-file.mp3",
                                        ),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs(
                                        telephony_transfer_call=gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs(
                                            phone_number="1-234-567-8901",
                                        ),
                                    ),
                                ],
                                set_parameter_actions=[
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs(
                                        parameter="some-param",
                                        value="123.45",
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs(
                                        parameter="another-param",
                                        value=json.dumps("abc"),
                                    ),
                                    gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs(
                                        parameter="other-param",
                                        value=json.dumps(["foo"]),
                                    ),
                                ],
                                conditional_cases=[gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs(
                                    cases=json.dumps([
                                        {
                                            "condition": "$sys.func.RAND() < 0.5",
                                            "caseContent": [
                                                {
                                                    "message": {
                                                        "text": {
                                                            "text": ["First case"],
                                                        },
                                                    },
                                                },
                                                {
                                                    "additionalCases": {
                                                        "cases": [{
                                                            "condition": "$sys.func.RAND() < 0.2",
                                                            "caseContent": [{
                                                                "message": {
                                                                    "text": {
                                                                        "text": ["Nested case"],
                                                                    },
                                                                },
                                                            }],
                                                        }],
                                                    },
                                                },
                                            ],
                                        },
                                        {
                                            "caseContent": [{
                                                "message": {
                                                    "text": {
                                                        "text": ["Final case"],
                                                    },
                                                },
                                            }],
                                        },
                                    ]),
                                )],
                            ),
                        ),
                        gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs(
                            event="sys.no-match-2",
                            target_flow=agent.start_flow,
                        ),
                        gcp.diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs(
                            event="sys.no-match-3",
                            target_page=my_page2.id,
                        ),
                    ],
                ),
                required=True,
                redact=True,
                advanced_settings=gcp.diagflow.CxPageFormParameterAdvancedSettingsArgs(
                    dtmf_settings=gcp.diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs(
                        enabled=True,
                        max_digits=1,
                        finish_digit="#",
                    ),
                ),
            )],
        ),
        transition_routes=[gcp.diagflow.CxPageTransitionRouteArgs(
            condition="$page.params.status = 'FINAL'",
            trigger_fulfillment=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentArgs(
                messages=[
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        channel="some-channel",
                        text=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs(
                            texts=["information completed, navigating to page 2"],
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        payload="          {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n",
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        conversation_success=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs(
                            metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        output_audio_text=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs(
                            text="some output text",
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        output_audio_text=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs(
                            ssml="            <speak>Some example <say-as interpret-as=\"characters\">SSML XML</say-as></speak>\n",
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        live_agent_handoff=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs(
                            metadata="            {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n",
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        play_audio=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs(
                            audio_uri="http://example.com/some-audio-file.mp3",
                        ),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs(
                        telephony_transfer_call=gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs(
                            phone_number="1-234-567-8901",
                        ),
                    ),
                ],
                set_parameter_actions=[
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs(
                        parameter="some-param",
                        value="123.45",
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs(
                        parameter="another-param",
                        value=json.dumps("abc"),
                    ),
                    gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs(
                        parameter="other-param",
                        value=json.dumps(["foo"]),
                    ),
                ],
                conditional_cases=[gcp.diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs(
                    cases=json.dumps([
                        {
                            "condition": "$sys.func.RAND() < 0.5",
                            "caseContent": [
                                {
                                    "message": {
                                        "text": {
                                            "text": ["First case"],
                                        },
                                    },
                                },
                                {
                                    "additionalCases": {
                                        "cases": [{
                                            "condition": "$sys.func.RAND() < 0.2",
                                            "caseContent": [{
                                                "message": {
                                                    "text": {
                                                        "text": ["Nested case"],
                                                    },
                                                },
                                            }],
                                        }],
                                    },
                                },
                            ],
                        },
                        {
                            "caseContent": [{
                                "message": {
                                    "text": {
                                        "text": ["Final case"],
                                    },
                                },
                            }],
                        },
                    ]),
                )],
            ),
            target_page=my_page2.id,
        )],
        advanced_settings=gcp.diagflow.CxPageAdvancedSettingsArgs(
            dtmf_settings=gcp.diagflow.CxPageAdvancedSettingsDtmfSettingsArgs(
                enabled=True,
                max_digits=1,
                finish_digit="#",
            ),
        ))
    
    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 myPage2 = new gcp.diagflow.CxPage("myPage2", {
        parent: agent.startFlow,
        displayName: "MyPage2",
    });
    const myWebhook = new gcp.diagflow.CxWebhook("myWebhook", {
        parent: agent.id,
        displayName: "MyWebhook",
        genericWebService: {
            uri: "https://example.com",
        },
    });
    const basicPage = new gcp.diagflow.CxPage("basicPage", {
        parent: agent.startFlow,
        displayName: "MyPage",
        entryFulfillment: {
            messages: [
                {
                    channel: "some-channel",
                    text: {
                        texts: ["Welcome to page"],
                    },
                },
                {
                    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"],
                                },
                            },
                        }],
                    },
                ]),
            }],
        },
        eventHandlers: [{
            event: "some-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"],
                                    },
                                },
                            }],
                        },
                    ]),
                }],
            },
        }],
        form: {
            parameters: [{
                displayName: "param1",
                entityType: "projects/-/locations/-/agents/-/entityTypes/sys.date",
                defaultValue: JSON.stringify("2000-01-01"),
                fillBehavior: {
                    initialPromptFulfillment: {
                        messages: [
                            {
                                channel: "some-channel",
                                text: {
                                    texts: ["Please provide param1"],
                                },
                            },
                            {
                                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"],
                                            },
                                        },
                                    }],
                                },
                            ]),
                        }],
                    },
                    repromptEventHandlers: [
                        {
                            event: "sys.no-match-1",
                            triggerFulfillment: {
                                returnPartialResponses: true,
                                webhook: myWebhook.id,
                                tag: "some-tag",
                                messages: [
                                    {
                                        channel: "some-channel",
                                        text: {
                                            texts: ["Please provide param1"],
                                        },
                                    },
                                    {
                                        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"],
                                                    },
                                                },
                                            }],
                                        },
                                    ]),
                                }],
                            },
                        },
                        {
                            event: "sys.no-match-2",
                            targetFlow: agent.startFlow,
                        },
                        {
                            event: "sys.no-match-3",
                            targetPage: myPage2.id,
                        },
                    ],
                },
                required: true,
                redact: true,
                advancedSettings: {
                    dtmfSettings: {
                        enabled: true,
                        maxDigits: 1,
                        finishDigit: "#",
                    },
                },
            }],
        },
        transitionRoutes: [{
            condition: "$page.params.status = 'FINAL'",
            triggerFulfillment: {
                messages: [
                    {
                        channel: "some-channel",
                        text: {
                            texts: ["information completed, navigating to page 2"],
                        },
                    },
                    {
                        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"],
                                    },
                                },
                            }],
                        },
                    ]),
                }],
            },
            targetPage: myPage2.id,
        }],
        advancedSettings: {
            dtmfSettings: {
                enabled: true,
                maxDigits: 1,
                finishDigit: "#",
            },
        },
    });
    
    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
      basicPage:
        type: gcp:diagflow:CxPage
        properties:
          parent: ${agent.startFlow}
          displayName: MyPage
          entryFulfillment:
            messages:
              - channel: some-channel
                text:
                  texts:
                    - Welcome to page
              - 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
          eventHandlers:
            - event: some-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
          form:
            parameters:
              - displayName: param1
                entityType: projects/-/locations/-/agents/-/entityTypes/sys.date
                defaultValue:
                  fn::toJSON: 2000-01-01
                fillBehavior:
                  initialPromptFulfillment:
                    messages:
                      - channel: some-channel
                        text:
                          texts:
                            - Please provide param1
                      - 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
                  repromptEventHandlers:
                    - event: sys.no-match-1
                      triggerFulfillment:
                        returnPartialResponses: true
                        webhook: ${myWebhook.id}
                        tag: some-tag
                        messages:
                          - channel: some-channel
                            text:
                              texts:
                                - Please provide param1
                          - 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
                    - event: sys.no-match-2
                      targetFlow: ${agent.startFlow}
                    - event: sys.no-match-3
                      targetPage: ${myPage2.id}
                required: 'true'
                redact: 'true'
                advancedSettings:
                  dtmfSettings:
                    enabled: true
                    maxDigits: 1
                    finishDigit: '#'
          transitionRoutes:
            - condition: $page.params.status = 'FINAL'
              triggerFulfillment:
                messages:
                  - channel: some-channel
                    text:
                      texts:
                        - information completed, navigating to page 2
                  - 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
              targetPage: ${myPage2.id}
          advancedSettings:
            dtmfSettings:
              enabled: true
              maxDigits: 1
              finishDigit: '#'
      myPage2:
        type: gcp:diagflow:CxPage
        properties:
          parent: ${agent.startFlow}
          displayName: MyPage2
      myWebhook:
        type: gcp:diagflow:CxWebhook
        properties:
          parent: ${agent.id}
          displayName: MyWebhook
          genericWebService:
            uri: https://example.com
    

    Create CxPage Resource

    new CxPage(name: string, args: CxPageArgs, opts?: CustomResourceOptions);
    @overload
    def CxPage(resource_name: str,
               opts: Optional[ResourceOptions] = None,
               advanced_settings: Optional[CxPageAdvancedSettingsArgs] = None,
               display_name: Optional[str] = None,
               entry_fulfillment: Optional[CxPageEntryFulfillmentArgs] = None,
               event_handlers: Optional[Sequence[CxPageEventHandlerArgs]] = None,
               form: Optional[CxPageFormArgs] = None,
               language_code: Optional[str] = None,
               parent: Optional[str] = None,
               transition_route_groups: Optional[Sequence[str]] = None,
               transition_routes: Optional[Sequence[CxPageTransitionRouteArgs]] = None)
    @overload
    def CxPage(resource_name: str,
               args: CxPageArgs,
               opts: Optional[ResourceOptions] = None)
    func NewCxPage(ctx *Context, name string, args CxPageArgs, opts ...ResourceOption) (*CxPage, error)
    public CxPage(string name, CxPageArgs args, CustomResourceOptions? opts = null)
    public CxPage(String name, CxPageArgs args)
    public CxPage(String name, CxPageArgs args, CustomResourceOptions options)
    
    type: gcp:diagflow:CxPage
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    name string
    The unique name of the resource.
    args CxPageArgs
    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 CxPageArgs
    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 CxPageArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args CxPageArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args CxPageArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    CxPage 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 CxPage resource accepts the following input properties:

    DisplayName string

    The human-readable name of the page, unique within the agent.


    AdvancedSettings CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    EntryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    EventHandlers List<CxPageEventHandler>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    Form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    LanguageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    Parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    TransitionRouteGroups List<string>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    TransitionRoutes List<CxPageTransitionRoute>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    DisplayName string

    The human-readable name of the page, unique within the agent.


    AdvancedSettings CxPageAdvancedSettingsArgs

    Hierarchical advanced settings for this page. 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.

    EntryFulfillment CxPageEntryFulfillmentArgs

    The fulfillment to call when the session is entering the page. Structure is documented below.

    EventHandlers []CxPageEventHandlerArgs

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    Form CxPageFormArgs

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    LanguageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    Parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    TransitionRouteGroups []string

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    TransitionRoutes []CxPageTransitionRouteArgs

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    displayName String

    The human-readable name of the page, unique within the agent.


    advancedSettings CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    entryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers List<CxPageEventHandler>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode String

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    parent String

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups List<String>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes List<CxPageTransitionRoute>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    displayName string

    The human-readable name of the page, unique within the agent.


    advancedSettings CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    entryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers CxPageEventHandler[]

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups string[]

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes CxPageTransitionRoute[]

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    display_name str

    The human-readable name of the page, unique within the agent.


    advanced_settings CxPageAdvancedSettingsArgs

    Hierarchical advanced settings for this page. 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.

    entry_fulfillment CxPageEntryFulfillmentArgs

    The fulfillment to call when the session is entering the page. Structure is documented below.

    event_handlers Sequence[CxPageEventHandlerArgs]

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageFormArgs

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    language_code str

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    parent str

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transition_route_groups Sequence[str]

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transition_routes Sequence[CxPageTransitionRouteArgs]

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    displayName String

    The human-readable name of the page, unique within the agent.


    advancedSettings Property Map

    Hierarchical advanced settings for this page. 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.

    entryFulfillment Property Map

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers List<Property Map>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form Property Map

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode String

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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.

    parent String

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups List<String>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes List<Property Map>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    Outputs

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

    Id string

    The provider-assigned unique ID for this managed resource.

    Name string

    (Output) The unique identifier of this event handler.

    Id string

    The provider-assigned unique ID for this managed resource.

    Name string

    (Output) The unique identifier of this event handler.

    id String

    The provider-assigned unique ID for this managed resource.

    name String

    (Output) The unique identifier of this event handler.

    id string

    The provider-assigned unique ID for this managed resource.

    name string

    (Output) The unique identifier of this event handler.

    id str

    The provider-assigned unique ID for this managed resource.

    name str

    (Output) The unique identifier of this event handler.

    id String

    The provider-assigned unique ID for this managed resource.

    name String

    (Output) The unique identifier of this event handler.

    Look up Existing CxPage Resource

    Get an existing CxPage 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?: CxPageState, opts?: CustomResourceOptions): CxPage
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            advanced_settings: Optional[CxPageAdvancedSettingsArgs] = None,
            display_name: Optional[str] = None,
            entry_fulfillment: Optional[CxPageEntryFulfillmentArgs] = None,
            event_handlers: Optional[Sequence[CxPageEventHandlerArgs]] = None,
            form: Optional[CxPageFormArgs] = None,
            language_code: Optional[str] = None,
            name: Optional[str] = None,
            parent: Optional[str] = None,
            transition_route_groups: Optional[Sequence[str]] = None,
            transition_routes: Optional[Sequence[CxPageTransitionRouteArgs]] = None) -> CxPage
    func GetCxPage(ctx *Context, name string, id IDInput, state *CxPageState, opts ...ResourceOption) (*CxPage, error)
    public static CxPage Get(string name, Input<string> id, CxPageState? state, CustomResourceOptions? opts = null)
    public static CxPage get(String name, Output<String> id, CxPageState 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 CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    DisplayName string

    The human-readable name of the page, unique within the agent.


    EntryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    EventHandlers List<CxPageEventHandler>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    Form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    LanguageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    Parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    TransitionRouteGroups List<string>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    TransitionRoutes List<CxPageTransitionRoute>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    AdvancedSettings CxPageAdvancedSettingsArgs

    Hierarchical advanced settings for this page. 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.

    DisplayName string

    The human-readable name of the page, unique within the agent.


    EntryFulfillment CxPageEntryFulfillmentArgs

    The fulfillment to call when the session is entering the page. Structure is documented below.

    EventHandlers []CxPageEventHandlerArgs

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    Form CxPageFormArgs

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    LanguageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    Parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    TransitionRouteGroups []string

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    TransitionRoutes []CxPageTransitionRouteArgs

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    advancedSettings CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    displayName String

    The human-readable name of the page, unique within the agent.


    entryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers List<CxPageEventHandler>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode String

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    parent String

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups List<String>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes List<CxPageTransitionRoute>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    advancedSettings CxPageAdvancedSettings

    Hierarchical advanced settings for this page. 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.

    displayName string

    The human-readable name of the page, unique within the agent.


    entryFulfillment CxPageEntryFulfillment

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers CxPageEventHandler[]

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageForm

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode string

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    parent string

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups string[]

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes CxPageTransitionRoute[]

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    advanced_settings CxPageAdvancedSettingsArgs

    Hierarchical advanced settings for this page. 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.

    display_name str

    The human-readable name of the page, unique within the agent.


    entry_fulfillment CxPageEntryFulfillmentArgs

    The fulfillment to call when the session is entering the page. Structure is documented below.

    event_handlers Sequence[CxPageEventHandlerArgs]

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form CxPageFormArgs

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    language_code str

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    parent str

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transition_route_groups Sequence[str]

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transition_routes Sequence[CxPageTransitionRouteArgs]

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    advancedSettings Property Map

    Hierarchical advanced settings for this page. 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.

    displayName String

    The human-readable name of the page, unique within the agent.


    entryFulfillment Property Map

    The fulfillment to call when the session is entering the page. Structure is documented below.

    eventHandlers List<Property Map>

    Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.

    form Property Map

    The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.

    languageCode String

    The language of the following fields in page: Page.entry_fulfillment.messages Page.entry_fulfillment.conditional_cases Page.event_handlers.trigger_fulfillment.messages Page.event_handlers.trigger_fulfillment.conditional_cases Page.form.parameters.fill_behavior.initial_prompt_fulfillment.messages Page.form.parameters.fill_behavior.initial_prompt_fulfillment.conditional_cases Page.form.parameters.fill_behavior.reprompt_event_handlers.messages Page.form.parameters.fill_behavior.reprompt_event_handlers.conditional_cases Page.transition_routes.trigger_fulfillment.messages Page.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

    (Output) The unique identifier of this event handler.

    parent String

    The flow to create a page for. Format: projects//locations//agents//flows/.

    transitionRouteGroups List<String>

    Ordered list of TransitionRouteGroups associated with the page. Transition route groups must be unique within a page. If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route > page's transition route group > flow's transition routes. If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:projects//locations//agents//flows//transitionRouteGroups/.

    transitionRoutes List<Property Map>

    A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: TransitionRoutes defined in the page with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in flow with intent specified. TransitionRoutes defined in the transition route groups with intent specified. TransitionRoutes defined in the page with only condition specified. TransitionRoutes defined in the transition route groups with only condition specified. Structure is documented below.

    Supporting Types

    CxPageAdvancedSettings, CxPageAdvancedSettingsArgs

    DtmfSettings CxPageAdvancedSettingsDtmfSettings

    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.
    DtmfSettings CxPageAdvancedSettingsDtmfSettings

    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.
    dtmfSettings CxPageAdvancedSettingsDtmfSettings

    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.
    dtmfSettings CxPageAdvancedSettingsDtmfSettings

    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.
    dtmf_settings CxPageAdvancedSettingsDtmfSettings

    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.
    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.

    CxPageAdvancedSettingsDtmfSettings, CxPageAdvancedSettingsDtmfSettingsArgs

    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.

    CxPageEntryFulfillment, CxPageEntryFulfillmentArgs

    ConditionalCases List<CxPageEntryFulfillmentConditionalCase>

    Conditional cases for this fulfillment. Structure is documented below.

    Messages List<CxPageEntryFulfillmentMessage>

    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<CxPageEntryFulfillmentSetParameterAction>

    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 []CxPageEntryFulfillmentConditionalCase

    Conditional cases for this fulfillment. Structure is documented below.

    Messages []CxPageEntryFulfillmentMessage

    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 []CxPageEntryFulfillmentSetParameterAction

    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<CxPageEntryFulfillmentConditionalCase>

    Conditional cases for this fulfillment. Structure is documented below.

    messages List<CxPageEntryFulfillmentMessage>

    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<CxPageEntryFulfillmentSetParameterAction>

    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 CxPageEntryFulfillmentConditionalCase[]

    Conditional cases for this fulfillment. Structure is documented below.

    messages CxPageEntryFulfillmentMessage[]

    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 CxPageEntryFulfillmentSetParameterAction[]

    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[CxPageEntryFulfillmentConditionalCase]

    Conditional cases for this fulfillment. Structure is documented below.

    messages Sequence[CxPageEntryFulfillmentMessage]

    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[CxPageEntryFulfillmentSetParameterAction]

    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/.

    CxPageEntryFulfillmentConditionalCase, CxPageEntryFulfillmentConditionalCaseArgs

    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.

    CxPageEntryFulfillmentMessage, CxPageEntryFulfillmentMessageArgs

    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 CxPageEntryFulfillmentMessageConversationSuccess

    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 CxPageEntryFulfillmentMessageLiveAgentHandoff

    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 CxPageEntryFulfillmentMessageOutputAudioText

    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 CxPageEntryFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    TelephonyTransferCall CxPageEntryFulfillmentMessageTelephonyTransferCall

    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 CxPageEntryFulfillmentMessageText

    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 CxPageEntryFulfillmentMessageConversationSuccess

    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 CxPageEntryFulfillmentMessageLiveAgentHandoff

    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 CxPageEntryFulfillmentMessageOutputAudioText

    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 CxPageEntryFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    TelephonyTransferCall CxPageEntryFulfillmentMessageTelephonyTransferCall

    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 CxPageEntryFulfillmentMessageText

    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 CxPageEntryFulfillmentMessageConversationSuccess

    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 CxPageEntryFulfillmentMessageLiveAgentHandoff

    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 CxPageEntryFulfillmentMessageOutputAudioText

    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 CxPageEntryFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephonyTransferCall CxPageEntryFulfillmentMessageTelephonyTransferCall

    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 CxPageEntryFulfillmentMessageText

    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 CxPageEntryFulfillmentMessageConversationSuccess

    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 CxPageEntryFulfillmentMessageLiveAgentHandoff

    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 CxPageEntryFulfillmentMessageOutputAudioText

    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 CxPageEntryFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephonyTransferCall CxPageEntryFulfillmentMessageTelephonyTransferCall

    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 CxPageEntryFulfillmentMessageText

    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 CxPageEntryFulfillmentMessageConversationSuccess

    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 CxPageEntryFulfillmentMessageLiveAgentHandoff

    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 CxPageEntryFulfillmentMessageOutputAudioText

    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 CxPageEntryFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephony_transfer_call CxPageEntryFulfillmentMessageTelephonyTransferCall

    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 CxPageEntryFulfillmentMessageText

    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.

    CxPageEntryFulfillmentMessageConversationSuccess, CxPageEntryFulfillmentMessageConversationSuccessArgs

    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.

    CxPageEntryFulfillmentMessageLiveAgentHandoff, CxPageEntryFulfillmentMessageLiveAgentHandoffArgs

    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.

    CxPageEntryFulfillmentMessageOutputAudioText, CxPageEntryFulfillmentMessageOutputAudioTextArgs

    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.

    CxPageEntryFulfillmentMessagePlayAudio, CxPageEntryFulfillmentMessagePlayAudioArgs

    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.

    CxPageEntryFulfillmentMessageTelephonyTransferCall, CxPageEntryFulfillmentMessageTelephonyTransferCallArgs

    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.

    CxPageEntryFulfillmentMessageText, CxPageEntryFulfillmentMessageTextArgs

    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.

    CxPageEntryFulfillmentSetParameterAction, CxPageEntryFulfillmentSetParameterActionArgs

    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.

    CxPageEventHandler, CxPageEventHandlerArgs

    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 CxPageEventHandlerTriggerFulfillment

    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 CxPageEventHandlerTriggerFulfillment

    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 CxPageEventHandlerTriggerFulfillment

    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 CxPageEventHandlerTriggerFulfillment

    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 CxPageEventHandlerTriggerFulfillment

    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.

    CxPageEventHandlerTriggerFulfillment, CxPageEventHandlerTriggerFulfillmentArgs

    ConditionalCases List<CxPageEventHandlerTriggerFulfillmentConditionalCase>

    Conditional cases for this fulfillment. Structure is documented below.

    Messages List<CxPageEventHandlerTriggerFulfillmentMessage>

    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<CxPageEventHandlerTriggerFulfillmentSetParameterAction>

    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 []CxPageEventHandlerTriggerFulfillmentConditionalCase

    Conditional cases for this fulfillment. Structure is documented below.

    Messages []CxPageEventHandlerTriggerFulfillmentMessage

    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 []CxPageEventHandlerTriggerFulfillmentSetParameterAction

    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<CxPageEventHandlerTriggerFulfillmentConditionalCase>

    Conditional cases for this fulfillment. Structure is documented below.

    messages List<CxPageEventHandlerTriggerFulfillmentMessage>

    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<CxPageEventHandlerTriggerFulfillmentSetParameterAction>

    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 CxPageEventHandlerTriggerFulfillmentConditionalCase[]

    Conditional cases for this fulfillment. Structure is documented below.

    messages CxPageEventHandlerTriggerFulfillmentMessage[]

    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 CxPageEventHandlerTriggerFulfillmentSetParameterAction[]

    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[CxPageEventHandlerTriggerFulfillmentConditionalCase]

    Conditional cases for this fulfillment. Structure is documented below.

    messages Sequence[CxPageEventHandlerTriggerFulfillmentMessage]

    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[CxPageEventHandlerTriggerFulfillmentSetParameterAction]

    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/.

    CxPageEventHandlerTriggerFulfillmentConditionalCase, CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessage, CxPageEventHandlerTriggerFulfillmentMessageArgs

    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 CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess

    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 CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff

    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 CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText

    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 CxPageEventHandlerTriggerFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    TelephonyTransferCall CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall

    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 CxPageEventHandlerTriggerFulfillmentMessageText

    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 CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess

    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 CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff

    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 CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText

    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 CxPageEventHandlerTriggerFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    TelephonyTransferCall CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall

    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 CxPageEventHandlerTriggerFulfillmentMessageText

    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 CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess

    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 CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff

    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 CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText

    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 CxPageEventHandlerTriggerFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephonyTransferCall CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall

    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 CxPageEventHandlerTriggerFulfillmentMessageText

    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 CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess

    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 CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff

    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 CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText

    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 CxPageEventHandlerTriggerFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephonyTransferCall CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall

    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 CxPageEventHandlerTriggerFulfillmentMessageText

    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 CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess

    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 CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff

    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 CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText

    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 CxPageEventHandlerTriggerFulfillmentMessagePlayAudio

    Specifies an audio clip to be played by the client as part of the response. Structure is documented below.

    telephony_transfer_call CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall

    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 CxPageEventHandlerTriggerFulfillmentMessageText

    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.

    CxPageEventHandlerTriggerFulfillmentMessageConversationSuccess, CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoff, CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessageOutputAudioText, CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessagePlayAudio, CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCall, CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs

    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.

    CxPageEventHandlerTriggerFulfillmentMessageText, CxPageEventHandlerTriggerFulfillmentMessageTextArgs

    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.

    CxPageEventHandlerTriggerFulfillmentSetParameterAction, CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs

    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.

    CxPageForm, CxPageFormArgs

    Parameters List<CxPageFormParameter>

    Parameters to collect from the user. Structure is documented below.

    Parameters []CxPageFormParameter

    Parameters to collect from the user. Structure is documented below.

    parameters List<CxPageFormParameter>

    Parameters to collect from the user. Structure is documented below.

    parameters CxPageFormParameter[]

    Parameters to collect from the user. Structure is documented below.

    parameters Sequence[CxPageFormParameter]

    Parameters to collect from the user. Structure is documented below.

    parameters List<Property Map>

    Parameters to collect from the user. Structure is documented below.

    CxPageFormParameter, CxPageFormParameterArgs

    AdvancedSettings CxPageFormParameterAdvancedSettings

    Hierarchical advanced settings for this parameter. 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.

    DefaultValue string

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    DisplayName string

    The human-readable name of the parameter, unique within the form.

    EntityType string

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    FillBehavior CxPageFormParameterFillBehavior

    Defines fill behavior for the parameter. Structure is documented below.

    IsList bool

    Indicates whether the parameter represents a list of values.

    Redact bool

    Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.

    Required bool

    Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.

    AdvancedSettings CxPageFormParameterAdvancedSettings

    Hierarchical advanced settings for this parameter. 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.

    DefaultValue string

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    DisplayName string

    The human-readable name of the parameter, unique within the form.

    EntityType string

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    FillBehavior CxPageFormParameterFillBehavior

    Defines fill behavior for the parameter. Structure is documented below.

    IsList bool

    Indicates whether the parameter represents a list of values.

    Redact bool

    Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.

    Required bool

    Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.

    advancedSettings CxPageFormParameterAdvancedSettings

    Hierarchical advanced settings for this parameter. 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.

    defaultValue String

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    displayName String

    The human-readable name of the parameter, unique within the form.

    entityType String

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    fillBehavior CxPageFormParameterFillBehavior

    Defines fill behavior for the parameter. Structure is documented below.

    isList Boolean

    Indicates whether the parameter represents a list of values.

    redact Boolean

    Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.

    required Boolean

    Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.

    advancedSettings CxPageFormParameterAdvancedSettings

    Hierarchical advanced settings for this parameter. 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.

    defaultValue string

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    displayName string

    The human-readable name of the parameter, unique within the form.

    entityType string

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    fillBehavior CxPageFormParameterFillBehavior

    Defines fill behavior for the parameter. Structure is documented below.

    isList boolean

    Indicates whether the parameter represents a list of values.

    redact boolean

    Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.

    required boolean

    Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.

    advanced_settings CxPageFormParameterAdvancedSettings

    Hierarchical advanced settings for this parameter. 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.

    default_value str

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    display_name str

    The human-readable name of the parameter, unique within the form.

    entity_type str

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    fill_behavior CxPageFormParameterFillBehavior

    Defines fill behavior for the parameter. Structure is documented below.

    is_list bool

    Indicates whether the parameter represents a list of values.

    redact bool

    Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.

    required bool

    Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.

    advancedSettings Property Map

    Hierarchical advanced settings for this parameter. 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.

    defaultValue String

    The default value of an optional parameter. If the parameter is required, the default value will be ignored.

    displayName String

    The human-readable name of the parameter, unique within the form.

    entityType String

    The entity type of the parameter. Format: projects/-/locations/-/agents/-/entityTypes/ for system entity types (for example, projects/-/locations/-/agents/-/entityTypes/sys.date), or projects//locations//agents//entityTypes/ for developer entity types.

    fillBehavior Property Map

    Defines fill behavior for the parameter. Structure is documented below.