- Description: Lists all available commands in the chat.
- Usage: Type
/listin the chat. - Restrictions: None.
- Description: Demotes the user who issued the command to the viewer role.
- Usage: Type
/demotein the chat as a moderator. - Restrictions: Only users with moderator privileges can execute this command.
- Description: Demotes all users in the meeting to the viewer role, except for the user who issued the command.
- Usage: Type
/demoteAllin the chat as a moderator. The command will change the role of all other users to viewers. - Restrictions: Only users with moderator privileges can execute this command. The command will not affect the sender.
- Description: Promotes all users in the meeting to the moderator role, except for the user who issued the command.
- Usage: Type
/promoteAllin the chat as a moderator. The command will change the role of all other users to moderators. - Restrictions: Only users with moderator privileges can execute this command. The command will not affect the sender.
- Description: Sends a message repeatedly, either a specified number of times or at regular intervals.
- Usage:
- For multiple sends:
/spam "message with spaces" [times](default 1, max 100) - For interval spam:
/spam "message" interval <ms>
- For multiple sends:
- Restrictions: None. Use
/stopSpamto stop interval spam.
- Description: Stops all active spam intervals started by the
/spamcommand. - Usage: Type
/stopSpamin the chat. - Restrictions: None.
- Description: Displays detailed debug information about the current session, including user details, browser environment, timing information, and storage data.
- Usage: Type
/debugin the chat. - Restrictions: None.
- Description: Makes HTTP requests to the provided BigBlueButton join URL to obtain valid session tokens, then establishes real GraphQL WebSocket connections to simulate multiple users joining a BigBlueButton meeting for load testing purposes.
- Usage:
- With quotes (recommended for URLs with special characters):
/join "<join-url>" <number_of_users> [-v] - Without quotes (for simple URLs):
/join <join-url> <number_of_users> [-v] - Verbose mode: Add
-vflag to receive detailed progress messages in the chat
- With quotes (recommended for URLs with special characters):
- Restrictions: Number of users must be greater than 1. Requires valid BigBlueButton join URL that returns session tokens upon request.
- Description: Terminates all active WebSocket connections created by the
/joincommand. - Usage: Type
/stopJoinin the chat. - Restrictions: None.
This is an experimental internal plugin developed by mconf for BigBlueButton. Its main purpose is to allow the inclusion and execution of custom chat commands in meetings. The plugin is designed to be easily extensible, enabling developers to add new commands with minimal effort.
- Easily add new chat commands by extending the configuration.
- Commands can trigger custom mutations and actions in the meeting context.
- Example command:
/demote(see above for details).
A screenshot and/or a short video can be added here to illustrate usage.
To build the plugin for production use, follow these steps:
cd $HOME/src/plugin-template
npm ci
npm run build-bundleThe above command will generate the dist folder, containing the bundled JavaScript file named <plugin-name>.js. This file can be hosted on any HTTPS server along with its manifest.json.
If you install the Plugin separated to the manifest, remember to change the javascriptEntrypointUrl in the manifest.json to the correct endpoint.
To use the plugin in BigBlueButton, send this parameter along in create call:
pluginManifests=[{"url":"<your-domain>/path/to/manifest.json"}]
Or additionally, you can add this same configuration in the .properties file from bbb-web in /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
Commands are defined in the plugin's configuration as objects with a name, description, mutation (optional), and an execute function. To add a new command:
- Open the file where commands are configured (usually
component.tsxor a dedicated config file). - Add a new entry to the
CommandConfigobject, specifying:name: The command name (used after/in chat).description: A brief description of the command.mutation: (Optional) The GraphQL mutation string to be used.execute: The function that will be called when the command is triggered. It receives context such as the current user, user list, arguments, and mutation trigger.
- Ensure the mutation is mapped in the
mutationMapif your command uses a custom mutation.
Example:
const DEFAULT_COMMANDS: CommandConfig = {
demote: { ... },
myCommand: {
name: 'myCommand',
description: 'Does something special',
mutation: MY_MUTATION,
execute: ({ mutation, users, senderId, args }) => {
// Your logic here
},
},
};As for development mode (running this plugin from source), please, refer back to https://github.com/bigbluebutton/bigbluebutton-html-plugin-sdk section Running the Plugin from Source