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.
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.
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.
|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:
|--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|
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:
|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.|