Skip to main content

Defining the plugin capabilities

The <name>.plugin.package.json file contains metadata that is used to render a plugin within the Pexip webapp2 application. This file contains information such as the target platforms, the roles that use the plugin, and the toolbar locations. This page will give an example file and explore what the settings are for and options for their use.

{
"id": "layout-control-plugin-1.0",
"name": "layoutControl",
"description": "Allow for controlling conference layouts",
"version": 1.0,
"srcURL": "layoutControl.plugin.js",
"allowUnload": false,
"platforms": ["web", "electron", "ios", "android"],
"participantRoles": ["chair"],
"menuItems": {
"toolbar": [
{
"icon": "assets/images/grid.svg#grid",
"label": "Change conference layout",
"action": "changeConferenceLayout"
}
]
}
}

In the above example, the plugin is named layoutControl and has a toolbar icon at the bottom of the webapp2 application. An explanation of each setting is below. Please note that these settings are shown in their correct case, lower case values are not a grammatical error and should be utilized exactly as written here.

Valid Package Keys

id

This is a unique identifier for this plugin, it will be used later in the settings of the webapp2 application to instantiate the plugin.

name

This is a friendly name of the plugin and is used to name the plugin in a friendly way to the user thus allowing them to know which plugin they are interacting with, this is especially useful if a user needs to unload or reload a plugin as they can easily identify what it is used for. In the above example, the name is in camel case but this may be in any format the plugin developer deems appropriate.

description

This is a description of the plugin.

version

This is the version of the plugin, it is used to track the version that is installed inside of the webapp2 application in case it is required to roll the plugin back or forward. It is essential that the plugin developer use this version to ensure that the appropriate version can be identified by the user.

srcURL

This is the filename of the actual plugin logic. This file will be explored later in this documentation. It is important that this name is exactly the same name as the plugin code file. In the above example, it is referencing the layoutControl.plugin.js file that is located in the same folder as the plugin.package.json file.

allowUnload

This setting allows or disallows the unloading of the plugin. This is important as it may mean that a plugin is unloaded and not run. This would be set to false for critical plugins that should always run.

platforms

This specifies the platforms that the plugin should run on. Valid platforms are listed below.

  • web - run in web versions of webapp2

  • electron - run in electron-based apps, such as the infinity application

  • ios - run on iOS-based devices

  • android - run on Android-based devices

participantRoles

This determines the user role that the plugin will run for. An example of this might be a layout control plugin that should only be used by a host. Valid roles are listed below.

  • host - the host of the meeting, that has successfully authenticated with a PIN (if PIN's are enabled)

  • guest - a guest of a meeting that has joined a host-based meeting

This is used to specify where access to the plugin should be kept, if a plugin requires user interaction to perform an action the code for the button to allow user interaction will go here. There are 2 valid placements of menuItems for a webapp2 application. These are listed below.

toolbar

This is located at the bottom of the webapp2 application where the call controls are located. By placing an item here it will show at the end of this call control bar.

Toolbar location

An example of adding an item to the toolbar location is below.

"menuItems": {
"toolbar": [
{
"icon": "assets/images/grid.svg#grid",
"label": "Change conference layout",
"action": "changeConferenceLayout"
}
]
}

participants

This menu item is shown when a user clicks on a participant in the roster list. When the participant is clicked, a menu opens and the plugin will be shown at the bottom of this list.

Participants location

An example of adding an item to the participants location is below.

"menuItems": {
"participants": [
{
"icon": "support.svg",
"label": "Send fault report",
"action": "sendReport"
}
]
}

The menu item contains 3 different key/value pairs. Each of these are listed below with a short explanation of each.

  • icon - the icon for the button, this is an absolute path to the file in relation to the plugin.package.json file

  • label - the label to display on hover of the icon

  • action - the action, or function name, that is called from the plugin.js file when the button is pushed