CxFlowArgs

data class CxFlowArgs(val description: Output<String>? = null, val displayName: Output<String>? = null, val eventHandlers: Output<List<CxFlowEventHandlerArgs>>? = null, val languageCode: Output<String>? = null, val nluSettings: Output<CxFlowNluSettingsArgs>? = null, val parent: Output<String>? = null, val transitionRouteGroups: Output<List<String>>? = null, val transitionRoutes: Output<List<CxFlowTransitionRouteArgs>>? = null) : ConvertibleToJava<CxFlowArgs>

Flows represents the conversation flows when you build your chatbot agent. To get more information about Flow, see:

Example Usage

Dialogflowcx Flow Full

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.diagflow.CxAgent;
import com.pulumi.gcp.diagflow.CxAgentArgs;
import com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;
import com.pulumi.gcp.diagflow.CxFlow;
import com.pulumi.gcp.diagflow.CxFlowArgs;
import com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;
import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;
import com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;
import com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;
import com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;
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 basicFlow = new CxFlow("basicFlow", CxFlowArgs.builder()
.parent(agent.id())
.displayName("MyFlow")
.description("Test Flow")
.nluSettings(CxFlowNluSettingsArgs.builder()
.classificationThreshold(0.3)
.modelType("MODEL_TYPE_STANDARD")
.build())
.eventHandlers(
CxFlowEventHandlerArgs.builder()
.event("custom-event")
.triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
.returnPartialResponses(false)
.messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
.texts("I didn't get that. Can you say it again?")
.build())
.build())
.build())
.build(),
CxFlowEventHandlerArgs.builder()
.event("sys.no-match-default")
.triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
.returnPartialResponses(false)
.messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
.texts("Sorry, could you say that again?")
.build())
.build())
.build())
.build(),
CxFlowEventHandlerArgs.builder()
.event("sys.no-input-default")
.triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
.returnPartialResponses(false)
.messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
.texts("One more time?")
.build())
.build())
.build())
.build(),
CxFlowEventHandlerArgs.builder()
.event("another-event")
.triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()
.returnPartialResponses(true)
.messages(
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.channel("some-channel")
.text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()
.texts("Some text")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.payload("""
{"some-key": "some-value", "other-key": ["other-value"]}
""")
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()
.metadata("""
{"some-metadata-key": "some-value", "other-metadata-key": 1234}
""")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
.text("some output text")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()
.ssml("""
<speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
""")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
.metadata("""
{"some-metadata-key": "some-value", "other-metadata-key": 1234}
""")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()
.audioUri("http://example.com/some-audio-file.mp3")
.build())
.build(),
CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()
.telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
.phoneNumber("1-234-567-8901")
.build())
.build())
.setParameterActions(
CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("some-param")
.value("123.45")
.build(),
CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("another-param")
.value(serializeJson(
"abc"))
.build(),
CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("other-param")
.value(serializeJson(
jsonArray("foo")))
.build())
.conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()
.cases(serializeJson(
jsonArray(
jsonObject(
jsonProperty("condition", "$sys.func.RAND() < 0.5"),
jsonProperty("caseContent", jsonArray(
jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("First case"))
))
))
),
jsonObject(
jsonProperty("additionalCases", jsonObject(
jsonProperty("cases", jsonArray(jsonObject(
jsonProperty("condition", "$sys.func.RAND() < 0.2"),
jsonProperty("caseContent", jsonArray(jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("Nested case"))
))
))
)))
)))
))
)
))
),
jsonObject(
jsonProperty("caseContent", jsonArray(jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("Final case"))
))
))
)))
)
)))
.build())
.build())
.build())
.transitionRoutes(CxFlowTransitionRouteArgs.builder()
.condition("true")
.triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()
.returnPartialResponses(true)
.messages(
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.channel("some-channel")
.text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()
.texts("Some text")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.payload("""
{"some-key": "some-value", "other-key": ["other-value"]}
""")
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()
.metadata("""
{"some-metadata-key": "some-value", "other-metadata-key": 1234}
""")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
.text("some output text")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()
.ssml("""
<speak>Some example <say-as interpret-as="characters">SSML XML</say-as></speak>
""")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()
.metadata("""
{"some-metadata-key": "some-value", "other-metadata-key": 1234}
""")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()
.audioUri("http://example.com/some-audio-file.mp3")
.build())
.build(),
CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()
.telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()
.phoneNumber("1-234-567-8901")
.build())
.build())
.setParameterActions(
CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("some-param")
.value("123.45")
.build(),
CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("another-param")
.value(serializeJson(
"abc"))
.build(),
CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()
.parameter("other-param")
.value(serializeJson(
jsonArray("foo")))
.build())
.conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()
.cases(serializeJson(
jsonArray(
jsonObject(
jsonProperty("condition", "$sys.func.RAND() < 0.5"),
jsonProperty("caseContent", jsonArray(
jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("First case"))
))
))
),
jsonObject(
jsonProperty("additionalCases", jsonObject(
jsonProperty("cases", jsonArray(jsonObject(
jsonProperty("condition", "$sys.func.RAND() < 0.2"),
jsonProperty("caseContent", jsonArray(jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("Nested case"))
))
))
)))
)))
))
)
))
),
jsonObject(
jsonProperty("caseContent", jsonArray(jsonObject(
jsonProperty("message", jsonObject(
jsonProperty("text", jsonObject(
jsonProperty("text", jsonArray("Final case"))
))
))
)))
)
)))
.build())
.build())
.targetFlow(agent.startFlow())
.build())
.build());
}
}

