Jovo v4.1: Alexa Conversations, ISP, Slack Plugin, and AWS Lex

Published by Alex Swetlow & Jan König on Dec 17, 2021.

Jovo v4

In November, we launched Jovo v4, which was our most exciting update so far. The Jovo v4.1 now builds on top of that and comes with many improvements and new integrations. Learn more below.

Introduction

v4.1 is all about building on top of the v4 architecture and showing what can be built with it. The most notable features are:

  • Alexa Conversations: Build Alexa Skills that make use of the Alexa Conversations dialogue management engine
  • Alexa ISP: Offer in-skill purchases in your Alexa Skills
  • AWS Lex: Integrate your Jovo apps with Lex speech recognition and natural language understanding
  • Slack Plugin: Send errors and notifications to a Slack channel

v4.1 also comes with many smaller improvements and bugfixes.

Alexa Conversations

We're excited to offer an integration with Alexa Conversations that uses machine learning driven dialogue management.

This way, you can build hybrid Alexa Skills where rules driven interactions can be built with Jovo components and handlers, and then delegate to probabilistic dialogue management for tasks like slot filling:

import { DialogDelegateRequestOutput } from '@jovotech/platform-alexa';
// ...

someHandler() {
  // ...

  return this.$send(DialogDelegateRequestOutput, {
    target: 'AMAZON.Conversations',
    updatedRequest: {
      type: 'Dialog.InputRequest',
      input: {
        name: '<utteranceSetName>',  // Utterance set must use the Invoke APIs dialog act
    }
  });
}

You can find a sample repo here and learn more in the Jovo docs.

Alexa ISP

The integration for Alexa ISP allows you to interact with the Alexa In-Skill Purchasing (ISP) engine.

Here is an example how you can accept a request after a successful purchase using a helper for the @Handle decorator:

import { Handle } from '@jovotech/framework';
import { AlexaHandles, IspType, PurchaseResult } from '@jovotech/platform-alexa';
// ...

@Handle(AlexaHandles.onIsp(IspType.Buy, PurchaseResult.Accepted)) // or ('Buy', 'ACCEPTED')
successfulPurchase() {
  return this.$send({ message: 'Thanks for buying.' });
}

Learn more in the Jovo docs.

AWS Lex

We now offer an integration with AWS Lex, which is a service that can do both automatic speech recognition (ASR) and natural language understanding (NLU).

You can install it like this:

$ npm install @jovotech/slu-lex

Learn more in the Jovo docs.

Slack Plugin

The Slack Plugin allows you to monitor your Jovo apps as it automatically sends errors to a Slack channel.

You can install it like this:

$ npm install @jovotech/plugin-slack

As an upgrade to the v3 version of this plugin, you can even send notifications manually right from your handlers:

this.$slack.sendMessage('Some notification');

Learn more in the Jovo docs.

Getting Started with Jovo

There are several ways how you can get started with Jovo:

Breaking Changes

When you're building for Alexa and run into problems while bundling the code, make sure that the bundle script in your package.json file includes the following:

{
  "scripts": {
    "bundle": "[...] --external:@alexa/*"
  }
}

The reason for this is that esbuild can't resolve vscode, a dependency used in @alexa/acdl, which is used for the Alexa Conversations integration.

Find a sample package.json here.