Semantic Skills and the Knowledge Store

Introduction

A tenet of a smart skill is to make the end-user’s life simpler and to provide them with a more enriching experience. This means that the interactions between the user and their smart assistant should always be seamless. The smart assistant should be able to understand the conversation flow and expand upon it based on what the user asks it to do next.

As an example:

A user invokes their smart assistant and says, “I want to fly to New York City.”

The smart assistant should respond to the user and begin querying airlines and travel booking sites for finding flight schedules and other relevant details. It should also ask the user what date, time, and city they want to depart from.

To make this a seamless experience, the smart skill should proactively respond back with suggestions instead of waiting for more invocations from the user. The overall conversation between the user and smart skill should easily flow from one topic to the next without any artificial interruptions. This is achieved through the semantic nature of the smart skill that you can and should build.

A skill built semantically means that it will have a set of actions that consumes and produces entities. It will access the knowledge base where the search layer allows your skill to search the set of actions that control the user intents and entities. This means that your smart skill can execute its function without any user input. The actions can display content in the canvases of the channels they are published to. To build skills like this requires the right environment for getting the job done.

The Knowledge Store (KS) is the place for developers to come register, build, and manage smart skills that will work with a variety of smart assistants. The KS portal consists of the Store and Workspace user interfaces that enable you to explore, try out items, and do all your work in.

What are the benefits of building and managing skills in the KS portal?

Registry

The value for you as a developer is that when you build a skill, you don’t want to create components from scratch. Instead, you want to make your life much easier for yourself by having access to a variety of Microsoft data and to be able to reuse this data in your own skills.

The benefits of registering your own smart skills and APIs in the KS are having access to:

  • Microsoft Graph APIs
These APIs will allow your skill to connect to the data that drives productivity applications like e-mail, calendar, contacts, and documents.
  • Third-party skills
These are the skills available in the Store that can be brought into the Workspace so that you can try them out and reuse them in your own skill flow.
  • Prebuilt Botlets
These botlets encapsulate common functions which most flows require such as selection, location, getting time, and more.
  • Microsoft Ontology Entities (MSO)
These are a set of entity definitions that describe many real-world objects such as airport,people movie, vehicle, and more.
  • Public data with Satori and Personal Knowledge Graph (PKG).

  • Semantic Composition Language (SCL) commands to control skill flow.
These are a set of commands that you can use to control your skill flow.
  • Knowledge
You can acquire knowledge by trying out the tutorials and code samples to learn the syntax of SCL.

Chaining skills to enrich end-user experiences

The KS Workspace is the only environment that allows you to create chainable skills. What this means is that you can compose conversational flows by chaining botlets and service together. To make skills chainable requires that you use actions and entity types.

Actions are the chaining mechanism for botlets and services. They take entity types as inputs and outputs to ensure the semantic nature of the service. Entities are semantic objects that allow botlets and services to be chained together.

The benefits of chaining skills together are:

  • End-users will gain satisfaction with an enriching and smooth conversational flow.
  • End-users will call your skill having a greater probability of continuing the conversation with their smart assistant.

For example, a user invokes a flower ordering skill and orders flowers to be delivered to their mom on Mother’s Day. The flower order gets placed, and then the user continues the conversation with their smart assistant by making a reservation to their mom’s favorite restaurant on Mother’s Day.

Being able to import and register skills developed in other environments

You can import and register skills developed in other environments such as Microsoft Visual Studio, and the BotFramework portal. Bots developed in other environments are written as black boxes.

To make these bots conversational will require that they be imported and registered in the KS. Once these bots are in the KS, you can then do the following things to them:

  • Add discoverability properties
  • Add actions
  • Define entities
  • Chain them together with other skills, APIs, and other Microsoft data
  • Publish them to the Store and to supported channels

Being able to rapidly build and deploy skills to various channels

The KS Workspace is an integrated development environment that enables developers to build, test, and deploy skills to various channels. The Store enables you to explore items and bring them into the Workspace. The Workspace logically places these Store items in the directory tree structure so that you can access them easily without having to physically search for them by their names or IDs.

Below is just a sample of the productivity features that are available the Workspace:

  • Being able to explore a library of Prebuilt Botlets, MSO entities, tutorials, and reuse them in your own conversational flows.
  • Being guided through the steps of creating components that make up skills with interactive wizards.
  • Being able to prototype, run test cases, and debug skills using the internal Chat tool and referencing history, and Log reports.
  • Being able to dynamically create renderers and templates with HTML/CSS to control the presentation on the canvas.
  • Being able to use a code editor to view, write, and edit SCL code.
  • Being able to apply Authentication configurations (i.e., OAuth1 and OAuth2) to skills.
  • Being able to publish skills to designated users and to channels like Cortana.
  • Being able to manage organization and developer permissions.
  • Being able to add discoverability properties to the components with the purpose of enhancing end-user interaction though search and discoverability.
  • Being able to simultaneously search for components and skills in both the Store and Workspace.