Actions are the interfaces for botlets and services to allow them to be chained together and called. They take entity types as input and output parameters to ensure the semantic nature of the flow.


Assets consists of botlets, services, entities, and renderers.


Botlets are the building blocks of a flow. They are reusable and can be chained together to create a more complex user experience.

Botlet Vault

This is a secured database.


A canvas is where Cortana renders the visual elements such as prompt message, Bing maps, and cards. A canvas in the Store is the display type.


A card is the content that is returned by a skill and is displayed on Cortana’s canvas.


Channels are how users interact with botlets. In the Store, a channel is the user end point of a renderer that is to be displayed.

Supported channels include:

  • Cortana


A component can be a service or botlet (i.e., all the items in the asset).


Entities are semantic objects that allow botlets and services to be chained together. You can reuse existing entity types or define your own.


A flow can be made of multiple botlets, which are smaller pieces of functionality that can be combined to form one user experience. Flows are composed in the Workspace where they are encapsulated into botlets.

Hero Card

A Hero card is a multipurpose card. It primarily hosts a single large image, a button, and a “tap action” along with text content that is displayed on the card.


Intents are the intentions or desired actions conveyed through the utterances (sentences) the user says to the smart device (i.e., Cortana). Intents match user requests with the actions that should be taken by your skill. An intent also represents a task or action the user wants to perform. Its purpose or goal is expressed in a user’s input, such as booking a flight, paying a bill, or finding a news article.


An invocation occurs when a user triggers a Cortana skill using an invocation phrase. For example, “Hey Cortana, ask Northwind Photo where my order is”.

There are 3 types of invocations which you can support in your application:

Full Intent This occurs when a user invokes your skill using a full invocation phrase which include entities.

For example, “Hey Cortana, ask Northwind Photo to order two copies of my photos”.

In this case “two” would be a number entity which the backend service which powers your Cortana skill would use with the intent information to make the order.

Partial Intent This occurs when a user invokes your skill using an invocation phrase which doesn’t contain any entity information.

For example, “Hey Cortana, ask Northwind Photo for where my order is”.

In this case the intent is known, but there is no entity information needed.

No Intent This is when a user invokes your skill using nothing by the invocation name.

For example, “Hey Cortana, start Northwind Photo”.

Invocation Name

The invocation name is an essential part of the natural language phrase or utterance that invokes your Cortana skill, and is typically the name of the provider (app, service, or bot) for your skill.

Invocation Phrase

Users invoke skills by speaking an invocation phrase to Cortana. The invocation phrase includes an invocation name, which uniquely identifies the skill to invoke. For example, if a skill’s invocation name is “Northwind Photo”, a proper invocation phrase could include “Ask Northwind Photo to...” or “Tell Northwind Photo that...”.

Knowledge Graph

Botlets themselves are part of the knowledge graph, as are entitles like a movie, a song, a person or whatever you create. Developers can therefore easily combine flows and entities together to create knowledge-driven experiences.

Language Model

A statistical model used to understand a language. In skills, these are used to understand intents and extract entities from utterances.

Language Understanding Intelligence Service (LUIS)

Language Understanding Intelligent Service (LUIS) enables developers to build smart applications that can understand human language and react accordingly to user requests. LUIS uses the power of machine learning to solve the difficult problem of extracting meaning from natural language input, so that your application doesn’t have to.


An organization is a group of people working on a common set of botlets, skills, and entities.

Parent ID

A parent ID is a base entity type that provides common properties of an entity.

Prebuilt Botlets

Prebuilt botlets can be found in the Store. They encapsulate flows that are frequently used by developers.


A Renderer is a component that contains all the configurations that define how to present an entity in a botlet on a channel. This presentation can be in the form of a card, HTML content, voice, or a combination of these depending on the channel’s capabilities. While a renderer needs to be associated with an entity, you can define many renderers for a given entity, each with its own unique renderer ID.


Samples in the Store give you the opportunity to learn the details of the Semantic Conversation Language.

Semantic Composition Language (SCL)

Semantic Composition Language (SCL) consists of simple commands to handle botlet prompts and responses. SCL invokes other botlets to send/receive semantic data and allow third-party authorization. A semantic language for botlet development is where the flow reads in a linear fashion and which can easily be used to ‘glue’ together existing botlets.


Services are the interface between botlets and the outside world. Services can connect to external APIs, code, and bring them into flows.


A skill is created when a botlet is published to Cortana. This makes it available to Cortana users on various devices (e.g., laptop, speakers, etc.).


A slot is a string that represents a semantic component of a user query, as understood by a Language Understanding (LU) model. For more details about the concepts of LU, see: Language Understanding (LU).


A user is looking for ingredients for a recipe and asks, “What do I need to make bread pudding?”

Within the recipe domain, the string will be tagged:

“get_ingredients recipe what will I need to make <recipe_name> bread pudding </recipe_name>?”

  • The intent is get_ingredients (i.e., the thing the user wants to do).
  • The slot identified in the message is recipe_name.

Swagger File

The OpenAPI specification (formerly known as the Swagger Specification) is a powerful definition format to describe RESTful APIs. The specification creates a RESTful interface for easily developing and consuming an API by effectively mapping all the resources and operations associated with it. It’s easy-to-learn, language agnostic, and both human and machine readable.

Template - Single vs. List


In the Store, a template as single will be used when only one entity object is rendered.


In the Store, a template as a list will be used when multiple entities are rendered.


Utterance is the word or phrase spoke by the user to Cortana.