Mattermost Zoom Plugin
Maintainer: @mickmister Co-Maintainer: @trilopin
The Mattermost Zoom integration allows team members to initiate a Zoom meeting with a single click. All participants in a channel can easily join the Zoom meeting and the shared link is updated when the meeting is over.
Important: Only Zoom users associated with the Zoom Account that created the Zoom App will be able to use the plugin. You can add these users from the Manage Users section in the Zoom Account settings.
Admin guide
Install Zoom plugin
Install via Plugin Marketplace (Recommended)
- In Mattermost, go to Main Menu > Plugin Marketplace.
- Search for "Zoom" or manually find the plugin from the list and select Install.
- After the plugin has downloaded and been installed, configure the plugin.
- After configuring the plugin, configure Mattermost to use the plugin.
(Alternative) Install via Manual Upload
If your server doesn't have internet access, you can download the latest plugin binary release and upload it to your server via System Console > Plugin Management. The binary releases on the page above, are the same as used by the Plugin Marketplace.
- Go to Main Menu > Plugin Marketplace in Mattermost.
- Search for "Zoom" or manually find the plugin from the list and select Install.
- After the plugin has downloaded and been installed, configure the plugin.
- After configuring the plugin, configure Mattermost to use the plugin.
Configure the plugin
Zoom supports one authentication method for users to connect Mattermost and Zoom: OAuth.
- There are two types of OAuth Zoom Apps you can create. You can use either one with this Zoom plugin depending on your organization's security and UX preferences. (Account or User Level Apps)
- Account-Level App
- Users do not need to authorize their Zoom accounts before starting their first Zoom meeting. The only requirement is that their Mattermost account uses the same email address as their Zoom account.
- Users cannot connect their Mattermost/Zoom accounts if their emails do not match.
- User Level App
- Each user will need to connect their Zoom account with their Mattermost account before they can use the integration. When they try to create a meeting for the first time, they'll receive a message to connect their account, and will need to select Approve on the pop-up confirmation notice.
- Users can connect their Mattermost/Zoom accounts even if their emails do not match.
- Account-Level App
Upgrade from a previous version
If you've been using an older version of the Zoom plugin, you likely have a legacy webhook-type app configured in Zoom. Legacy webhook apps are no longer supported by Zoom or Mattermost and are not compatible with Zoom plugin v1.4. You may experience issues with the meeting status message information not being updated when a meeting ends. This is because the webhook endpoint expects a JSON format request and newer webhooks use different formats.
From Zoom v1.4, you can configure and associate your webhooks with an app you've already created. First, remove the previous webhook app. Then configure the webhook.
Set up the Zoom plugin (User Level App)
You can set the OAuth ClientID and OAuth Secret, generated by Zoom, and use it to create meetings and pull user data.
User-level Apps require each user to authorize the Mattermost App to access their Zoom account individually. If you prefer to authorize its access by an admin on behalf of the whole Zoom organization you should create an Account-level app instead.
Create an app for Mattermost
- Go to https://marketplace.zoom.us/ and log in as an admin.
- In the top left select Develop and then Build App.
- Select OAuth in Choose your app type section.
- Enter a name for your app.
- Choose User-managed app as the app type.
- Choose whether you Would like to publish this app on Zoom Marketplace. In most cases you'll want this to be disabled, but the plugin supports apps that are published in the Zoom Marketplace.
- Select Create.
Configure your new OAuth app to work with Mattermost
If you would like to publish on Zoom Marketplace, you'll find two sets of values: development and production. Make sure you follow the next steps with the production values.
- Go to the App Credentials tab on the left. Here you'll find your Client ID and Client Secret. These will be needed when you set up Mattermost to use the plugin.
- Enter a valid Redirect URL for OAuth (
https://SITEURL/plugins/zoom/oauth2/complete
) and add the same URL under Add Allow List. Note thatSITEURL
should be your Mattermost server URL.
Add user scopes to the app
Select Scopes and add the following scopes: meeting:read, meeting:write,user:read.
Do not perform the install step
Zoom has one last option called Install. There is no need to perform this action. However, if you perform this action inadvertently, you'll see an error on Mattermost. This is expected.
Deauthorization
This plugin allows users to be deauthorized directly from Zoom, in order to comply with Zoomโs commitment to security and the protection of user data. If you would like to publish on Zoom Marketplace, you can set up a deauthorization URL.
- Select Information.
- Near the end of the page is a section called Deauthorization Notification.
- Enter a valid Endpoint URL (
https://SITEURL/plugins/zoom/deauthorization?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated during when setting up Mattermost to use the plugin.
Finish setting up Mattermost server
Follow the instructions for Mattermost Setup
Set up Zoom plugin (Account Level App)
You can set the OAuth ClientID and OAuth Secret, generated by Zoom, and use it to create meetings and pull user data. Note that this requires admin permissions on your Zoom account.
Account-level apps require an admin to authorize access to all users accounts within the Zoom account. Individual users in Mattermost are verified by checking their Mattermost email and requesting their Personal Meeting ID via the Zoom API. The user's emails in Zoom and Mattermost accounts should match up. If you prefer for each end user to authorize individually, you should create a user level Zoom app instead.
Create an app for Mattermost
- Go to https://marketplace.zoom.us/ and log in as an admin.
- In the top left select Develop and then Build App.
- Select OAuth in Choose your app type section.
- Enter a name for your app.
- Choose Account-level app as the app type.
- Choose whether you Would like to publish this app on Zoom Marketplace. In most cases you'll want this to be disabled, but the plugin supports apps that are published in the Zoom Marketplace.
- Select Create.
Configure your new OAuth app to work with Mattermost
If you would like to publish on Zoom Marketplace, you'll find two sets of values: development and production. Make sure you follow the next steps with the production values.
- Go to the App Credentials tab on the left. Here you'll find your Client ID and Client Secret.
- These will be needed when you set up Mattermost to use the plugin.
- Enter a valid Redirect URL for OAuth (
https://SITEURL/plugins/zoom/oauth2/complete
) and add the same URL under Add Allow List.SITEURL
should be your Mattermost server URL.
Add user scopes to the app
Select Scopes and add the following scopes: meeting:read:admin, meeting:write:admin,user:read:admin.
Do not perform the install step
Zoom has one last option called Install. There is no need to perform this action. However, if you perform this action inadvertently, you'll see an error on Mattermost. This is expected.
Deauthorization
This plugin allows users to be deauthorized directly from Zoom, in order to comply with Zoomโs commitment to security and the protection of user data. If you would like to publish on Zoom Marketplace, you can set up a deauthorization URL.
- Select Information.
- Near the end of the page, is a section called Deauthorization Notification.
- Enter a valid Endpoint URL (
https://SITEURL/plugins/zoom/deauthorization?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated during Mattermost Setup.
Finish setting up Mattermost server
Follow the instructions for setting up Mattermost to use the plugin.
Configure Webhook Events
When a Zoom meeting ends, the original link shared in the channel can be changed to indicate the meeting has ended and how long it lasted. To enable this functionality, we need to create a webhook subscription in Zoom that tells the Mattermost server every time a meeting ends. The Mattermost server then updates the original Zoom message.
- Select Feature.
- Enable Event Subscriptions.
- Select Add New Event Subscription and give it a name (e.g. "Meeting Ended").
- Enter a valid Event notification endpoint URL (
https://SITEURL/plugins/zoom/webhook?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated when setting up Mattermost to use the plugin.
Select Add events and select the End Meeting event.
Select Done and then save your app.
Mattermost Setup
Note: You need a paid Zoom account to use the plugin.
First steps
- Enable settings for overriding usernames and overriding profile picture icons.
- Go to System Console > Plugins > Zoom to configure the Zoom Plugin.
Mattermost configuration settings
Plugin configuration
- Set Enable Plugin to
true
. - How are you hosting Zoom?
- Self Hosted?
- If you're using a self-hosted private cloud or on-premises Zoom server, enter the Zoom URL and Zoom API URL for the Zoom server, for example
https://yourzoom.com
andhttps://api.yourzoom.com/v2
respectively. Leave blank if you're using Zoom's vendor-hosted SaaS service.
- If you're using a self-hosted private cloud or on-premises Zoom server, enter the Zoom URL and Zoom API URL for the Zoom server, for example
- Cloud Hosted?
- Leave Zoom API URL and Zoom URL fields blank.
- Self Hosted?
- Connect your users to Zoom using OAuth.
- Use the Client ID and Client Secret generated when configuring Zoom to fill in the fields Zoom OAuth Client ID and Zoom OAuth Client Secret.
- Select the Regenerate button next to the field At Rest Token Encryption Key.
- Make sure Enable Password based authentication is set to
false
. - Ignore API Key and API Secret fields.
- If you are using Webhooks or Deauthorization, make sure you select the Regenerate button on Webhook Secret field.
- Select Save.
User guide
Connect your Account
The first time you create a meeting, you may be required to connect your account. Follow the instructions to connect your Zoom account.
Start Meetings
Once enabled, selecting the video icon in a Mattermost channel invites team members to join a Zoom call, hosted using the credentials of the user who initiated the call.
Slash Command
You can also start a meeting in any chat window by typing /zoom start
.
Development
This plugin contains both a server and web app portion.
Use make dist
to build distributions of the plugin that you can upload to a Mattermost server for testing.
Use make check-style
to check the style for the whole plugin.
Server
Inside the /server
directory, you will find the Go files that make up the server-side of the plugin. Within there, build the plugin like you would any other Go application.
Web App
Inside the /webapp
directory, you will find the JS and React files that make up the client-side of the plugin. Within there, modify files and components as necessary. Test your syntax by running npm run build
.
Read our documentation about the Developer Workflow and Developer Setup for more information about developing and extending plugins.
Help and Support
For Mattermost customers - please open a support case to ensure your issue is tracked properly.
For Questions, Suggestions and Help - please find us on our forum at https://forum.mattermost.org/c/pluginsโ
Alternatively, join our pubic Mattermost server and join the Integrations and Apps channel here: https://community.mattermost.com/core/channels/integrationsโ
To Contribute to the Mattermost project see https://www.mattermost.org/contribute-to-mattermost/.