About the ASK SDK Controls Framework (Beta)

The ASK SDK Controls framework builds on the ASK SDK for Node.js, offering a scalable solution for creating large, multi-turn skills in code with reusable components called controls.

Use the ASK SDK Controls framework to build upon intent-based skill development in code. If you want to use an AI-based dialog manager, you can also add Alexa Conversations to your skill.

Why use the ASK SDK Controls framework

Implementing dialog in an Alexa skill can be difficult when a skill must be ready for any answer or follow-up from the user. For example, you might need to handle the following dialog behaviors:

  • Tracking questions and answers, including simple yes or no questions and multi-step sequences.
  • Resolving confusion, for example when a user says "fifteen," but Alexa hears "fifty."
  • Reacting appropriately when a user says things out of order, or when the user takes the initiative and directs the conversation in a new direction.
  • Maintaining the flow as the topic of conversation changes.
  • Ensuring Alexa asks a question and moves the conversation forward on every dialog turn.

The features and capabilities of the ASK SDK Controls framework provide an extensible and maintainable way to accomplish these dialog behaviors.

Mixed-initiative support

When a user issues directives to Alexa, the interaction style is user initiative. When a user answers Alexa's questions, the interaction style is system initiative. Skills that provide only one interaction style are relatively simple to implement, but might not provide natural interactions. In a natural interaction, users expect Alexa to guide the dialog and also might want to take control and change the topic. The interaction style of mixed initiative can be difficult to implement as a skill grows in size and complexity.

The ASK SDK Controls framework provides features that help enable development of mixed-initiative dialog.

Multimodal features

Some Alexa devices have a screen that provides a surface for interaction. Building a skill that communicates with the user using both voice and screen can be challenging as the user might use only voice, only the screen, or move freely between the two.

The ASK SDK Controls framework provides features that support the development of multimodal experiences.

Reusable dialog components

When building mixed-initiative and multimodal skills, it can be difficult to factor out interaction-related components to reuse between projects.

The ASK SDK Controls framework supports the construction of skills from independent components that you can share between projects and people.

Interaction model features

A common challenge when building skills is the need to create an interaction model that can interpret a wide range of utterances without introducing conflicts. When you create reusable dialog components, you also need to design intents and slots shared by components, even if different people or teams author the components.

The ASK SDK Controls framework provides a solution for consistent interaction model design and programmatic generation of the interaction model.

Create a new skill with the ASK SDK Controls framework

You can use the developer console to create a new Alexa-hosted skill with the ASK SDK Controls framework. For details, see Create an Alexa-hosted skill in the Console. Choose one of the provided ASK SDK Controls Framework templates such as Fruit Shop Skill.

If you use the ASK CLI, you can also create a new skill with the ASK SDK Controls framework. For details, see Create a new skill project. When prompted to select a template, choose one of the provided ASK SDK Controls Framework templates such as Fruit Shop Skill.

Add ASK SDK Controls framework to an existing skill

You can have the ASK SDK Controls framework handle all or part of the dialog management for an existing skill by using library controls. Library controls are pre-built controls for common interactions such as presenting a list of options. For details on using library controls, see Your first skill using controls.

If a library control does not currently exist for your needs, you can create your own custom control using the ASK SDK Controls framework. For details, see Developing with Controls.