Introducing Multi-Capability Skills: Expand Your Device Experience by Combining Smart Home and Custom Skill Models into a Single Skill

Ahmed El Araby May 28, 2020
Smart Home Skills Connected Devices Smart Home News

Today, we are introducing the general availability of Multi-Capability Skills (MCS), a new way to combine the Smart Home Skill and Custom Skill models into a single skill. Now, smart home device developers can publish and maintain a single skill that enables both the smart home and custom features for their devices, simplifying their skill maintenance and creating a more seamless customer experience. With MCS, you can extend the built-in Smart Home skill utterances with your own custom voice interaction model to support nearly any feature, without customers needing to enable and invoke two separate skills. For example, you can leverage the Smart Home model’s built-in support for utterances that turn a device on or off, and have your skill support custom utterances like “Alexa, ask Roomba to vacuum the kitchen”, or “Alexa, ask myskill what can this device do?”, all in the same skill. And with MCS, if you already have a live skill, you can simply update the additional smart home or custom skill model without needing to rebuild from scratch.

A Single, Simplified Development Solution

Multi-capability skills simplify developers’ back-end management. With MCS, you can now publish and maintain a single skill that enables both the smart home skill and custom skill features, allowing your device to more seamlessly support nearly any feature without needing to configure and maintain two separate custom and smart home skills. Until today, smart home device developers needed to choose to either create a Smart Home Skill to leverage a defined set of built-in smart home capabilities, create a Custom Skill to support additional capabilities not included in the Smart Home API, or create both skills. However, choosing a single skill model may not accommodate all features for all devices, and while a developer could build both a custom and smart home skill, it added the complexity of managing two skill experiences and requiring customers to enable multiple skills. For example, smart router owners can use the Smart Home Networking API to allow Alexa to control their internet access, such as “Alexa, turn off the internet.” However, the Alexa home networking API does not support invoking speed tests to measure the internet connection speed. The developer would need to build and maintain a separate custom skill so users could say “Alexa, test my internet speed”. Instead, with MCS developers can now support these features in a single skill.

Create Higher Quality Device Experiences for Your Customers

Simplifying your development process doesn’t mean compromising customer experience. With MCS, customers no longer need to search for or enable multiple skills to access all the features of their Alexa-connected device. MCS removes the friction of customers needing to remember different skill names, allowing customers to access all the expanded smart home features with a single invocation name. For example, by building a multi-capability skill, Dyson enabled its customers to interact more naturally with their Alexa-connected devices. Customers can control their Dyson fans with commands like “Alexa, set the fan speed to 5,” or “Alexa, set Oscillation to wide,” and set night modes and quiet modes in their daily routines, all features previously not available in a single skill experience.

Likewise, with MCS Alexa customers in the US with compatible TP-Link routers can access expanded device features in a single skill. Using pre-built Smart Home API commands, customers can control their internet access across some or all of their household’s connected devices by saying commands like “Alexa, pause internet for Timmy’s iPad.” In addition, TP-Link offers unique voice controls using its custom model, like “Alexa, ask TP-Link to enable gaming mode.” MCS allowed the combination of these device control features in a single skill without customers needing to enable separate skills.

How to Get Started Building Multi-Capability Skills

You can create a multi-capability skill by adding an additional model to a base skill using the Alexa Developer Console, through SMAPI directly - the Alexa Skills Kit Command-Line Interface (ASK CLI) and updating your skill logic to handle requests from those models. You can also update existing skills through the Alexa Developer Console as part of the skill configuration workflow and you can create MCS on your live skill development version, letting you test expanded feature support before submitting for certification. To revert to the original skill state, you can also delete the new model as long as you haven’t submitted the skill.

To create a new MCS with both smart home and custom skill capabilities:

1. Follow the instructions in Create a skill to create your new skill:

Create an MCS skill

2. Click “MODELS”:

Add Models

3. In this example we will add a smart home model to the skill. Note, that in order to add a smart home model to an existing custom skill your new skill must meet the prerequisites of smart home skill development:

Add a smart home model to a custom skill

4. Confirm your changes and save:

Confirm model changes

5. That’s it, your skill is now a Multi-Capability Skill with two models in the selected locale (EN_US). Note that you have to add both models for each locale.

Add models for locales

After adding a model to your skill, you will need to properly handle the functionality of the model in your skill logic in the same way you would previously handle custom or smart home requests in separate skills. For example, if you have an existing skill that uses a smart home model and you would like to update it to use a custom model, you would also need to add skill logic to handle the session requests from the custom interaction model either manually or with one of the Alexa Skill Kit Software Development Kits (SDKs) for Node.js, Java, or Python. This means evaluating the incoming request and responding appropriately to incoming custom session or smart home directive requests.

How to Support State and Change Reporting With MCS

You can support state and change reporting for device endpoints when you upgrade a custom skill to MCS. Your skill needs to follow the guidelines of sending events to Alexa gateway and how to authenticate a customer to Alexa with permissions. To allow existing customers to benefit from the state and change reporting experience, Alexa will run an automated silent process within a week from the upgrade date to send your skill an AcceptGrant directive for each existing customer. You will receive an email with the results.

Supporting Multiple Languages and Locales with MCS

If you plan to support more than one language or locale, your MCS must have an instance of each skill model type for each language. For example, if you intend to support English in both Canada and the US, you will need a custom model and a smart home model for each language. The custom model should at least handle the basic Amazon built-in intents.

Drive Customer Awareness of Your Device’s Expanded Features

When you upgrade an existing smart home skill to MCS by adding a custom model, you should educate your users about the new custom capabilities and how to use them. Let users know how they can interact with the custom model capabilities by adding your device’s newly supported utterances on your skill description page, product website, and other mediums to drive awareness of your enhanced voice experience.

Learn More

You can read more about Multi-Capability Skills in the documentation here, with details on how to upgrade existing skills using the developer console or with the ASK CLI, and additional FAQs.