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
- View the list of conflicts in the developer console
- Change and retest your model as needed
- Related topics
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.