Skill Definition
Overview
Each Skill has a skill-definition.json
which defines its particular settings. This page describes all supported properties for a Skill Definition.
Skills can be managed from the Manage Skills section in DDNA Studio.
Properties
name (required)
string
The name of the Skill as shown in DDNA Studio.
summary (required)
string
A short one-sentence summary of the Skill.
description
string
A detailed multi-line description of the Skill.
category
string [ 'Featured' | 'ExternalPlatform' | null ]
Determines which visual category the Skill will be in when displayed in DDNA Studio. Only applies to Skills with config.skillType: 'BASE_CORPUS'
.
status
string [ 'ACTIVE' | 'DEPRECATED' | 'DELETED' ]
Determines availability of a skill.
- ACTIVE: Skill can be added to projects
- DEPRECATED: Skill cannot be added to projects, but can continue to be used if already configured
- DELETED: Skill cannot be added to projects, and projects using a deleted skill will encounter errors. Important: Consequently, skills should only be deleted where they have a Usage Count of 0.
endpointInitialize
string
URL of an endpoint. Called once when project is deployed.
endpointSession
string
URL of an endpoint. Called once at the start of every each user session.
endpointExecute (required)
string
URL of an endpoint. Main endpoint, called for each conversation turn for SKILL_API service providers. Websocket endpoint for SKILL_ASYNC_API services providers.
endpointEndProject
string
URL of an endpoint. Called after a project is deleted. Used to clean up any project-related data.
serviceProvider (required)
string ['WATSON', 'DIALOGFLOW','DIALOGFLOWCX', 'SKILL_API', 'SKILL_ASYNC_API', 'LUIS']
Used to indicate what platform the Skill has been built on.
- WATSON: IBM Classic Watson Assistant
- DIALOGFLOW: Google Dialogflow ES
- DIALOGFLOWCX: Google Dialogflow CX
- SKILL_API: Skills REST API
- SKILL_ASYNC_API: Skills Async API
- LUIS: Azure Language Understanding, will be deprecated in 2023.
config.skillType
string ['DEFAULT' | 'BASE_CORPUS' | 'PRE_PROCESS' | 'POST_PROCESS' | 'PRE_POST_PROCESS']
Type of Skill.
- DEFAULT: This skill is meant to operate alongside other skills
- BASE_CORPUS: This skill acts as a base conversation and can be used standalone or with other skills
- PRE_PROCESS: This skill will pre-process user inputs before to any other skill
- POST_PROCESS: This skill will post-process skill responses before they are spoken
- PRE_POST_PROCESS: This skill combines the effects of PRE_PROCESS and POST_PROCESS skills
- INTENT_MATCHER: This skill is used for intent matching to determine routing to other skills (not supported yet)
config.matchType
string ['INTENT' | 'CUSTOM' | 'FALLBACK']
Indicates when user input will be routed to the skill
- INTENT: Match against one of the intents specified in the intents field
- CUSTOM: Match against a phrase specified in the launchPhrases field
- FALLBACK: Match against a fallback response from another preceding skill
config
SkillConfig object
A set of configuration settings which determine how your Skill can be used by a DDNA Studio project, and what project-specific config data should be captured for use by the Skill at runtime.
config.configMeta
array of MetaField
A list of metafields to configure a particular instance of a skill.
Configurations gathered here will be merged with privateConfig
and passed to the skill.
Configurations with the same name
will overwrite the privateConfig
with the same name
property, see Config Overwrite.
- Text Config
- Text Area Config
- Dropdown Config
- Password Config
{
"label": "My Text",
"name": "my_text",
"type": "TEXT",
"placeholder": "",
"defaultValue": "default text",
"required": false,
"validationWarning": "Can only contain letters",
"validationRegex": "^[a-zA-Z]+$",
"toolTipText": "**Supports Markdown** - Basic text _styling_ and [links](http://google.com)"
}
{
"label": "My Text Area",
"name": "my_text_area",
"type": "TEXT_AREA",
"placeholder": "",
"defaultValue": "default text",
"required": false,
"validationWarning": "Can only contain letters",
"validationRegex": "^[a-zA-Z]+$",
"toolTipText": "**Supports Markdown** - Basic text _styling_ and [links](http://google.com)"
}
{
"label": "My Dropdown",
"name": "my_dropdown",
"type": "SELECT",
"options": [
{
"text": "None",
"value": ""
},
{
"text": "My Option 1",
"value": "option_1"
}
],
"required": false,
"toolTipText": "**Supports Markdown** - Basic text _styling_ and [links](http://google.com)"
}
{
"label": "My Password",
"name": "my_password"
"type": "PASSWORD",
"hint": "Hint for this config",
"placeholder": "Enter Password Here",
"required": true,
"validationWarning": "Must be between 1 - 10 characters.",
"validationMin": 1,
"validationMax": 10,
"toolTipText": "**Supports Markdown** - Basic text _styling_ and [links](http://google.com)"
}
config.privateConfig
array of NameValuePair objects
Private configuration supplied here will be passed to skills (e.g. API keys, API endpoints).
The value
property supports any valid JSON type (string, number, array, object etc.).
Private configurations with the same name
will be overwritten by configurations in configMeta
with the same name
property, see Config Overwrite.
- Private Config with string value
- Private Config with array value
{
"name": "my_private_string",
"value": "string"
}
{
"name": "my_private_array",
"value": ["string"]
}
config overwrite
When the Skill is registered, privateConfig
and configMeta
will be merged and in order to resolve conflicting name
properties between them, configMeta
will take precedence over privateConfig
.
configMeta: {
"name": "my_string",
"label": "My String",
"type": "TEXT"
},
privateConfig: {
"name": "my_string",
"value": "string"
}
config.privacyAndTerms
array of PrivacyAndTerms
A collection of links relevant to your Skill that should be displayed alongside the Skill description on the Skill Detail page in DDNA Studio. You may use these to display links to privacy policies and terms and conditions for your Skill and any third-party services used by the Skill.
These can be a collection of links relevant to your Skill that should be displayed alongside the Skill description on the Skill Detail page in DDNA Studio.
- PrivacyAndTerms: A privacy policy or a terms of use would be associated with a organization. Each organization can have one to many links.
{
"links": [
{
"name": "My Privacy Policy",
"value": "https://www.my-organization.com/privacy-policy/"
},
{
"name": "My Terms and Conditions",
"value": "https://www.my-organization.com/terms/"
}
],
"organization": "My Organization"
}