Jargon's content model

Structured Responses
A “response” contains the content that your application requests. Each response has one or more variants. When multiple variants are eligible for a request the Jargon content server will pick one at random. You can also apply conditions to variants, which support having a variant for a specific channel, platform, or other custom conditions. Each variant can have multiple components: Text, Speech, Image, Buttons, Cards, Custom elements, etc. [Note for custom elements the data is in JSON format, not YAML.] Many editors contain tools for using Jargon items such as snippets or variables.

Alternatively, you can use custom actions for ultimate flexibility and control.

Standalone Resources
Standalone resources -- strings and objects -- are for content that your application might need outside of a structured response. Strings are pieces of content that can be inserted into a response or accessed by the application directly. Objects provide a way for an application to access structured data. They can serve a number of purposes, such as storing Alexa Directives, but aren't something that every application needs.

Interaction/Domain Model and Training Data
Aside from content (responses), Jargon also hosts the other app components needed to make your app work, such as intents, slots, and training data (Rasa only). With the exception of responses, changes to these components requires retraining and redeploying the app. Here is a diagram of how these components work together:

interaction domain model and training data

Authoring content

Within the Studio, the left navigation bar serves as the library for all of the content and app components you manage in Jargon. Here you can add, delete, rename, or select content to edit. “Jargon Content” in the left navigation bar refers to content that your application can fetch at runtime. The remaining components (intents, forms, entities, stories, etc.) can be managed in Jargon and used to build and train your interaction or domain model. These components can be periodically exported to your app. They are not fetched at runtime.

Managing content in Jargon

Jargon can be used to author, deliver, and optimize content in a single user interface. By “content,” we mean the responses that your app sends back to the user. Managing content in Jargon provides the following benefits:

  • Responses, which can contain multiple variants, can be organized and edited by multiple team members and fetched directly by your app at runtime.
  • Teams can scale the production of content as it gains complexity. For example, while a response might start off with only a simple speech component, over time, other components and variants may be added to enrich the response. With Jargon, the app code does not need to be changed to make these additions.
  • At runtime, Jargon handles the heavy lifting of assembling the appropriate response components, which reduces app development time.

Authoring Responses
To edit a response, first select the desired response from the left navigation bar (here you can add more response components or create additional variants). Select the response component (such as “Text”) that you want to edit. The appropriate editor will display. Many editors contain tools for using items such as snippets, variables, strings, or media assets. Jargon runs content validation and will alert you of any errors in your content. For example, an error message will appear as a red bar at the bottom and a squiggly red line under misspelled variable names, or a snippet that hasn’t been created yet. You can click on the “Content Validation” tab under the editor to read the error message.

Managing other app elements in Jargon

Jargon also lets you manage all Rasa elements (not just content), including intents, stories, and the other interaction and domain model elements. While managing these elements in Jargon is optional, there are significant benefits for your team:

  • Removes the need to manage Rasa components in multiple places across files.
  • “Code” and content stay in sync in a single integrated collaborative space. Jargon helps you find and fix any broken or missing connections between the two.
  • Jargon helps you make the right connections through autosuggestions and validation.

Authoring interaction and domain model components
Jargon provides editors and validation for all Rasa components and their connections, including intents, slots, and stories. Note that currently the actual code for custom actions still needs to be managed outside of Jargon.