Cx Page
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:
How-to Guides
Example Usage
Dialogflowcx Page 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.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 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")
.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())
.build());
}
}
Import
Page can be imported using any of these accepted formats
$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}
$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}
Properties
The human-readable name of the page, unique within the agent.
The fulfillment to call when the session is entering the page. Structure is documented below.
Handlers associated with the page to handle events such as webhook errors, no match or no input. Structure is documented below.
The form associated with the page, used for collecting parameters relevant to the page. Structure is documented below.
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.
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/
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.