Slide Plugin Data Contract (BBBPlugin marker)
Overview
A standardized way to embed plugin-specific data inside BBB presentation slides. The SDK is responsible for finding, parsing, and routing this data to the correct plugin — each plugin only receives what belongs to it.
Marker format
A slide may contain one or more BBBPlugin blocks anywhere in its text content:
BBBPlugin{"<pluginName>": <payload>, "<otherPlugin>": <payload>}
- The marker is the literal string
BBBPlugin immediately followed by a JSON object
- No whitespace is allowed between
BBBPlugin and {
- Plugin names are the keys; values are arbitrary JSON (object, array, primitive) defined by each plugin
- A slide may contain multiple
BBBPlugin{...} blocks — this is the recommended way for slide authors to keep each plugin's data independent
Examples:
Single plugin, single block:
BBBPlugin{"smart-slide-link": {"links": [{"url": "https://example.com", "label": "Learn more"}]}}
Multiple plugins, separate blocks (preferred for independent authoring):
BBBPlugin{"smart-slide-link": {"links": [{"url": "https://example.com", "label": "Learn more"}]}}
BBBPlugin{"quiz-plugin": {"question": "What is 2+2?", "answers": ["3", "4", "5"]}}
Multiple plugins, single block:
BBBPlugin{"smart-slide-link": {"links": [...]}, "quiz-plugin": {"question": "..."}}
SDK responsibilities
- Scan the full slide text for all
BBBPlugin{...} occurrences
- Parse each block's JSON, skipping any that are malformed (silent failure, no crash)
- Collect all values across all blocks for each plugin name key
- When a plugin requests its data, return only the payload(s) matching its registered name
Collision behavior
If the same plugin name key appears across multiple BBBPlugin blocks on the same slide, the SDK collects all occurrences and returns them as an ordered list to the plugin. Each plugin is responsible for deciding how to handle multiple payloads (merge, take first, take all, etc.).
Slide Plugin Data Contract (
BBBPluginmarker)Overview
A standardized way to embed plugin-specific data inside BBB presentation slides. The SDK is responsible for finding, parsing, and routing this data to the correct plugin — each plugin only receives what belongs to it.
Marker format
A slide may contain one or more
BBBPluginblocks anywhere in its text content:BBBPluginimmediately followed by a JSON objectBBBPluginand{BBBPlugin{...}blocks — this is the recommended way for slide authors to keep each plugin's data independentExamples:
Single plugin, single block:
Multiple plugins, separate blocks (preferred for independent authoring):
Multiple plugins, single block:
SDK responsibilities
BBBPlugin{...}occurrencesCollision behavior
If the same plugin name key appears across multiple
BBBPluginblocks on the same slide, the SDK collects all occurrences and returns them as an ordered list to the plugin. Each plugin is responsible for deciding how to handle multiple payloads (merge, take first, take all, etc.).