Create a custom order group

Users sometimes 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 calorie 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.

In our experience, users do this for a variety of reasons. A likely reason is that the user believes the bot to be either very primitive or a search engine and that communication through keywords is the best way to get to the right answers.

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 which looks something like this:

User: coffee
Bot: I'm sorry but I didn't get that.

User: espresso
Bot: I'm not sure I know what you mean?

These kinds of responses do not result in a satisfying user experience. But after we're finished, we'll have responses that add more direction to the conversation:

User: coffee
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.

Create a custom order group

Since you've based this solution on the template solution with the Teneo Dialogue Resources, you'll notice that you already have a set of order groups in your solution. After we're finished defining our custom order group, the ordering will look like this.
Custom order group

Create the order group

First we'll create the order group:

  1. Open your solution and navigate to the home tab.
  2. Click Intent Triggers in the Ordering section of the Ribbon to open trigger ordering.
  3. In the Intent Trigger Ordering window, navigate to the Groups tab.
  4. In the Groups tab click Add to add a new group (it appears at the bottom of the list of groups).

Adjust the group ordering

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.

  1. Select the new order group (it will have a default name like Order Group 1) and while selected, copy this name Project - Low into the name field in the Properties bar to the right.
  2. With the order group still selected, click the Up arrow in the Ribbon to move the group to just above the group of TDR - Low.
  3. Save and close the ordering window.

Create a flow for partial understanding

In this section we'll create a flow for partial understanding. It will use a syntax trigger ordered into the Project - Low group which we just created. When finished, our flow should look like this:
Partial understanding

Create a new flow and add a Match Requirement for a Language Object

  1. Create a new flow and call it Partial understanding: Coffee.
  2. Name the trigger User mentioned Coffee and add the following positive examples:
  3. Add a 'Language Object' match requirement with the following condition:COFFEE.NN.SYN.
  4. In the Triggering section, select the Order Group we created in the steps above: Project - Low. This will change its ordering.

Populate the Output node and Save

  1. Select the output node and give it a name like Respond to single synonym: Coffee.
  2. Select the Output node and paste the response I understand you would like to talk about coffee. Can you be more specific?.
  3. Add a few more output variations to make your bot look smarter:
    • 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?
  4. Hit the 'Save' button.

Try it out!

That's it! Now go ahead and give it a try in Try Out!

Because you've assigned your 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.

User: coffee
Bot: I understand you would like to talk about coffee. Can you be more specific?

What's next?

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?