Sometimes users communicate using incomplete inputs making it harder to interpret what they want. In our system we might expect ambiguous inputs mentioning one of our relevant products, such as coffee or flat white. We would have the same trouble understanding if someone spoke to us this way. Do they want to order? Do they want the calory count? Something else? On this page we will create a flow with a syntax trigger to deal with these kinds of inputs. We will also create a custom order group to hold the flow's trigger and others like it. We will order the group just before the class intents, because we don't want this specialized situation to be second-guessed by machine learning, when we already know that it's ambiguous.
This is the first part of solving the problem of recognizing ambiguity without overtriggering. After working through this how-to, we suggest to have a look at how to Handle Ambiguous Inputs to give a satisfying resolution to the problem.
Before our implementation, we have a conversation that looks something like this:
Bot: I'm sorry but I didn't get that.
Bot: I'm not sure I know what you mean?
Bot: Can you help me understand that?
These kinds of responses do not result in a satisfying user experience. But after we are finished, we will have responses that add more direction to the conversation:
Bot: I understand you would like to talk about coffee. Can you be more specific?
User: what are the coffees you have
Bot: We offer a variety of handcrafted coffee drinks - from espressos to macchiatos to flat whites and more.
In the first part of the exercise we will create an order group called Project - Less Exact for syntax triggers responding to ambiguous inputs. In the second part we will create a flow to respond to ambiguous mentions of the word coffee or any of its synonyms.
Since you've based this solution on the template solution with the Teneo Dialogue Resources, you will notice that you already have a set of order groups in your solution. After we are finished defining our custom order group, the ordering will look like this.
First we will create the group:
Our group was added at the bottom of the ordering, but we want it to be up higher. In these steps we will move our group to a more optimal location in the ordering.
Project - Less Exactinto the name field in the Properties bar to the right.
In this section we will create a flow for partial understanding. It will use a syntax trigger ordered into the Project - Less Exact group that we just created. When we are finished our flow should look like this:
Partial understanding: coffee.
I understand you would like to talk about coffee. Can you be more specific?.
I'm not sure what you wanted to ask about coffee. Could you please help clarify?
You're talking about coffee. Would you please tell me what you wanted exactly?
Respond to single synonym: coffee.
cappuccino coffee espresso
Now we want to make sure our syntax trigger is ordered into the correct order group, and that it only responds to inputs containing no ambiguous words. If a longer input containing the word coffee is seen, we'll prefer the class triggers to handle it, in case there is some significance to the additional words that they know about. For example, if a user says "order espresso" we can expect the class triggers to interpret it properly. But "espresso" as a statement by itself would be something for this flow to respond to.
That's it! Now go ahead and give it a try in try out!
Because you've assigned your syntax trigger to a different order group, there will be a message at the bottom of the tryout panel that says 'A reload of the engine is required to apply your recent changes'. Click Reload now before you start testing.
Bot: I'm not sure what you wanted to ask about coffee. Could you please help clarify?
After completing your flow to respond to partial understanding, we recommend that you visit the how-to Handle Ambiguous Inputs. There you will learn how to refine flows like this to determine exactly what the user meant, then linking to the correct flows.
Was this page helpful?