aims to create a development framework that allows you to write code and deliver to voice platforms (at this time, Alexa and Google Assistant). Again, it’s like the voice ecosystem is taking the same path as app development, trying to find ways around maintaining multiple code bases. There are still a handful of steps with each voice platform that you can’t avoid, but you can write the core logic of your application in JavaScript. Jovo once multiple For this post, I’ve created a simple application that tells the user what the latest article on is. my site Install Jovo Jovo is an NPM module, so install with: npm install -g jovo-cli This command installs a command line utility that will help you create and manage projects, including a helpful project creation command: Then, install the other dependencies that your Jovo project will need: cd <project_name>npm install You can start the application with or , but, as all voice platforms work via web-connected applications, you need to expose your application to the web through a tool such as and grab the secure version of the URL it generates. node index.js jovo run ngrok Connecting Jovo to Alexa To get your application code to work with Alexa, you need to take two initial steps (but there will be others depending on its complexity). 1. Add Intents Intents tell Alexa what to do with specific default and custom actions and custom phrases users can use to trigger them. If you don’t specify anything for default actions, it will use the platform defaults. Add the following to the intents section of the of your skill: Alexa creator {"languageModel": {"intents": [{"name": "AMAZON.CancelIntent","samples": []},{"name": "AMAZON.HelpIntent","samples": []},{"name": "AMAZON.PauseIntent","samples": []},{"name": "AMAZON.ResumeIntent","samples": []},{"name": "AMAZON.StopIntent","samples": []},{"name": "LatestPostIntent","samples": ["latest post","latest news","latest article","latest blog"],"slots": []}],"invocationName": "<your_invocation>"}} As you can see above, I’ve only changed the custom and added a handful of alternative "utterances" that can trigger that intent. This intent relates directly to the application code, but I’ll return to that later. LatestPostIntent 2. Add Webhook URL In the tab, change to and add your exposed URL from above, appended with : Configuration Service Endpoint Type HTTPS /webhook Google Instructions 1. Add Intents Setting up Google Assistant is more complex, with less provided for you by default. For speed, in this article, I recommend you import the intents I created via the option. You can see the specifics of the below, including the trigger phrases: Settings > Export and Import LatestPostIntent 2. Add Webhook URL In the tab, enable and add your exposed URL from above, appended with : Fulfillment Webhook /webhook The Code Thanks to Jovo, the code for this application is fairly simple and requires a small update to at the bottom of the file: index.js const handlers = { 'LAUNCH': function() {app.toIntent('LatestPostIntent');}, 'LatestPostIntent': function() {parser.parseURL(' , function(err, parsed) {console.log(parsed.feed.title);parsed.feed.entries.slice(1).forEach(function(entry) {console.log(entry.title + ':' + entry.link);app.tell(entry.title);})});},}; https://gregariousmammal.com/feed.xml' The method allows you to jump into a new intent within the same request — in this case, the . The logic for the intent is JavaScript, using to parse the RSS feed of the site and return one result that the framework speaks. toIntent LatestPostIntent rss-parser Here’s me trying the application on my Echo. And in the Google Assistant simulator: Making It Even Easier If you’ve read so far, it may seem like Jovo doesn’t save you as much time as you hoped, and this is a valid comment. This is partially due to the need to visit the different developer portals to connect the code to the platform but also because Jovo is a new platform. I spoke with the team behind the platform, and they are due to release a new version soon. This version will reduce the need to create your interaction models on each platform. Instead, you can create one file locally, and new CLI commands will push these to the platforms for you. It will also introduce a slightly different file structure from outlined above and plans to add internationalization of strings soon. If you’re interested in developing voice interfaces for multiple platforms, but want to keep your code as manageable as possible, experiment with the platform as it stands, and keep an eye out for those changes. sign up to the Jovo Slack Originally published at dzone.com .