Implement the Built-in Intents
The Alexa Skills Kit provides a library of built-in intents. These are intents for common actions that you can choose to implement in your custom skill without providing any sample utterances.
- Overview of the Built-in Intents
- Implement a Built-in Intent
- Extend a Built-in Intent with Sample Utterances
- Migrate to the Built-in Intents
- Related Topics
Overview of the Built-in Intents
For example, the built-in
AMAZON.HelpIntent is automatically mapped to common ways of requesting help from a skill. If you choose to use this intent, users can invoke your skill, say something like "help", and the Alexa service sends your service an
IntentRequest for the
AMAZON.HelpIntent. Your service can handle this intent in a way appropriate for your skill.
Similarly, the built-in intent
AMAZON.SearchAction<object@WeatherForecast> is automatically mapped to common ways of asking for the weather. If you implement this intent, users can say "what's the weather in seattle" and the Alexa service sends your service an
IntentRequest for
AMAZON.SearchAction<object@WeatherForecast>, with a slot value for the city "Seattle."
Using the built-in intents is useful for several reasons:
- You do not need to spend the time writing sample utterances for the intent.
- Users can use common, consistent phrases to access the intent across skills. This makes it easier for users to work with your skill.
- Your skill gets the benefit of any future updates to the Alexa service that improve recognition and utterances for these intents.
The built-in intent library is organized in general categories:
- The standard intents provide basic functionality such as help, stop, cancel, and other actions. See Standard Built-in Intents.
- (Developer Preview): The rest of the built-in intents are organized into categories, such as weather, local search, books and many more. These intents automatically include slots and use a particular naming structure described in Understanding the Structure of the Built-in Intent Library.
For a complete reference to all available built in intents, see Built-in Intent Library.
Implement a Built-in Intent
To implement a built-in intent, you need to add the intent to your intent schema, then add handling for the intent to your code.
In the developer console, you can search for built-in intents on the Build page. Navigate to Custom > Interaction Model > Intents, add a new intent, and select the Use an existing intent from Alexa's built-in library option.
When specifying the name of the intent, be sure to include the
AMAZON namespace. For example, the following schema includes two custom intents and three built-in intents. You might use this set of built-ins in a skill that retrieves weather forecasts:
AMAZON.SearchAction<object@WeatherForecast>
AMAZON.CancelIntent
AMAZON.HelpIntent
AMAZON.StopIntent
In this example, the intent schema includes the above four built-in intents, as well as a custom intent called
WeatherOnThisDay.
{ "interactionModel": { "languageModel": { "invocationName": "my weather", "intents": [ { "name": "AMAZON.CancelIntent", "samples": [] }, { "name": "AMAZON.HelpIntent", "samples": [] }, { "name": "AMAZON.StopIntent", "samples": [] }, { "name": "AMAZON.SearchAction<object@WeatherForecast>", "samples": [] }, { "name": "WeatherOnThisDay", "slots": [ { "name": "PastYear", "type": "AMAZON.FOUR_DIGIT_NUMBER" } ], "samples": [ "what was the weather on this date in {PastYear}", "what was the weather in {PastYear}" ] } ], "types": [] } } }
See Interaction Model Schema for the complete intent schema compatible with the developer console and the Skill Management API.
Add handling for each built-in intent to your code, the same way you handle custom intents. Be sure to include a handler for every intent in your schema. Examples of intent handlers:
If you are using the Alexa Skills Kit SDK for Node.js, you could code intent handlers like this:
var handlers = { 'WeatherOnThisDay': function () { // Code for the custom WeatherOnThisDay goes here. }, 'AMAZON.SearchAction<object@WeatherForecast>': function () { // Handler for the AMAZON.SearchAction<object@WeatherForecast> built-in intent. }, 'AMAZON.HelpIntent': function () { // Handler for built-in HelpIntent }, 'AMAZON.StopIntent': function () { // Handler for the built-in StopIntent }, 'AMAZON.CancelIntent': function () { // Handler for the built-in CancelIntent } };
You could create handlers like this in Java:
@Override public SpeechletResponse onIntent(final IntentRequest request, final Session session) throws SpeechletException { log.info("onIntent requestId={}, sessionId={}", request.getRequestId(), session.getSessionId()); Intent intent = request.getIntent(); String intentName = intent.getName(); if ("WeatherOnThisDay".equals(intentName)) { // Handler for WeatherOnThisDay } else if ("AMAZON.SearchAction<object@WeatherForecast>".equals(intentName)){ // Handler for the built-in intent AMAZON.SearchAction<object@WeatherForecast> } else if ("AMAZON.HelpIntent".equals(intentName)) { // Handler for the built-in help intent goes here } else if ("AMAZON.StopIntent".equals(intentName)) { // Handler for the built-in stop intent goes here. } else if ("AMAZON.CancelIntent".equals(intentName)) { // Handler for the built-in cancel intent goes here. } else { throw new SpeechletException("Invalid Intent"); } }
See Handling Requests Sent by Alexa for more about how to handle requests from the Alexa service.?" If you include an intent such as
AMAZON.SearchAction<object@WeatherForecast>, users can say phrases like "what's the weather forecast," so your intent handler should provide weather information.
See Built-in Intent Library to get the intended purpose and example utterances for the built-in intents.
When Not Using the Built-in Intents
You must implement
AMAZON.StopIntent. Implementing the other built-in intents is recommended, but optional. If you do not include a built-in intent in your intent schema, the Alexa service never sends that intent to your service, even if users say the phrases that would normally trigger the intent.
You can still map those phrases to your own custom intents in your sample utterances. For instance, you could create the intent
MyHelpIntent and write sample utterances such as:
help help me what can I ask you
In this case, your service receives an
IntentRequest for
MyHelpIntent, even though these phrases overlap with the built-in
AMAZON.HelpIntent.
This is not recommended, as the built-in intents typically provide better coverage than the sample utterances you would write manually. Instead, consider using the built-in intent, but extend it with additional skill-specific utterances.
Extend a Built-in Intent with Sample Utterances
You can extend the standard built-in intents by providing additional sample utterances. This is useful for invoking the intents with skill-specific utterances.
To extend a built-in intent in developer console, add the built-in intent to your model, then provide custom sample utterances the same way you would for your custom intents:
- From the left-hand sidebar, click Add next to Custom > Interaction Model > Intents.
- Select the Use an existing intent from Alexa's built-in library option.
- Find the built-in intent to add and click Add Intent.
- Once you've added the intent, select it in the left-hand navigation, then enter the Sample Utterances.
The JSON for an extended intent looks like this:
{ "name": "AMAZON.HelpIntent", "slots": [], "samples": [ "how do i order a taxi", "help me order a taxi" ] }
See Interaction Model Schema for the complete intent schema compatible with the developer console and the Skill Management API.
In this example, the
AMAZON.HelpIntent is invoked whenever the user:
- Invokes your skill and says any of the standard requests for help ("help," "help me," and so on).
- Invokes your skill and says one of these custom phrases ("help me order a taxi," "how do I order a taxi?").
Migrate to the Built-in Intents
Earlier versions of the Alexa Skills Kit did not provide these built-in intents, so you may have implemented your own versions of cancel, stop or help. Although these continue to work, you may want to migrate to the built-in intents to take advantage of improvements to the utterances over time.
To migrate your skill, do the following:
- Update your intent schema to replace the name of your custom intent with the name of the built-in intent.
- Remove the sample utterances for your custom intent, although you can keep any skill-specific utterances as noted in Extend a Built-in Intent with Sample Utterances.
- Update the intent handlers in your code with the name of the built-in intent.
Related Topics
See all of the available built-in intents: Built-in Intent Library
Learn about the naming structure for the built-in intents: Understanding the Structure of the Built-in Intent Library
Learn more about intents and the interaction model:
Learn about coding the service for your skill: Handling Requests Sent by Alexa