{"id":13390,"library":"jovo-framework","title":"Jovo Framework (v3)","description":"Jovo Framework (version 3.x, like 3.6.2 specified) is an open-source development framework designed for building cross-platform voice and chat applications. It allows developers to create a single codebase for experiences across various platforms such as Amazon Alexa, Google Assistant, Samsung Bixby, Facebook Messenger, and custom web/mobile apps, as well as hardware like Raspberry Pi. Key differentiators of Jovo v3 included its 'Voice Layer' abstraction, a comprehensive ecosystem with Jovo CLI for project management, a Marketplace for integrations (ASR, NLU, databases, analytics), and tools for efficient local development like Jovo Webhook and Debugger. The framework aimed to provide a unified language model that could be converted into platform-specific interaction models. While the provided version (3.6.2) was stable in its time, the entire Jovo project, including the framework, was archived on April 24, 2025, and is no longer actively maintained. All Jovo packages remain on npm in their current versions, but no further official updates or security patches will be released.","status":"abandoned","version":"3.6.2","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","typescript"],"install":[{"cmd":"npm install jovo-framework","lang":"bash","label":"npm"},{"cmd":"yarn add jovo-framework","lang":"bash","label":"yarn"},{"cmd":"pnpm add jovo-framework","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Jovo v3 primarily used CommonJS require syntax. ESM imports (`import`) were introduced with Jovo v4. For Jovo v3, the App class is usually instantiated to create the main application object.","wrong":"import { App } from 'jovo-framework';","symbol":"App","correct":"const { App } = require('jovo-framework');"},{"note":"The core Jovo object or namespace in v3 was typically imported via CommonJS. It represents the framework context within handlers.","wrong":"import Jovo from 'jovo-framework';","symbol":"Jovo","correct":"const { Jovo } = require('jovo-framework');"},{"note":"Platform integrations like Alexa are separate packages that need to be explicitly required and 'used' by the Jovo `App` instance as plugins in v3.","wrong":"import { Alexa } from 'jovo-framework';","symbol":"Alexa","correct":"const { Alexa } = require('jovo-platform-alexa');"}],"quickstart":{"code":"const { App } = require('jovo-framework');\nconst { Alexa } = require('jovo-platform-alexa');\nconst { GoogleAssistant } = require('jovo-platform-googleassistant');\n\nconst app = new App();\n\n// Integrate platforms like Alexa and Google Assistant\napp.use(\n    new Alexa(),\n    new GoogleAssistant()\n);\n\n// Define the application's conversational logic\napp.setHandler({\n    LAUNCH() {\n        // On launch, redirect to the 'HelloWorldIntent'\n        return this.toIntent('HelloWorldIntent');\n    },\n\n    HelloWorldIntent() {\n        // Ask the user for their name, providing a reprompt message\n        this.ask('Hello World! What\\'s your name?', 'Please tell me your name.');\n    },\n\n    MyNameIsIntent() {\n        // Access the 'name' input value and respond\n        // Note: For certain platforms/slots, 'given-name' might be required (see warnings)\n        const name = this.$inputs.name?.value || 'there';\n        this.tell(`Hey ${name}, nice to meet you!`);\n    }\n});\n\n// In a typical Jovo v3 setup, this app instance would be exported or directly used by a server.\n// For local development, 'jovo run' command handles the server setup.\nmodule.exports.app = app;","lang":"javascript","description":"This quickstart demonstrates a basic Jovo v3 application handling launch, asking for a name, and responding with a personalized greeting, integrating with Alexa and Google Assistant platforms."},"warnings":[{"fix":"If migrating from v3 to v4, consult the Jovo v4 migration guides (if available in archived docs) and redesign your application using the new component-based architecture. For continued v3 development, stick to v3 documentation and tooling.","message":"The Jovo project underwent a major rewrite and architectural shift with the release of Jovo v4. Concepts like 'states' in v3 were replaced by 'components' in v4, and the CLI commands changed from `jovo3 new` to `jovo new` (for v4). Upgrading from v3 to v4 is not a direct path and requires a significant refactoring of the application code.","severity":"breaking","affected_versions":">=3.x <4.0.0"},{"fix":"For new projects, consider alternative conversational AI frameworks. For existing Jovo v3 projects, acknowledge the lack of future support. The community is encouraged to fork repositories for continued development. The Jovo Debugger service was shut down (Nov 2024), but its code was open-sourced for self-hosting or alternatives like ngrok can be used for local testing.","message":"As of April 24, 2025, the entire Jovo project (framework, CLI, documentation, and related services) has been officially archived. This means there will be no further official development, bug fixes, security patches, or maintenance from the original team. All repositories are read-only on GitHub, and the Jovo website has been shut down.","severity":"breaking","affected_versions":">=3.x"},{"fix":"Always verify the exact input key used by the platform or generated by the Jovo Language Model. Debug `this.$inputs` object to see available keys. Common built-in slots like `AMAZON.US_FIRST_NAME` often map to `given-name`.","message":"When accessing input values in Jovo v3 handlers, especially for built-in intents or specific platform slots, the input name might differ from the custom slot name. For example, the `name` slot might be exposed as `this.$inputs['given-name'].value` rather than `this.$inputs.name.value` on some platforms or templates, leading to `undefined` errors.","severity":"gotcha","affected_versions":">=3.x <4.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure that Dialogflow entity names comply with naming conventions (start with a letter, use A-Z, a-z, 0-9, _, -). Verify that input types are correctly configured and mapped in your Jovo project's language model files (`models/*.json`) and platform configurations.","cause":"This error often occurs in Jovo v3 when a Dialogflow entity or slot name is used in an invalid format (e.g., starting with '@') or is not correctly defined in the Jovo Language Model or mapped by the platform integration.","error":"Error: Input type must be defined in inputTypes"},{"fix":"Implement robust checks for input existence (e.g., `this.$inputs.name?.value`) and consider alternative slot names like `this.$inputs['given-name']?.value` for common name inputs. Provide a reprompt or fallback for when input is missing.","cause":"This error indicates that `this.$inputs.name` is undefined when `this.$inputs.name.value` is accessed. This typically happens when the `name` slot was not filled by the user, or the platform provided a different slot name for the input (e.g., `given-name`).","error":"TypeError: Cannot read properties of undefined (reading 'value') at MyNameIsIntent"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"jovo","cli_version":null}