May 30, 2018Leo Ohannesian
Editor's note: We updated this blog on March 1, 2019 to better reflect the benefit that customers and developers are receiving during the beta.
You can help Alexa determine when to direct customer requests to your US English skills by adding support for the CanFulfillIntentRequest (beta), which launched today. Using CanFulfillIntentRequest, your skill provides information about its ability to fulfill a given customer request at runtime. Alexa combines this information with a machine-learning model to choose the right skill to use when a customer makes a request without an invocation name. As a result, customers find the right skill faster, using the search terms they say most naturally.
As we described in a recent blog post about making interaction with Alexa more natural, Alexa uses machine learning to help customers automatically discover, enable, and launch skills using natural phrases and requests. When a customer speaks to Alexa without invoking a skill by name, Alexa chooses the best skill to call based on the machine-learning model.
CanFulfillIntentRequest allows Alexa to augment the machine-learning model with information provided by your skill. With CanFulfillIntentRequest, Alexa can query multiple skills on their ability to fulfill the request given the customer intent and slot values. For example, if a customer asks, “Alexa, where is the best surfing today near Santa Barbara?” Alexa can use CanFulfillIntentRequest to ask surfing skills whether they can understand and fulfill the request. A surfing skill with a database of California beaches might be able to both understand and fulfill the request, while one with a database of Hawaiian beaches might only be able to understand it. Based on these responses, Alexa would invoke the skill with the database of California beaches for the customer. Note that Alexa will only send CanFulfillIntentRequest to skills that are likely to be able to handle the associated intent.
You can read the quick-start guide to learn how to add support for the CanFulfillIntentRequest interface to your skill. First, you will need to use the Alexa Developer Console or the Alexa Skills Kit Command Line Interface (CLI) to update your skill manifest to indicate that your skill supports the new CAN_FULFILL_INTENT_REQUEST interface. Then you will need to add logic in your skill service to respond properly to CanFulfillIntentRequest directives. Learn more in the technical documentation for Name-Free Interaction for Alexa Skills. You should also test your skill and ensure that CanFulfillIntentRequest is supported for all intents handled by your skill.