Skip to main content

@zoovu/exd-api

The @zoovu/exd-api package helps you easily build extensions for Experience Designer.

  • It simplifies interaction with Zoovu assistants by wrapping the lower-level @zoovu/runner-browser-api.
  • It provides a single entry point called zoovuFacade. It groups the most useful methods from the full Zoovu assistant API into a simpler, easier-to-use structure.

Why use this package

The @zoovu/exd-api makes it easier to work with assistants by:

  • grouping related functionality
  • reducing the amount of setup code you need
  • improving type safety and developer experience in TypeScript

You can still access the full API underneath if needed, but for most use cases, zoovuFacade will cover everything you need.

Installation

The package is usually added automatically when you generate a new extension. You’ll see it in your package.json file:

"dependencies": {
"@zoovu/exd-api": "0.6.0"
}

INFO: Make sure you are using Node.js version 20.

Use @zoovu/exd-api in an extension

If you’re using a standard extension setup, just extend the ZoovuFacadeMixin in your Vue component:

import { ZoovuFacadeMixin } from "@zoovu/exd-api";
import { advisorViewContext } from "@zoovu/runner-browser-api";

@Component({})
export default class MyComponent extends Mixins(ZoovuFacadeMixin) {
@Inject()
private context: advisorViewContext;

goToNextQuestionSimplified() {
this.zoovuFacade.navigation.next();
}

goToNextQuestionDirect() {
this.context.advisor.advisorNavigation.next();
}
}

Core components

Move between steps in the assistant flow.

this.zoovuFacade.navigation.next(); // go to next question
this.zoovuFacade.navigation.back(); // go to previous question

Questions and answers

Work with questions and their answers.

const question = zoovuApi.firstQuestionFromCurrentPage;
const specificQuestion = zoovuApi.useQuestion(questionId);
const specificAnswer = zoovuApi.useAnswer(answerId);

specificAnswer.select(); // select an answer

Products

Access product data that the assistant returns.

const products = zoovuApi.products;
const recommendedProducts = products.perfectlyMatchedProducts;

Comparison

Add or remove products from comparison.

const comparison = zoovuApi.comparison;
comparison.addProduct(productId);
comparison.removeProduct(productId);

Events

Listen to assistant events and handle them in your component.

const events = zoovuApi.events;

const { unsubscribe } = events.subscribe("steps-navigation", (event) => {
// handle the event
});

unsubscribe(); // stop listening when not needed

Localization

Access information about the current locale and currency.

const locale = this.zoovuFacade.localization.locale;
const currencyCode = this.zoovuFacade.localization.currencyCode;

Waiting for initialization

In some cases, you might need to wait until the assistant is fully loaded before accessing its data.

async mounted() {
await this.zoovuFacade.waitForAdvisorInitialization();
// safe to use the API now
}