Import

Flow can be imported using any of these accepted formats

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

Constructors

Link copied to clipboard
constructor(description: Output<String>? = null, displayName: Output<String>? = null, eventHandlers: Output<List<CxFlowEventHandlerArgs>>? = null, languageCode: Output<String>? = null, nluSettings: Output<CxFlowNluSettingsArgs>? = null, parent: Output<String>? = null, transitionRouteGroups: Output<List<String>>? = null, transitionRoutes: Output<List<CxFlowTransitionRouteArgs>>? = null)

Properties

Link copied to clipboard
val description: Output<String>? = null

The description of the flow. The maximum length is 500 characters. If exceeded, the request is rejected.

Link copied to clipboard
val displayName: Output<String>? = null

The human-readable name of the flow.

Link copied to clipboard

A flow's event handlers serve two purposes: They are responsible for handling events (e.g. no match, webhook errors) in the flow. They are inherited by every page's Page.event_handlers, which can be used to handle common events regardless of the current page. Event handlers defined in the page have higher priority than those defined in the flow. Unlike transitionRoutes, these handlers are evaluated on a first-match basis. The first one that matches the event get executed, with the rest being ignored. Structure is documented below.

Link copied to clipboard
val languageCode: Output<String>? = null

The language of the following fields in flow: Flow.event_handlers.trigger_fulfillment.messages Flow.event_handlers.trigger_fulfillment.conditional_cases Flow.transition_routes.trigger_fulfillment.messages Flow.transition_routes.trigger_fulfillment.conditional_cases If not specified, the agent's default language is used. Many languages are supported. Note: languages must be enabled in the agent before they can be used.

Link copied to clipboard
val nluSettings: Output<CxFlowNluSettingsArgs>? = null

NLU related settings of the flow. Structure is documented below.

Link copied to clipboard
val parent: Output<String>? = null

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

Link copied to clipboard
val transitionRouteGroups: Output<List<String>>? = null

A flow's transition route group serve two purposes: They are responsible for matching the user's first utterances in the flow. They are inherited by every page's Page.transition_route_groups. Transition route groups defined in the page have higher priority than those defined in the flow. Format:projects//locations//agents//flows//transitionRouteGroups/.

Link copied to clipboard

A flow's transition routes serve two purposes: They are responsible for matching the user's first utterances in the flow. They are inherited by every page's Page.transition_routes and can support use cases such as the user saying "help" or "can I talk to a human?", which can be handled in a common way regardless of the current page. Transition routes defined in the page have higher priority than those defined in the flow. TransitionRoutes are evalauted in the following order: TransitionRoutes with intent specified. TransitionRoutes with only condition specified. TransitionRoutes with intent specified are inherited by pages in the flow. Structure is documented below.

Functions

Link copied to clipboard
open override fun toJava(): CxFlowArgs