Dialogflow CX Issue with no-match when parameter is defined on a page

Hi,

I am pretty new to Dialogflow CX.
I wonder whether you can help me to understand an issue I am seeing with no-match event handlers when creating a parameter on a page.

I have a page where I have a fulfillment (question) and a parameter to capture the user input.
The a couple of intent routes and if nothing matches then there are two event-handlers (sys-no-match-1 and sys-no-match-2):

hockea_0-1710421077078.png

I have figured out during testing that I have to put ina a wrong keyword (i.e. word that doesn't match) twice in order to trigger sys.no-match-1:

hockea_2-1710421294533.png

 

What is wrong in this configuration ?

If I don't create that parameter on this page, the logic will work but I have to capture the last utterance of the user as I have to call a webhook later in the flow with this information.

 

1 21 512
21 REPLIES 21

Hi,

What I would recommend to use the system entity type called @sys.any . can you try that and see how that goes?

Best,

Xavi

Hi Xavi,

where to use the @sys.any entity txpe ?

As you can see from my screenshot I was already using the @sys.any for the parameter on the page (called: reason_mieter), but as said that didn't really work out.

regards,
Andy

Are you sure you have given the messages in both the nomatch plz check and also is there any internal conditions you have add in nomatch 1

Hi @piyush_garg,

what do you mean with "you have given the messages in both the nomatch"? Which messages?

I didn't add any internal conditions in no-match-1

 

 

I think he does not know how the platform works and just dropped that comment.

Hi @xavidop ,
you didn't really specify what you meant with using the @sys.any type earlier in this conversation.
Do you have a solution/explanation for the behavior I am seeing?

oh shoot, I did not see it! you are right, you are already using it.

so I was re-reading the issue again but I did not understand what the issue exactly is. can you please re-phrase or clarify it? so I can provide better guidance!

Best,

Xavi

As I said in my first post:
When I use that parameter (reason_mieter of type @sys.any) I have to type in the answer on the question twice to get any further (match one of the intent routes or hit the no-match-1).
When I don't use the parameter on the page (same fulfillment, same routes and event handlers) it all works. But I need to store the reason as I have to call a webhook with this information later on.


Gotcha!

do you have in your intent the same parameter? if so, the parameter id (reason_mieter) should have the same name so you do not have to enter it twice.

I don't have any parameter in the intent.
I figured out that if I specify a parameter of type @sys.any in the intent, that this intent route will be hit regardless of what I put in as a response (meaning the response that I give doesn't match any of the training phrases).

But this shouldn't be the case as I want to hit the sys.no-match-1 in that case

can you please double-check that when you type for the first time "New York", the parameter is set in the simulator?

Yes, the parameter is set in the simulator (after I type in New York first time)
But flow doesn't progress with sys.no-match-1 logic

so sys.no-match-1 is triggered ONLY when there is not a route triggered. so, when you type first "New york", the parameter is filled. THEN, the no match is being triggered cause on the new page, there is not a route for the second "New York", does this make sense?

Check this image to understand it properly:

xavidop_0-1710943977420.png

 

Not sure if I understand.
When I type "New York" then the paramter is filled, but the flow stays on the same page (so far I do understand the image), but only the second "New York" triggers the no-match-1 (or if I type in a word at this stage that matches an intent it would go the intent route).

The question for me still is:
How can parameter be filled and route decisison (either intent route or no-match (depending on input) can be made with one step only?

Hi,

you have to create a condition like this to transition to a different page:

xavidop_0-1711020793716.png

 

I tried this, but doesn't work.

What I have now is a first page that takes the parameter and has the route with the $page.params.status = "FINAL" that goes to second page:

hockea_0-1711025429984.png

And in second page I have all the intents and no-match routes:

hockea_1-1711025474672.png

When I test this I can put in keyword on first page, the parameter is filled  and then the simulator will go to the second page.

But on second page nothing happens until I type in keyword (or a no-match word) again.

So the question is: How can I force that input from first page is processed on second page ?

 

so I think the problem here is to understand how Dialogflow CX works. what you have now works, you can add the parameter on the next page just in case it is not caught in the intent detection on the first page BUT, when you transition to another page, you will need to say something to the users to let them know what to say next. This is the nature of Dialogflow CX. more a conversation desgin issue I would say.

Xavi

Well, the idea with the second page only came up because you said to add a route with $page.params.status = "FINAL" check to transition to a new page.
Of course I don't want to ask something again on a second page.

Ideally I want to have it all on one page:

  • Fulfillment
  • Parameter (to take customer response)
  • Intent routes
  • No-match event handlers

That is how I started (see beginning of my conversation), but it is not working.
Only when remove the parameter from the page the dialogflow behaves with correct logic (but then I have not started customer input).

What I am trying to achieve seems to be a pretty simple use case, but until now I don't have a solution (and nobody could really tell me one).

 

Have you tried adding the no-match to the parameter directly?

1. Open the page and click on the parameter

Daniel_N_0-1711029389347.png

2. Add event handlers for the parameter. Such as no-match. 

Daniel_N_1-1711029423722.png

Hi @Daniel_N ,

yes I tried that already, but it wouldn't hit the reprompt event handler.

Furthermore I want a no-match against the intent routes I have defined, not a no-match against the type of parameter I have created.

The weakness here in Dialogflow is that the first reply on the page is taken as an parameter and not evaluated for intent match against the route.

The second response is the first no-match against the route.

If you need to collect the response as a parameter to check against some other set of criteria, then you should have it separate from the intent check.