Clients

Clients are the user facing interfaces that handle the recording of user input and communicate with platform integrations in a Jovo app.

Introduction

Jovo Client and Jovo Core Platform

A client can be seen as the "frontend" (for example a website or a mobile app) of your conversational app built with Jovo that is mainly responsible for the user facing elements of the experience, for example:

  • Recording user input (speech, text, buttons) and sending that data as a request to the Jovo app
  • Receiving a response from the Jovo app and showing/playing the output to the user

Besides integrations with major platforms like Alexa, Google Assistant, or Facebook Messenger, Jovo also enables you to connect your own clients to build fully custom conversational experiences for both voice and chat.

On the Jovo app side, a platform integration needs to handle the client requests and return responses that work for that client. This could be, for example, the Core Platform, Web Platform, or a custom platform implementation.

Learn more in the sections below:

Available Jovo Clients

While you can build your own clients that send Jovo requests and accept responses, you can use existing Jovo Clients already come with the right request and response formats for Jovo platforms, and help with recording input and displaying output:

You can also find examples for Jovo web apps in the Web Starters section on the Jovo Examples page.

Jovo App Integration

To have your Jovo app accept requests from a client and return responses, you need to add a platform integration. The platform should work with the request and response format that the client uses. Usually, you can rely on the following platforms (or build your own platform integration):

  • Core Platform: Generic platform that can be used by any custom client
  • Web Platform: Web specific platform that can be used by web clients

Depending on the type of client, you might also need to add ASR, NLU, and/or TT integrations to the platforms.

Here is an example app.ts of a web app:

import { App } from '@jovotech/framework';
import { NlpjsNlu } from '@jovotech/nlu-nlpjs';
import { WebPlatform } from '@jovotech/platform-web';
import { LangEn } from '@nlpjs/lang-en';
// ...

const app = new App({
  plugins: [
    new WebPlatform({ // Accepts requests from Web Clients
      plugins: [
        new NlpjsNlu({ // Turns raw text into structured input
          languageMap: {
            en: LangEn,
          },
        }),
      ],
    }),
  ],
  // ...
});

The example uses the following plugins:

  • Web Platform accepts the requests and returns appropriate responses that can be used by the Web Clients
  • NLP.js is used as an NLU integration to turn raw text into structured input (intents and entities)

Custom Client Implementation

You can build your own custom client that records user input and displays/plays responses. Any language can be used. The only requirement is that it needs to be able to do the following:

  • Record user input and turn it into a JSON request
  • Send that JSON request to the Jovo backend app
  • Parse the JSON response from Jovo
  • Use response data to show/play a response to the user

We using the Core Platform request & response schema.

Examples

The following examples can be used to learn more about Jovo Clients: