Clients
Clients are the user facing interfaces that handle the recording of user input and communicate with platform integrations in a Jovo app.
Introduction
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:
- Web Client: A vanilla JS client that can be used in websites and web apps.
- Web Client (Vue2): A Vue2 wrapper of the Web Client.
- Web Client (Vue3): A Vue3 wrapper of the Web Client.
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: