• Stars
    star
    105
  • Rank 319,012 (Top 7 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated 17 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Zoom plugin for Mattermost 🔌

Mattermost Zoom Plugin

Build Status Code Coverage Release HW

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.

example

Admin guide

Install Zoom plugin

Install via Plugin Marketplace (Recommended)

  1. In Mattermost, go to Main Menu > Plugin Marketplace.
  2. Search for "Zoom" or manually find the plugin from the list and select Install.
  3. After the plugin has downloaded and been installed, configure the plugin.
  4. 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.

  1. Go to Main Menu > Plugin Marketplace in Mattermost.
  2. Search for "Zoom" or manually find the plugin from the list and select Install.
  3. After the plugin has downloaded and been installed, configure the plugin.
  4. 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.

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

  1. Go to https://marketplace.zoom.us/ and log in as an admin.
  2. In the top left select Develop and then Build App.
  3. Select OAuth in Choose your app type section.
  4. Enter a name for your app.
  5. Choose User-managed app as the app type.
  6. 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.
  7. Select Create.

create_user_managed

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.

  1. 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.
  2. Enter a valid Redirect URL for OAuth (https://SITEURL/plugins/zoom/oauth2/complete) and add the same URL under Add Allow List. Note that SITEURL should be your Mattermost server URL.

credentials

Add user scopes to the app

Select Scopes and add the following scopes: meeting:read, meeting:write,user:read.

scopes-user-level-app

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.

  1. Select Information.
  2. Near the end of the page is a section called Deauthorization Notification.
  3. 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.

deauthorization

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

  1. Go to https://marketplace.zoom.us/ and log in as an admin.
  2. In the top left select Develop and then Build App.
  3. Select OAuth in Choose your app type section.
  4. Enter a name for your app.
  5. Choose Account-level app as the app type.
  6. 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.
  7. Select Create.

Create account level app

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.

  1. 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.
  2. 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.

credentials

Add user scopes to the app

Select Scopes and add the following scopes: meeting:read:admin, meeting:write:admin,user:read:admin.

scopes-account-level-app

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.

  1. Select Information.
  2. Near the end of the page, is a section called Deauthorization Notification.
  3. 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.

deauthorization

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.

  1. Select Feature.
  2. Enable Event Subscriptions.
  3. Select Add New Event Subscription and give it a name (e.g. "Meeting Ended").
  4. 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.

mattermost_webhook_secret

Select Add events and select the End Meeting event.

event_types

Select Done and then save your app.

Mattermost Setup

Note: You need a paid Zoom account to use the plugin.

First steps

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 and https://api.yourzoom.com/v2 respectively. Leave blank if you're using Zoom's vendor-hosted SaaS service.
    • Cloud Hosted?
      • Leave Zoom API URL and Zoom URL fields blank.
  • 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/.

More Repositories

1

mattermost

Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
TypeScript
28,319
star
2

focalboard

Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.
TypeScript
19,506
star
3

mattermost-webapp

Archived web app of Mattermost. Moved to the monorepo: https://github.com/mattermost/mattermost
TypeScript
2,291
star
4

desktop

Mattermost Desktop application for Windows, Mac and Linux
TypeScript
1,921
star
5

mattermost-mobile

Next generation iOS and Android apps for Mattermost in React Native
TypeScript
1,898
star
6

mattermost-docker

Deprecated
Shell
964
star
7

docker

Install Mattermost server via Docker
Shell
294
star
8

mattermost-push-proxy

Go
217
star
9

docs

Mattermost documentation
Python
205
star
10

mattermost-redux

Redux for Mattermost
JavaScript
200
star
11

mattermost-plugin-jitsi

Jitsi plugin for Mattermost 🔌
Go
183
star
12

mattermost-android-classic

Mattermost app for Android phones and tablets
Java
175
star
13

mattermost-bot-sample-golang

Go
170
star
14

mattermost-ios-classic

Mattermost iOS application source code
Swift
156
star
15

mattermost-helm

Mattermost Helm charts for Kubernetes
Smarty
153
star
16

openops

Open source stack for applying AI to workflows in secure environments
Shell
138
star
17

mattermost-plugin-github

GitHub plugin for Mattermost
Go
131
star
18

mattermost-plugin-gitlab

GitLab plugin for Mattermost
JavaScript
131
star
19

mattermost-plugin-autolink

Automatically rewrite text matching a regular expression into a markdown link.
Go
123
star
20

mattermost-operator

Mattermost Operator for Kubernetes
Go
114
star
21

mattermost-plugin-ai

Mattermost plugin for LLMs
Go
110
star
22

mattermost-plugin-starter-template

Build scripts and templates for writing Mattermost plugins.
Go
98
star
23

mattermost-plugin-jira

JIRA plugin for Mattermost 🔌
Go
97
star
24

react-native-paste-input

React Native TextInput replacement to allow pasting files
Objective-C
82
star
25

xml-roundtrip-validator

Go
79
star
26

mattermost-plugin-calls

TypeScript
78
star
27

mattermost-api-reference

Mattermost API reference documentation.
HTML
76
star
28

mattermost-integration-gitlab

GitLab Integration Service for Mattermost
Python
75
star
29

mattermost-developer-documentation

Mattermost developer documentation.
CSS
71
star
30

mattermost-plugin-playbooks

Create and manage pre-built, configurable checklists that define a repeatable process for teams to achieve specific and predictable outcomes.
TypeScript
65
star
31

mattermost-plugin-demo

A demo of what Mattermost plugins can do.
Go
64
star
32

mattermost-plugin-memes

Add culture to your Mattermost with memes 🔌
Go
61
star
33

mattermost-plugin-todo

Mattermost plugin for tracking to do items
JavaScript
60
star
34

mattermost-load-test

[DEPRECATED] replaced by https://github.com/mattermost/mattermost-load-test-ng
Go
59
star
35

mattermost-cloud

Tools and services for running Mattermost Cloud ☁️
Go
58
star
36

mattermost-plugin-welcomebot

Go
57
star
37

mattermost-docker-preview

Mattermost Preview Docker Image
Dockerfile
57
star
38

mattermost-load-test-ng

Mattermost next generation loadtest agent
Go
53
star
39

mattermost-data-warehouse

Python
53
star
40

mattermost-cloud-monitoring

HCL
48
star
41

mattermost-plugins

This project hosts plugins built by Mattermost staff and community.
45
star
42

mattermost-handbook

Mattermost Community and Staff Handbook
43
star
43

mattermost-driver-javascript

Javascript library for interacting with the Mattermost API
JavaScript
42
star
44

action-mattermost-notify

GitHub Action for sending a notification to a Mattermost channel
Go
38
star
45

mattermost-marketplace

The stateless HTTP service backing the Mattermost marketplace.
Go
37
star
46

mattermost-plugin-autotranslate

Go
36
star
47

mattermost-plugin-custom-attributes

Mattermost plugin for adding custom attributes to users!
Go
35
star
48

mattermost-heroku

Run Mattermost on Heroku
Shell
34
star
49

morph

Go
32
star
50

mattermost-plugin-google-calendar

Mattermost Google Calendar Plugin
TypeScript
32
star
51

mattermost-plugin-apps

Powers the Mattermost App Framework
Go
31
star
52

mattermost-plugin-antivirus

Antivirus plugin for scanning files uploaded to Mattermost
Go
30
star
53

mattermost-plugin-jenkins

A Mattermost plugin to interact with Jenkins
Go
30
star
54

mattermost-plugin-agenda

Mattermost plugin to handle meeting agendas
Go
29
star
55

react-native-network-client

React Native network client by Mattermost
TypeScript
29
star
56

mattermost-integration-giphy

Giphy Integration Service for Mattermost
Python
27
star
57

mattermost-interactive-post-demo

Interactive post demo for Mattermost
Python
27
star
58

mattermost-plugin-email-reply

Go
26
star
59

mattermost-ai-framework

The Mattermost AI Framework
TypeScript
25
star
60

mattermost-plugin-walltime

Timezone Message Convert for Mattermost 🕛 🕒 🕕 🕘
JavaScript
23
star
61

mattermost-webrtc

Dockerfile
22
star
62

mattermost-omnibus

A simple way to install Mattermost.
Go
21
star
63

rtcd

Go
18
star
64

logr

Fully asynchronous, structured, pluggable logging for Go.
Go
17
star
65

mattermost-plugin-aws-SNS

Plugin that receives SNS notification from Alerts created by AWS CloudWatch and sent via AWS SNS
Go
17
star
66

mattermost-browser-extension

Demo Chrome extension for Mattermost 5.2+
JavaScript
16
star
67

chewbacca

Chewbacca GitHub Bot
Go
16
star
68

mattermost-plugin-skype4business

Go
15
star
69

matterbuild

Matterbuild - An internal Mattermost chatops tool for generating Mattermost releases
Go
14
star
70

mattermost-plugin-docup

Mattermost plugin for marking messages for documentation.
JavaScript
14
star
71

mattermost-govet

Go
14
star
72

mattermost-plugin-profanity-filter

A profanity filter plugin.
Go
14
star
73

matrix-as-mm

Matrix ↔️ Mattermost bridge
PLpgSQL
13
star
74

mattermost-plugin-confluence

A Mattermost Plugin to receive events from Confluence
Go
13
star
75

mattermost-plugin-msteams-meetings

Mattermost Plugin for Microsoft Teams Meetings
Go
12
star
76

mattermost-oauth2-client-sample

Sample app for Mattermost OAuth2 and App Center
JavaScript
12
star
77

quality-assurance

Issues and test assignments for QA Contributors/Community
11
star
78

mattermost-plugin-msteams

Go
11
star
79

builder

Mattermost builder
Go
11
star
80

mattermost-app-zendesk

Zendesk App for Mattermost
TypeScript
11
star
81

dynamic-virtualized-list

Dynamic virtualized list
JavaScript
11
star
82

mattermost-plugin-api

A hackathon project to explore reworking the Mattermost Plugin API.
Go
11
star
83

mattermost-mattermod

Go
11
star
84

react-native-emm

React Native package for EMM managed configurations
TypeScript
10
star
85

mattermost-looker

LookML
10
star
86

mattermost-plugin-mscalendar

Mattermost plugin for Microsoft Office365
Go
10
star
87

dbcmp

database comparison tool
Go
10
star
88

mattermost-hackathon-nov2019

10
star
89

mattermost-app-examples

Examples for the Mattermost App Framework
Go
10
star
90

mattermost-utilities

JavaScript
9
star
91

mattermost-developer-kit

Command line tool for generating Mattermost integration and plugin templates
JavaScript
9
star
92

mmetl

Go
8
star
93

mattermost-plugin-webex

Go
8
star
94

mattermost-plugin-cloud

Go
8
star
95

compass-components

[DEPRECATED] Compass Components is a shared component library used to build appealing user interfaces from scratch with ease. It's based on the Mattermost Design style guide called the Compass Design System.
TypeScript
8
star
96

perseus

Multiplex connections
Go
7
star
97

mattermost-app-nextcloud

Nextcloud App for Mattermost
Go
7
star
98

mattermost-plugin-demo-creator

Go
7
star
99

mattermost-plugin-circleci

Mattermost Plugin for CircleCI SaaS. Get notifications, trigger workflows, set env-vars directly from Mattermost
Go
6
star
100

mattermost-test-management

Mattermost Test Management, an open testing initiative.
TypeScript
6
star