Use the Name-free Interaction Toolkit in the Developer Console
Use the developer console to update the interaction model
Use the developer console to tell Alexa which skill launch phrases and intent launch phrases you want the customer to be able to say to access your skill more naturally. When you specify a skill launch phrase, you give the customer a new way to open your skill without using the typical invocation pattern, like telling Alexa to open or launch the skill. When you specify an intent launch phrase, you give the customer a way to launch right into a particular intent within your skill, again without using the typical invocation pattern.
Check eligibility
Your skill will be eligible to use the NFI Toolkit if it supports en-* locale, has been previously published as a live skill and has established a history of high quality and customer engagement. To see if your skill is eligible, you can navigate to the Skill Launch Phrases and Intent Launch phrases tab in the Developer Console.
Add your skill launch phrases
In the sidebar, under Invocations, click Skill Launch Phrases.
Add your intent launch phrases
In the sidebar under Invocations, click Intent Launch Phrases.
For each intent that you want to use as an IngressPoint
to launch your skill, click Add Intent, select a custom intent from your interaction model, and then type your sample phrases.
Update the interaction model using the developer console JSON editor
Place the _nameFreeInteraction
container within the interaction model. Identify each intent that you want to make available for name-free interaction.
For a skill launch phrase, which is where an IngressPoint
launches your skill as a modal launch, set the type
field LAUNCH with no name
field. Use the format RAW_TEXT and set the value
to your skill launch sample utterance. The sample utterance must not contain slots and should be a complete phrase. In your skill, specify up to five skill launch phrases.
For an intent launch phrase, which is where an IngressPoint
launches into a specific intent for your skill, set the type
field to INTENT
and the name
field to the existing intent name, as defined in language model for the skill. Use the format RAW_TEXT and set the value
to your intent launch sample utterance. The sample utterance must not contain slots and should be a complete phrase. For each IngressPoint
, specify up to five intent launch phrases.
In the developer console, on the JSON Editor tab, edit the model to include the new _nameFreeInteraction container.
The following shows an example interaction model with the _nameFreeInteraction container.
Example
{
"interactionModel": {
"languageModel": {},
"_nameFreeInteraction": {}
}
}
Sample
{
"interactionModel": {
"languageModel": {
"invocationName": "XYZ 101.8",
"intents": [
{
"name": "PlayGenreIntent",
"samples": [
"play jazz music",
"play classical music",
"jazz",
"classical",
]
}
]
},
"_nameFreeInteraction": {
"ingressPoints": [
{
"type": "LAUNCH",
"sampleUtterances": [
{
"format": "RAW_TEXT",
"value": "Launch Seattle's XYZ radio"
},
{
"format": "RAW_TEXT",
"value": "Launch Seattle's 101.8"
}
]
},
{
"type": "INTENT",
"name": "PlayGenreIntent",
"sampleUtterances": [
{
"format": "RAW_TEXT",
"value": "play jazz music"
},
{
"format": "RAW_TEXT",
"value": "play classical music"
}
]
}
]
}
}
}
When you're ready, build the interaction model with name-free interaction container by clicking Save Model and then clicking Build Model.
Testing name-free interaction in isolation (en-* only)
After building a skill, consider testing your skill in isolation with name-free utterances to help you understand the user experience when Alexa invokes your skill by using name-free interaction. Keep in mind that testing in isolation isn't required for certification of your skill.
Testing in isolation means the simulation tool considers only the intents in the development-stage interaction model. In isolation, Alexa routes the name-free utterance to your skill. The testing doesn't reflect actual routing decisions made by Alexa across all published skills and experiences. You might observe different outcomes in production because Alexa considers a variety of signals when routing name-free requests.
Typically, you invoke skills using the following method that includes the invocation name:
User: Ask Joe's horoscopes for the Cancer horoscope for today
Alexa: Here is the horoscope for Cancer
With name-free interaction, you can start a simulation where you instead use name-free utterances for the participating intents, as shown in the following example:
To use the simulation tool with name-free interaction, from the Simulation Type box, select Name Free Interaction.
If your testing doesn't get a result that maps to an intent, make sure there are enough sample utterances for your intent and that you follow the guidelines for name-free utterances found in the Do's and Don'ts section. Make sure to have at least 10 utterances for your intent. You can also try to adjust FallbackIntent
sensitivity.
If the simulation maps to the wrong intent, check for utterance conflicts, or update samples and slots to the correct intent and remove conflicting samples in other intents that conflict with the sample utterances.
To use the simulation feature, make sure to enable the skill. If you don't enable the skill, the error Skill is currently disabled in <development/live> stage. occurs.
Certification and name-free interaction model training
Once you're satisfied with the changes to your interaction model, submit your skill for publishing. Amazon reviews the interaction model updates to certify the skill. You don't need to take any additional action to deploy the updated skill.
Upon publication, the name-free interaction model begins learning how to route traffic to your skill and intents. With the recurring training of Alexa machine learning and artificial intelligence, it might take up to eight weeks for Alexa to route name-free interaction utterances to your skills.
Troubleshooting
The following list shows common reasons for the interaction model build to fail:
- The
nameFreeInteraction
container isn't placed in the correct location within the interaction model.- Place the
nameFreeInteractionContainer
within the interaction model and parallel to the language model as shown in the following example.{ "interactionModel": { "languageModel": {...}, "_nameFreeInteraction": {...} } }
- Make sure that each supported locale has its own
nameFreeInteractionContainer
. - Slots aren't supported in the
nameFreeInteraction
container sample phrases.
- Place the
- Intent name is incorrect.
- Configuration specifies more than five skill launch phrases.
- Configuration specifies more than five intent launch phrases per intent.
- Intent launch phrase isn't part of the language model for the intent.
- Intent isn't included in the language model.
- Name-free interaction container doesn't have an
IngressPoint
field. - Name-free interaction container has an
IngressPoint
field but the list of ingress points is empty. IngressPoint
contains a null entry.IngressPoint
name is empty or blank.IngressPoint
doesn't have a valid type defined.IngressPoint
is duplicated.IngressPoint
isn't supported, for example, built-in intents aren't supported.- Name-free interaction isn't valid, with error code
InvalidNameFreeInteractionSchema
.- Sample utterances must use unicode characters, spaces, periods for abbreviations, underscores, possessive apostrophes, and hyphens.
- There must not be duplicate entries of sample utterances for the ingress points.
Related topics
- Understand Name-free Interactions
- Implement
CanFulfillIntentRequest
for Name-free Interaction. - Using the Name-free Interaction Toolkit in CLI
- Using the Name-free Interaction Toolkit in SMAPI
Last updated: Mar 19, 2024