Manage Skills in Alexa for Residential

Enable or disable skills for a unit

You can use the Skill Management API to enable or disable skills for a property's units. You can enable skills that are published in the Alexa Skills Store. In addition, you can use the Alexa Skills Kit to create and publish property-specific skills.

To enable a skill for a unit, call the enable a skill. API.

To enable a skill for multiple units, call the enable a skill for multiple units API.

To disable a skill for a unit, call the disable a skill API.

After you've enabled a skill in a unit, your property's end users can use it on endpoints installed in the unit.

Use account linking and partitions in skill enablements

A skill enablement is a record that a skill is enabled for a unit. When you enable a skill, you can link a skill provider account to the skill for that enablement. For example, suppose a unit has smart light bulbs, and you (as a smart home skill provider) have a smart home skill that controls them. When you enable your skill for the unit, you can link your skill provider account to the skill in the API call. .

How to use delegated account linking

Delegated account linking creates an association between your skill provider account and your Amazon Business account. After you set it up, your account credentials are delegated for skill enablement API calls you make for your skill, so that you don't need to provide account details in each call.

To set up delegated account linking

  1. Log in to the Alexa Skills Store using your Amazon Business credentials. These credentials must be the same ones you used to register with Alexa for Residential as a skill provider.

  2. In the Alexa Skills Store, search for your skill and enable it for your Amazon Business account. This links your skill provider account to the skill.
  3. In your app, enable the skill for a unit. You skill provider account is automatically linked to the skill enablement.

How to use partitions to limit the scope of a smart home skill

By using partitions, you can limit the scope of a smart home skill in a unit to just the smart devices installed in that unit. A partition is a logical grouping of Alexa resources, such as devices, endpoints, or skills. Alexa for Residential , partitions often represent units or groups of units.

The partition name is a string containing a single partition name or a comma-separated list of partition names. A partition name is a single nonempty string that can contain alphanumeric characters and hyphens but not whitespace.

For example, "Home-101" and "Home101, Home202" are valid partition names. The following aren't valid values: "" (empty list), "Home101, ,Home202" (not properly comma-separated), "Home 101" (contains whitespace).

For example, suppose a property has five homes: Home101, Home102, Home103, Home104, and Home105. To enable a smart home skill that supports partition in Home101, when enabling the skill for Home101, you should specify the partition as follows.

   "persistentUnitId": "amzn1.alexa.unit.[unique-value-here]",
   "stage": "live",
   "partitionName": "Home101",

For Alexa skills that support partitions, you can include the partitionName parameter in the skill enablement API call to specify which partitions in a property the skill is being enabled for. Using the partitionName field allows you to partition your property into individual units, so that the skill can operate within the scope of that partition.

Specifying the same partitionName in the skill enablement in a unit and in the smart home skill service for Alexa devices installed in that unit ensures that when the end user invokes a smart home skill from an Alexa device in this unit, the skill recognizes only the smart home devices in that unit. See the scope object documentation to understand how the partition appears in the payload.

To use partitions in skill enablements

  1. Set up delegated account linking to link your skill provider account with your Amazon Business account.
  2. Set up the smart devices for each unit using your skill provider service. In each call, pass the partition name for the unit.
  3. Enable your skill for each unit. In each call, pass the same partitionName for the unit that you used when you set up the unit's smart devices in your skill provider service.

Build and publish a property skill

A property skill is a hidden skill that isn't available in the Alexa Skill Store. To enable a property skill, a user must have the home administrator (A4R.HomeAdmin) role and have the skill ID for the skill.

Hidden skills are similar to public skills in many ways. Like public skills, hidden skills are developed using the Alexa Skills Kit. They can use account linking to map users to a backend system, and they must go through the same certification process as other custom skills.

You build a property skill as you would a public skill, except that after you publish the skill, you immediately mark it as hidden. You accomplish this by completing the following steps.

To build and publish a property skill

  1. Build your skill by using the ASK developer console. If you are new to skill development, see Getting Started with ASK.
  2. Submit your skill for certification following the steps in Alexa Skills Certification Requirements. After the certification review, you'll receive an email at the address associated with your Amazon developer account.
  3. After your skill is certified and published, you must mark it as hidden as soon as possible to make sure it's not discoverable in the Alexa Skills Store. For details, see Hide or remove a skill (skill suppression).

After you've hidden your property skill, your administrator users will need the skill ID to enable or disable it.

To get the skill ID for your property skill

  1. Open your skill in the developer console.
  2. Find the skill in the list and click View Skill ID below the skill name. Copy the ID from the popup.

Provide a unit-specific response to a skill request

Skill requests now include the unit ID associated with the endpoint that the end user is speaking to. Your skill can use the unit ID to provide a unit-specific response. For details, see the unit field of the System object in the Request and Response JSON Reference.