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 -- 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:
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.
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.