Jovo v1.0 Migration Guide

By Kaan Kilic (@KnKlc8), published on February 15th, 2018, last modified on February 16th, 2018 at 6:46 pm
Tags: Amazon Alexa, Google Assistant, News, Tutorials

We just updated Jovo to v1.0, see the announcement here. As this is our biggest update ever with lots of improvements, it was necessary to make some changes that might break existing apps (only if you update the jovo-framework package to v1.0!).

In this blogpost, we will show you how to update your old voice applications to Jovo 1.0.


Jovo is an open-source development framework for building voice apps that work on both Amazon Alexa and Google Assistant with only one code base. Take a look at the Jovo Framework Docs or our Voice App Courses to learn more.



Jovo v1.0 is finally here! With our biggest update ever, we completely reworked the project structure, fixed some of the pain points and made development with the Jovo Framework a lot more comfortable. To make it easier for you to adapt to the changes, we want to show you how to transfer your existing projects to the new version.

Here’s everything that needs to be changed:


Step 1: New Jovo Project Structure

With the new Jovo Language Model, we offer a better way for you to maintain language models for both Amazon Alexa and Dialogflow (for Google Assistant) locally. For this, we restructured how a Jovo App looks like, as you can see above. Take a look at the sample voice app here.

index.js and app.js

The Server Configuration and App Logic are now split into two files, which comes with benefits:

  • You don’t have to switch between two files for Webhook and AWS Lambda deployment, everthing is done in the new index.js
  • Clear distinction between app content (app.js), language model files, and configuring the servers
  • Better integration options for e.g. i18n directly in the app folder. See the i18n docs for more info.

To convert your existing Jovo project to this new structure, it’s probably best to create a new project and paste the right elements into the app.js file.

Create a new Jovo Project with the Jovo CLI

To get started, please update to the newest version of the Jovo CLI. Take a look here for the full installation guide and feature list of the CLI.

To create a new Jovo project, use the following command:

This will create a new directory called “yourDirectory” and clone the Jovo sample voice app, which has the same folder structure you can see in the illustration above.

You can also specify the language you want to have your app in (with the default locale being --locale en-US):

Let’s now¬†transfer our existing app configuration and app logic into the newly created app.js file. As mentioned in the introduction, we need to do some¬†tweaks to deal with some architectural changes of the Jovo Framework.


Step 2: Update the Configuration and Logic

With the new project structure, the application’s logic was moved to a new file (index.js is now only responsible for the execution of your code):

This is how the app.js looks like now:

By looking at the document, there are a few things that are different compared to the old structure:

New App Configuration

The changes you want to make to the app’s configuration are now added at the beginning of app.js using the constructor:

You can find more information about that here.

New setHandler Method

The app logic is now happening inside a method that looks like this:

this instead of app

Some big structural changes that make the Jovo Framework more robust require to use this instead of the global app object inside the handlers

To keep the this context in your helper functions, you can do something like this:

New Way to Access Input

Although the way to access inputs¬†in the parameters where convenient, they came with limitations: They only returned the value of an input as a String, leaving out important information like synonyms. This is why we’re now returning an object, with the value being one of its elements:


Those are all the changes you need to do to your app configuration and logic. You can now either proceed to run your app and test if everything works, or make use of the new powerful Jovo CLI to convert your existing language model into a Jovo Language Model.



Step 3: Import an Existing Language Model

This has been the most requested feature for Jovo: a consolidated language model that can be used for both platforms Alexa and Dialogflow. The Language Model lives inside the models folder and is used with the CLI to convert platform specific files into a platforms folder:

Import an Existing Alexa Skill Project

For existing projects, you can use import the necessary files into the platforms folder. This functionality is currently limited to Alexa.

To import an Alexa Skill you have to first set up the ASK CLI and then use the Jovo CLI:

After that, the platforms folder should look like this:

You can find out more about the platforms folder here.

After this, you can either keep doing updates to the platform files (and use the jovo deploy command to upload them), or convert them to a Jovo Language Model.

Converting an Alexa Interaction Model to Jovo

Jovo also offers the ability to convert the existing Alexa Interaction Model to the Jovo Language Model.

For this, use the following command:

This will update the files in the models folder, which you can then update and use to export into both Alexa and Dialogflow language models.

Init and Build

As a next step, initialize the platforms, you want to deploy your project to:

This will create a file app.json:

Learn more about the app.json file here. This file will be used to later grab the right information that is needed to create the platform specific language model files from the Jovo models folder.

Next step:

This will create all the files you need. Finished!


Step 4: Run the Application

You can now run the application with the following command:

This will return the following, and reveal another powerful addition to the Jovo tools:

The Jovo Webhook

To make it even easier for you to develop locally,¬†you don’t need to rely on ngrok anymore to create a tunnel to your local development server.

The Jovo Webhook creates a unique link that you can use as an endpoint on both Amazon Alexa and Dialogflow for testing and debugging.

Happy coding!


Any questions? Please let us know in the comments below ūüĎá.
You can also reach us on Twitter or Slack.


Stay up to date

Get news and free voice develpment resources in your inbox. No spam.

No spam. You can find previous editions here.


Any specific questions? Just drop them below. Alternatively, you can find other channels to reach us here. Thank you!