Release Note - API Level 2

Huge evolutions

Robotic configuration becomes useless

A robotic configuration is no longer needed to deploy/install/run apks.

QiChat completely redesigned

The first version of QiChat Player has been deprecated. The new QiChat language has been completely redesigned and fully integrated.

A specific focus life cycle for the robot

Robot focus life cycle has been detached from Android’s Activity lifecycle.

For further details, see: Mastering Focus & Robot lifecycle.

Chaining operations

Use an improved mechanism to chain Futures.


Say say = ...;
Future<Void> sayFuture = say.async().run();
Future<Void> returnedOperation = sayFuture.andThenCompose(new Function<Void, Future<Void>>() {
    public Future<Void> execute(Void ignore) throws Throwable {
        Animate animate = ...;
        Future<Void> animateFuture = animate.async().run();
        return animateFuture;

For more details, see Chaining operations.

Porting projects

If you have created project using the API Level 1 and you want to port them:

Step Action

Make sure your project does no longer use former robotic configuration. To do so:

Open your project and choose File > New > Robot Application.

Check and rewrite the content of your topics according to the new QiChat language.

For further details see: QiChat Language.

Rename your animations: the extension is now .qianim instead of .anim.

Review all your code: so many things have changed…

Follow the Getting Started chapter in order to discover the new syntax then amend your former code accordingly.


Events raised on variable update in QiChat

Updating the value of a variable $myVar (from QiChat or other sources) now raises an event that can be caught using e:myVar.

For further details, see: Robot events: e:eventName and Variable: $.


The Discuss action now provides methods to know the possible utterances for different scopes (global, currently focused topic, and local scope).

Listening status

The listening property gives the current listening status for the Discuss action.

GoToBookmark cancellation

Cancelling the asynchronous execution of Discuss.goToBookmarkedOutputUtterance() and goToBookmarkedOutputUtteranceIfBookmarkIsReachable() will now stop the corresponding robot utterance.

^pick, ^concatenate and pronunciation

The QiChat function ^concatenate and ^pick, as well as the rule type pronunciation were added.

User defined functions

Users can now define functions in QiChat.

For further details, see def: and ^user_defined_function.


Add SharedTopics service to retrieve shared android topics and inject it in Discuss.