snapshot of https://github.com/mattermost/mattermost.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s
This commit is contained in:
158
docs/main/integrations-guide/zoom.mdx
Normal file
158
docs/main/integrations-guide/zoom.mdx
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: "Connect Zoom to Mattermost"
|
||||
sidebar_label: "Zoom"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Reduce friction and time lost to coordinating meetings and switching between apps by integrating Zoom with Mattermost. Make it easy for your teams to start spontaneous video calls directly from Mattermost channels. Receive Zoom cloud recordings and transcripts directly in Mattermost once they're available.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in Zoom and configuration ends in Mattermost.
|
||||
|
||||
### Register an OAuth app in Zoom
|
||||
|
||||
A Zoom system admin must perform the following steps in Zoom.
|
||||
|
||||
Zoom supports OAuth authentication, and there are 2 types of OAuth Zoom Apps you can register: **Account-Level** and **User-Level**. You can use either type based on your organization's security and preferences.
|
||||
|
||||
- **Account-Level**: Individual users in Mattermost are verified by checking their Mattermost email and requesting their Personal Meeting ID via the Zoom API. The user's email address in both Mattermost and Zoom must match. Create a User Level Zoom app instead if you prefer that each user to authorize individually.
|
||||
- **User-Managed**: Individual users in Mattermost are required to authorize the Mattermost App to access their Zoom account. Create an Account-Level app instead if you prefer that an admin authorizes access on behalf of the whole Zoom organization.
|
||||
|
||||
<Important>
|
||||
|
||||
For Account-Level apps, only Zoom users associated with the Zoom Account that created the app can use this integration. You can add users from the **Manage Users** section in the Zoom Account settings.
|
||||
|
||||
</Important>
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="account-level" label="Account-Level">
|
||||
|
||||
Complete the following steps to create an account-level Zoom app for Mattermost.
|
||||
|
||||
1. Go to [https://marketplace.zoom.us/](https://marketplace.zoom.us/) and log in as an admin.
|
||||
2. In the top right, select **Develop** and then select **Build App**.
|
||||
3. On top, select **Development**. We would choose **Production** if we were publishing to marketplace, but we won't be doing that here.
|
||||
4. You can edit the name of your app from top left side by clicking on edit icon.
|
||||
5. Choose **Admin-managed app** as the app type.
|
||||
6. Next you'll find your **Client ID** and **Client Secret**. Please copy this as these will be needed when you set up Mattermost to use the plugin.
|
||||
7. Enter a valid **Redirect URL for OAuth** (<code>https://SITEURL/plugins/zoom/oauth2/complete</code>) and add the same URL under **Add Allow List**. Note that <code>SITEURL</code> should be your Mattermost server URL.
|
||||
8. To add user scopes to the app, select **Scopes**, and add the following scopes: `meeting:read:meeting` (retrieve meeting details), `meeting:write:meeting` (create and update meetings), `user:read:user` (read user profile info), `cloud_recording:read:recording` (access cloud recording files), `archiving:read:list_archived_files` (list archived files).
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="user-managed" label="User-Managed">
|
||||
|
||||
Complete the following steps to create a user-managed Zoom app for Mattermost.
|
||||
|
||||
1. Go to [https://marketplace.zoom.us/](https://marketplace.zoom.us/) and log in as an admin.
|
||||
2. In the top right select **Develop** and then **Build App**.
|
||||
3. On top, select **Development**. We would choose **Production** if we were publishing to marketplace, but we won't be doing that here.
|
||||
4. You can edit the name of your app from top left side by clicking on edit icon.
|
||||
5. Choose **User-managed app** as the app type.
|
||||
6. Next you'll find your **Client ID** and **Client Secret**. Please copy this as these will be needed when you set up Mattermost to use the plugin.
|
||||
7. Enter a valid **Redirect URL for OAuth** (<code>https://SITEURL/plugins/zoom/oauth2/complete</code>) and add the same URL under **Add Allow List**. Note that <code>SITEURL</code> should be your Mattermost server URL.
|
||||
8. To add user scopes to the app, select **Scopes**, and add the following scopes: `meeting:read:meeting` (retrieve meeting details), `meeting:write:meeting` (create and update meetings), `user:read:user` (read user profile info), `cloud_recording:read:recording` (access cloud recording files), `archiving:read:list_archived_files` (list archived files).
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
### Configure webhook events
|
||||
|
||||
When a Zoom meeting ends, the original post shared in the channel can be automatically changed to indicate the meeting has ended and how long it lasted. To enable this functionality, 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.
|
||||
|
||||
1. While editing the app in Zoom, select **Access** under the **Features** tab on the left.
|
||||
2. Select **Add New Event Subscription**, and give it a name, such as `Zoom for Mattermost`.
|
||||
3. Select the **Add Events** button and add: **All Recordings have completed**, **Recording Transcript files have completed**, **Start Meeting**, and **End Meeting**.
|
||||
4. Enter a valid **Event notification endpoint URL** `https://SITEURL/plugins/zoom/webhook?secret=WEBHOOKSECRET`, replacing `SITEURL` with your Mattermost URL. `WEBHOOKSECRET` is generated during [Mattermost configuration](#mattermost-configuration).
|
||||
5. Select **Save** to save the webhook configuration.
|
||||
6. Verify the webhook is active by selecting **Test Event** in the Zoom webhook configuration. Confirm that Mattermost returns an HTTP 200 response or that the Mattermost plugin logs show a successful delivery. Also confirm that the **Secret Token** shown in the UI matches the `WEBHOOKSECRET` value used in the **Event notification endpoint URL** from step 4.
|
||||
7. Copy the **Secret Token** value at the top of the page for use in the next section.
|
||||
|
||||
### Mattermost configuration
|
||||
|
||||
A Mattermost system admin must perform the following steps in Mattermost.
|
||||
|
||||
Install the Zoom integration from the in-product App Marketplace:
|
||||
|
||||
<Note>
|
||||
|
||||
We recommend making a copy of your webhook secret and encryption key, as it will only be visible to you once.
|
||||
|
||||
</Note>
|
||||
|
||||
1. In Mattermost, from the Product menu <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Navigate between Channels, collaborative playbooks, and boards using the product menu icon." className="theme-icon" />, select **App Marketplace**.
|
||||
2. Search for or scroll to Zoom, and select **Install**.
|
||||
3. Once installed, select **Configure**. You'll be taken to the System Console.
|
||||
4. On the Zoom configuration page, enable and configure Zoom interoperability as follows, and then select **Save**.
|
||||
5. For self-hosted Zoom deployments, enter the **Zoom URL** and **Zoom API URL** for the Zoom server when you're using a self-hosted private cloud or on-premises Zoom server, such as `https://YOUR-ZOOM.com` and `https://api.YOUR-ZOOM.com/v2` respectively, replacing `YOUR-ZOOM` with your Zoom server URL. Leave this field blank if you're using Zoom's vendor-hosted SaaS service.
|
||||
6. If you've created an [account level Zoom app for Mattermost](#register-an-oauth-app-in-zoom), set **OAuth by Account Level App** to **true**. Leave this value as **false** if you've created a user level Zoom app for Mattermost.
|
||||
7. Connect your users to Zoom using OAuth. Enter the **Client ID** and **Client Secret** generated when [registering the oauth app in Zoom](#register-an-oauth-app-in-zoom).
|
||||
8. Select **Regenerate** next to the **At Rest Token Encryption Key** field to generate an AES encryption key. You just need to generate this value, and won't use it anywhere else.
|
||||
9. If you're configuring webhook events, select **Regenerate** next to the **Webhook Secret** field. This is the `WEBHOOKSECRET` value to use in your webhook URL pointing to Mattermost.
|
||||
10. Paste the **Secret Token** from the Zoom webhook configuration page into the plugin setting **Zoom Webhook Secret**.
|
||||
11. (Optional) Enable **Restrict Meeting Creation** to restrict users from creating meetings in public channels.
|
||||
12. Select **Save** to save your changes.
|
||||
|
||||
## Enable
|
||||
|
||||
Notify your teams that they can [connect their Zoom accounts to Mattermost](#usage).
|
||||
|
||||
To subscribe a channel to a recurring Zoom meeting (a meeting scheduled to repeat on a regular basis, such as daily or weekly, or with no fixed time using Zoom's **Recurrence** option), use the following slash command: `/zoom subscription add [meeting ID]`. You can find the meeting ID in the Zoom desktop or web client by opening the meeting's details page, or from the meeting invitation email. The channel will receive a notification when the meeting starts, along with an access link. If cloud recordings are enabled and the meeting was recorded, the recording and transcript are posted as replies to the initial message once they are available.
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration when new versions are released. Generally, updates are seamless and don't interrupt the user experience in Mattermost. Visit the [Releases page](https://github.com/mattermost/mattermost-plugin-zoom/releases) for information on the latest release, previous releases, and compatibility considerations.
|
||||
|
||||
## Usage
|
||||
|
||||
You need a paid Zoom account to start a Zoom call within Mattermost. The first time you create a Zoom meeting, you may be prompted to connect your account. Follow the instructions to connect your Zoom account using your credentials.
|
||||
|
||||
Start a call by selecting the Zoom icon in the right pane, or by running the `/zoom start` slash command in any channel or thread. All channel members can then join the meeting. The meeting host is the person who started the call.
|
||||
|
||||
Join the meeting by selecting the call invitation in the channel.
|
||||
|
||||
Run the `/zoom settings` slash command to set your preference for using your Zoom personal meeting ID as a meeting host. You can choose to always use your personal meeting ID, always use a new unique meeting id, or set Mattermost to prompt you for your preference each time you start a call.
|
||||
|
||||
Subscribe a Mattermost channel to a recurring Zoom meeting with `/zoom subscription add [meeting ID]`. Cloud recordings and transcripts must be enabled in your paid Zoom account in order to receive them in Mattermost. To enable this, sign in to the [Zoom web portal](https://zoom.us/) as an account owner or admin, go to **Account Management \> Account Settings**, select the **Recording** tab, and enable **Allow hosts to record and save the session in the cloud**. Then, under **Advanced cloud recording settings**, select the **Audio Transcript** checkbox. Alternatively, enable these settings at the user level and assign recording permission to the meeting host. See [Zoom's cloud recording settings documentation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0064676) and [audio transcription documentation](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0065911) for step-by-step guidance. Once enabled, you'll receive a notification in Mattermost when the recording and transcript are available for recorded meetings.
|
||||
|
||||
If you create a new meeting using the Zoom button in the Mattermost RHS, then the recording and transcript are similarly posted as replies to the initial message once they are available, if cloud recordings are enabled and the meeting was recorded.
|
||||
|
||||
Additional slash commands:
|
||||
|
||||
- `/zoom help` - Display available commands
|
||||
- `/zoom channel-settings` - Set whether meetings in the current channel use your personal meeting ID or unique meeting ID
|
||||
- `/zoom channel-settings list` - List all channel preferences
|
||||
- `/zoom subscription list` - List all subscribed channels
|
||||
- `/zoom subscription add [meeting ID]` - Subscribe a Mattermost channel to a recurring Zoom meeting
|
||||
- `/zoom subscription remove [meeting ID]` - Unsubscribe a Mattermost channel from a recurring Zoom meeting
|
||||
|
||||
For User-Managed apps only:
|
||||
|
||||
- `/zoom connect` - Connect your Zoom account to Mattermost
|
||||
- `/zoom disconnect` - Disconnect your Zoom account from Mattermost
|
||||
|
||||
## Customize
|
||||
|
||||
This [integration](https://github.com/mattermost/mattermost-plugin-zoom) contains both a server and web app portion.
|
||||
|
||||
- Server: Inside the `/server` directory, you'll find the Go files that make up the server-side of the integration. 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`.
|
||||
|
||||
Visit the [Mattermost Developer Workflow](https://developers.mattermost.com/extend/plugins/developer-workflow/) and [Mattermost Developer environment setup](https://developers.mattermost.com/extend/plugins/developer-setup/) for information about developing, customizing, and extending Mattermost functionality.
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration when new versions are released. Generally, updates are seamless and don't interrupt the user experience in Mattermost. Visit the [Releases page](https://github.com/mattermost/mattermost-plugin-zoom/releases) for information on the latest release, previous releases, and compatibility considerations.
|
||||
|
||||
## Get help
|
||||
|
||||
Mattermost customers can open a [Mattermost support case](https://support.mattermost.com/hc/en-us/requests/new). To report a bug, please open a GitHub issue against the [Mattermost Zoom plugin repository](https://github.com/mattermost/mattermost-plugin-zoom).
|
||||
|
||||
For questions, feedback, and assistance, join our public [Integrations and Apps channel](https://community.mattermost.com/core/channels/integrations) on the [Mattermost Community Server](https://community.mattermost.com/) for assistance.
|
||||
|
||||
Mattermost Team Edition and Free customers can visit the Mattermost [peer-to-peer troubleshooting forum](https://forum.mattermost.com/c/trouble-shoot/16) to access the global Mattermost Community for assistance.
|
||||
Reference in New Issue
Block a user