Find Utterance Conflicts in Your Model


When you build your model, you may unintentionally create utterances that map to more than one intent. You can use the developer console to find these utterance conflicts and then decide how you want to handle them.

Types of utterance conflicts

Different types of conflicts can occur.

Conflict between custom intents
Occurs when an utterance maps to two or more of your custom intents. Typically this happens when multiple intents have the same sample utterances, or the sample utterances use slot types with duplicate slot values. If you don't fix the conflict, Alexa attempts to resolve the correct intent, but future changes may change the result. If you want to ensure that a given utterance always resolves to a particular intent, change your interaction model to fix the conflict.
Conflict between a built-in intent and custom intent
Occurs when an utterance maps to both your custom intent and one of the standard built-in intents. For example, a custom intent with the utterance "help" conflicts with the built-in AMAZON.HelpIntent. Alexa prioritizes your custom intent over the built-in, so in this example, "help" always resolves to your intent instead of the built-in. If you want the utterance to map to your custom intent rather than the built-in, leave this conflict in place.
Conflict between a built-in intent and multiple custom intents
Occurs when an utterance maps to both a built-in intent, and multiple custom intents. For example, when two custom intents each have the utterance "help", the utterance conflicts with both custom intents and AMAZON.HelpIntent. Alexa ignores the built-in intent and attempts to resolve the correct custom intent. If you want to ensure that the utterance always resolves to a particular custom intent, change your interaction model to fix the conflict.
Conflict between built-in intents extended with custom utterances
Occurs when you have extended the built-in intents with custom utterances, and the extended utterances conflict with another built-in intent. For example, you added the utterance "help" to the AMAZON.StopIntent. This type of conflict does degrade the accuracy of your skill. Remove the conflicting utterance from the built-in intent.

Note that conflicts between utterances that use the AMAZON.SearchQuery or AMAZON.LITERAL slot types are not included.

View the list of conflicts in the developer console

Utterance conflicts are generated after you successfully do a full model build. If any conflicts are detected, the developer console displays an alert. On the Build page, navigate to Custom > Interaction Model > Utterance Conflicts to see the list of conflicts.

The page displays the following columns:

Utterance Conflict
Displays the utterance (including slot values) that maps to more than one intent. Slot values are shown in lowercase, spoken form (for example, the value "4" is shown as "four").
Sample Utterances
Displays the conflicting sample utterances as defined in your interaction model, with slots identified in curly braces ({ }).
Intents
Displays the intents that map to the utterance conflict. Click an intent to edit its utterances.
Current Behavior
Explains what Alexa does if you you do not change your model and remove the conflict.

Change and retest your model as needed

For the conflicts you want to resolve, edit your sample utterances and slot values. For example:

  • Remove or modify the sample utterance on the intent(s) that you do not want returned. For example, you could add additional words to remove any ambiguity. The trade off here is that the utterances may seem less natural, as users may find the original phrases (without the clarifying words) to be more natural to speak.

  • Reconsider functionality that introduces intents with ambiguity. In the book/movie example, it may be better to focus on the skill on just one (books or movies) since so many book and movie titles will naturally conflict. Then you can let users speak more natural utterances such as "tell me about {book}."
  • Remove or edit the duplicate slot values in your custom slot types.
  • Remove or edit utterances that extend the built-in intents.

After making changes, rebuild your model and check the Utterance Conflicts page again.

For cases in which you do decide to leave the conflict and let Alexa choose the correct intent, add the utterance to an annotation set and map it to the intent that is currently returned. Use the NLU evaluation tool to run this annotation set as a regression test in the future, so you can see if the result ever changes.