I’m working on a Dialogflow CX agent that uses two flows (a primary flow and a secondary flow). The secondary flow has ~13 pages, and its start page defines three routes based on a custom “yes” intent, a custom “no” intent, and the default welcome intent. The primary flow has a few pages and then transitions into the secondary flow.
Issue: When the user is on a deep page of the secondary flow (e.g. a page asking for location) and the user says “yes” (which isn’t relevant to that page’s question), Dialogflow still matches the “yes” intent from the start page of the flow and immediately takes the start-page route. In other words, the global “yes” intent defined on the flow’s start page is catching the user’s utterance even though we’re on a completely different page within the same flow. This causes the conversation to jump back as if the user had just entered the flow.
Official docs confirm this behavior: flow-level routes (i.e. intent routes defined on the flow’s start page) are in scope for all pages of that flowcloud.google.comcloud.google.com. Conversely, page-level routes (routes defined on a non-start page) only fire when that specific page is activecloud.google.com. Because our “yes” intent route is on the start page, Dialogflow considers it a flow-level intent and will match it anywhere in the flow, even on nested pages.
What we’ve tried:
We created separate “yes”/“no” intents for each page to avoid sharing the same intent globally.
We added no-match-default and @sys.any catch-all event handlers on pages.
We tried using flow-level routes and also adjusting different ML thresholds for each flow.
We even tried adding conditions or events to try to isolate intent matching.
Despite this, whenever the “yes” intent exists on the flow’s start page, any utterance matching it triggers that start-page route, no matter which page is active. For example, saying “yes” on the location page immediately jumps back via the start page’s “yes” intent route. This clearly breaks the expected navigation, since an irrelevant “yes” answer shouldn’t cause a flow reset.
Given that Dialogflow CX docs state that flow-level intent routes are global to all pages in the flow cloud.google.com, I suspect we need to define our “yes” handling differently. What is the correct way to scope intent routes in a multi-flow agent so that a “yes” intent on the start page doesn’t override page-specific context? How can I prevent the start-page “yes” intent from matching while the user is on a deeper page in the same flow? Any guidance on proper route scoping or best practices in Dialogflow CX to avoid this issue would be greatly appreciated.