The skill concept

Skills are the most important building block on Furhat and refer to the applications that are run on Furhat. A skill typically handles one social situation (one domain), but could also have several different use-cases (several domains). One example of a one domain skill can be a quiz. An example of a multi domain skill is a receptionist, with functionality to for example greet a visitor, answer questions and make reservations.

Running skills

To run a skill, go to the web interface of your Furhat (or dev machine) and click on your skill's button to start it.

Generate skills

To generate a skill, use the furhat create command in command line or go to the Create new skill link on the skills page. There are several templates available:

Note: Currently, when creating a skill from the web interface, you will get a nullpointer exception if you restart the mode. To get around this error you have to restart the furhat server. On a Furhat robot, this is done using the top right menu in web interface. If you are using the SDK and development server, close down the server and start it up again.

Template Description
presentation For skills without speech input, this template is feasible.
speech_interaction For skills with speech interaction, this is a basic starting template.
questions_and_answers A more advanced speech interaction template for question answering skills.

You can also add different flags to the create command to scaffold additional functionality:

Flag Shorthand Use for Description
--localizable -l Skills that should work in several languages Adds localization functionality to the skill, through a localizer class and resource files.
--displayable -d Skills that should come with a graphical interface Adds a display class, creates a web endpoint for the skill and creates a stub for web resources.
--queryable -q Skills that should be queryable from other skills Adds the queryable interface and provides a stub for a query method - accessed through the action.skill.query event

Building skills

For help on how to build skills, please check out the tutorials. The first one is available here: How to make a presentation.

Configuring skill: the skill properties file

Every skill comes with a skill.properties file containing some basic properties that your skills needs in order to run. You can add custom properties to this file as you develop your skill, with the benefit of being able to edit the properties through the web interface.

Default properties in properties file:

Key Description
Name Used to identify the skill
Language Used to tell the recognizer what language the recognizer should listen for
Recognizer Used to determine if an open or a grammar based context should be used. An open grammar context can listen for any phrase in a set language while a grammar based recognizer only listens to phrases defined in grammar files. For more on open vs. grammar based recognizers, see IrisTK tutorial 3.