Updating

Updating firmware on Furhat

To update firmware on a Furhat:

  • Go to server menu
  • Select Update firmware
  • If a new version is available, you can automatically update it here.
  • You can also upload a firmware manually downloaded here

Updating SDK

To update the SDK:

  • Pull the latest changes using git pull
  • See the changelog for detailed changes

Breaking changes

Update to: Firmware > 2017-01-01 or Furhat SDK > 0.2.0

When updating to the latest firmware version for Furhat, there may be a compatibility issues with Skills. Skills made prior to December of 2016 will require a small change to work with the latest firmware. This process is simple and in this guide we will go through the necessary steps.

Step 1: Download skills from Furhat

To update the Skill, we will need to adjust a file that is not available in the 'web interface' view. Therefore use go to 'server > packages' and download the Skills you need to update.

You do not need to import these Skills into an IDE, as we will only change a few lines in one file.

Step 2: Change the init() function in $YourSkillName$Skill.java file

  • First step is to locate the init() method in the $YourSkillName$Skill.java file.
  • Remove SkillHandler handler parameter from the init method.
  • If you find any other methods that use the SkillHandler as a parameter, treat them similarly.

Before:

public void init(SkillHandler handler) throws Exception {
  // Code that remains unchanged
  // ...
}

After:

public void init() throws Exception {
  SkillHandler handler = getSkillHandler();
  // Code that remains unchanged
  // ...
}

Step 3: Change the query() function in $YourSkillName$Skill.java file

  • In your skill file, see if you have a query() method.

If you don't want your skill to be queryable from other skills, remove the query method (if you have it).

If you want your skill to be queryable from other skills:

  1. import iristk.furhat.Queryable and iristk.furhat.QueryResponse
  2. Implement the Queryable interface by adding the implements Queryable
  3. Implement the query() method

See below example:

Before:

// $YourSkillName$Skill.java
// ...

import iristk.furhat.skill.Response;

// ...

public class $YourSkillName$Skill extends Skill {

  // ...
  @Override
  public Response query(String text){
    // Your implementation
  }

}

After:

// $YourSkillName$Skill.java
// ...

import iristk.furhat.Queryable;
import iristk.furhat.QueryResponse;

// ...

public class $YourSkillName$Skill extends Skill implements Queryable {

  // ...
    @Override
    public QueryResponse query(String queryText) {
        // Your implementation
    }

}

Step 4: Reupload the skills to your furhat

You can now zip the contents again and then re-upload this version of your Skill to your Furhat. For instructions on this, check how to package and upload a skill.