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:
61
docs/main/integrations-guide/built-in-slash-commands.mdx
Normal file
61
docs/main/integrations-guide/built-in-slash-commands.mdx
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: "Built-In Slash Commands"
|
||||
sidebar_label: "Built-in Slash Commands"
|
||||
---
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
The following built-in slash comamnds are available in your Mattermost [workspace](/end-user-guide/end-user-guide-index).
|
||||
|
||||
<Tip>
|
||||
|
||||
Looking for more slash commands? See the [custom slash commands](https://developers.mattermost.com/integrate/slash-commands/custom/) developer documentation for details on creating custom commands.
|
||||
|
||||
</Tip>
|
||||
|
||||
## Invite people
|
||||
|
||||
- Invite one person using `/invite user1` or `/invite @user1`.
|
||||
- Invite a custom user group using `/invite @usergroup`.
|
||||
- Invite multiple people using `/invite @user1 @user2`.
|
||||
- Invite one person to a specific channel using `/invite @user1 ~channel1`, or `/invite @user1 channel1`.
|
||||
- Invite multiple people to multiple channels using `/invite @user1 @user2 ~channel1 ~channel2`.
|
||||
- Invite people by email using `/invite_people {name@domain.com, ...}`.
|
||||
|
||||
## Join, leave, or mute channels
|
||||
|
||||
- Join a specific channel using `/join {channel-name}` or `/open {channel-name}`.
|
||||
- Leave a channel using `/leave`.
|
||||
- Mute a channel using `/mute` or `/mute {channel-name}` to turn off desktop, email, and push notifications for the current or specified channel.
|
||||
- Remove someone from a channel using `/kick {@username}` or `/remove {@username}`.
|
||||
|
||||
## Start or join a call
|
||||
|
||||
- Start a call in a channe or thread using `/call start`
|
||||
- Join a call in a channel or thread using `/call join`
|
||||
|
||||
## Manage conversations
|
||||
|
||||
- Send a direct message to someone using `/msg {@username} {message}`, or send a group message to multiple people using `/groupmsg {@username1, @username2, @username3,...} {message}`.
|
||||
- Display text as a code block using `/code {text}`.
|
||||
- Automatically collapse image previews using `/collapse`, and automatially expand them using `/expand`.
|
||||
- Echo text back to yourself using `/echo {message} {delay in seconds}` or `/me {message}`.
|
||||
- Respond with a shrug using `/shrug {message}`.
|
||||
- Search message text using `search {text}`.
|
||||
|
||||
## Set your availability and status
|
||||
|
||||
- Set [your availability](/end-user-guide/preferences/set-your-status-availability#set-your-availability) using `/away`, `/offline`, `/online`, or `/dnd`
|
||||
- Set [a custom status](/end-user-guide/preferences/set-your-status-availability#set-a-custom-status) using `/status {emoji_name} {descriptive status_message}`, such as `/status sick Feeling unwell and taking time off to recover`. Clear your current status using `/status clear`.
|
||||
|
||||
## Manage channels
|
||||
|
||||
- Edit the channel header using `/header {text}` or the channel purpose using `/purpose {text}`.
|
||||
- Rename a channel using `/rename {text}`.
|
||||
|
||||
## More useful slash commands
|
||||
|
||||
- Open the Mattermost product documentation using `/help`.
|
||||
- Open the in-product Marketplace using `/marketplace`.
|
||||
- Display a list of keyboard shortcuts using `/shortcuts`.
|
||||
- Open the **Settings** screen using `/settings`.
|
||||
- Log out of Mattermost using `/logout`.
|
||||
82
docs/main/integrations-guide/faq.mdx
Normal file
82
docs/main/integrations-guide/faq.mdx
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: "Frequently Asked Questions"
|
||||
---
|
||||
## What is meant by no-code, low-code, and pro-code?
|
||||
|
||||
### No-code
|
||||
|
||||
Integration or automation can be achieved without writing any code. All configuration is done via user-friendly interfaces or by installing pre-made components. This is ideal for non-technical users or admins.
|
||||
|
||||
For example, installing a plugin from the marketplace or using a drag-and-drop automation tool would be considered no-code. The heavy lifting is pre-built and you just need to configure it.
|
||||
|
||||
### Low-code
|
||||
|
||||
Minimal coding or scripting is needed to implement the integration. Low-code solutions might require writing a few lines of script or simple configuration in code-like logic, but not building a full software application.
|
||||
|
||||
In Mattermost’s context, something like setting up a webhook with a small custom script, or tweaking an automation template would be considered low-code. It typically assumes some technical knowledge, but far less than full-scale development. Utilizing templates or online AI tooling can likely meet the need for most low-code integration requirements.
|
||||
|
||||
### Pro-code
|
||||
|
||||
These kinds of integrations require a professional software developer to write code and sometimes build underlying infrastructure. These integrations offer maximum flexibility at the cost of technical complexity, for example building a custom Mattermost plugin or writing a complex bot program using the Mattermost API in a custom application.
|
||||
|
||||
Pro-code integrations are essentially software projects – you’ll use developer tools, work with source code, and follow software development practices to build and maintain them.
|
||||
|
||||
## What does Slack-compatible mean?
|
||||
|
||||
Slack compatible means that Mattermost accepts integrations that have a payload in the same format as Slack's legacy "Message Attachment" payload. If you have a Slack integration, you should be able to set it up in Mattermost without changing the format of the message being sent over.
|
||||
|
||||
## What if I have a webhook from somewhere other than Slack?
|
||||
|
||||
If you have an integration that outputs a payload in a different format, you need an intermediary service to act as a translation layer to change it to the format Mattermost uses. These intermediary services could be no-code or low-code integrations with n8n, Zapier, or Make, but they could also be pro-code integrations leveraging something like AWS Lambda or other hosted services.
|
||||
|
||||
There’s currently no general standard for webhook communication between services, so translating your webhooks is necessary otherwise Mattermost won't understand the data you're sending.
|
||||
|
||||
## What are attachments?
|
||||
|
||||
When "attachments" are mentioned in Mattermost integrations documentation, it refers to Slack's message attachments functionality. These "attachments" can be optionally added as an array in the data sent by an integration, and are used to customize the formatting of the message.
|
||||
|
||||
Mattermost doesn't currently support the ability to attach files to a post made via webhook. You can use the API to attach files to a message if needed.
|
||||
|
||||
## What are Mattermost Blocks?
|
||||
|
||||
Mattermost Blocks are the structured format for rich, interactive integration posts. Integrations can extend messages with text, images, buttons, menus, collapsible sections, and different layout options.
|
||||
|
||||
Starting in Mattermost v11.10, Mattermost Blocks are the recommended replacement for [message attachments](https://developers.mattermost.com/integrate/reference/message-attachments/). They are the preferred way to create interactive messages for integrations such as [incoming webhooks](/integrations-guide/incoming-webhooks), plugins, and bot accounts.
|
||||
|
||||
Legacy message attachments and other interactive message formats continue to work; clients translate them into the Mattermost Blocks format at render time. We encourage new and updated integrations to use Mattermost Blocks instead.
|
||||
|
||||
For payload structure, block types, action handling, migration guidance, and troubleshooting, see the [Mattermost Blocks reference](https://developers.mattermost.com/integrate/reference/mm-blocks/) in the developer documentation.
|
||||
|
||||
## Where can I find existing integrations?
|
||||
|
||||
Visit the [Mattermost Marketplace](https://mattermost.com/marketplace) to access open source integrations to common tools like Jira, Jenkins, and GitLab, along with interactive bot applications, and other communication tools that are freely available for use and customization.
|
||||
|
||||
Alternatively, within Mattermost, when logged in as an Administrator, you can click on the "Marketplace" option in the main menu and easily install plugins or apps from there.
|
||||
|
||||
## Where should I install my integrations?
|
||||
|
||||
For self-hosted deployments in small setups, you might host integrations on the same server on which Mattermost is installed. For larger deployments, you can set up a separate server for integrations, or add them to the server on which the external application is hosted.
|
||||
|
||||
For example, if you're self-hosting a Jira server you could deploy a Jira integration on the Jira server itself. When self-hosting restrictions are less strict, AWS, Heroku, and other public cloud options could also be used.
|
||||
|
||||
## Where can I get more information about integrations?
|
||||
|
||||
Join our [Developers channel](https://community.mattermost.com/core/channels/developers) on the Mattermost Community server for technical discussions, and visit our [Integrations channel](https://community.mattermost.com/core/channels/integrations) for all integrations and plugins discussions.
|
||||
|
||||
## Can I use webhooks to be notified when new integrations are available on the Mattermost Marketplace?
|
||||
|
||||
Yes! A [bash script](https://gist.github.com/mickmister/543a49584146af18ba5e5f82dd86ea93) is available that checks for new integrations in the Mattermost Marketplace, and triggers a post through a Mattermost [incoming webhook](https://developers.mattermost.com/integrate/webhooks/incoming/) request. The script downloads the latest listing, compares it with a locally stored version of the listing, and, if a new plugin is identified, a notification is pushed to a Mattermost channel.
|
||||
|
||||
## Can I use Mattermost to add messaging functionality to my proprietary SaaS service?
|
||||
|
||||
Mattermost is an open source, self-hosted alternative to proprietary SaaS services that lock in the data of users and customers.
|
||||
|
||||
While you're welcome to use the Mattermost source code under its open source license, Mattermost, Inc. does not offer support or technical advice for proprietary SaaS projects that result in customers potentially being paywalled from their data should they stop paying SaaS fees.
|
||||
|
||||
To learn more about why we strongly believe that users and customers should always have access to their data, please read [why we created Mattermost](https://mattermost.com/about-us/).
|
||||
|
||||
## Can I customize the source code?
|
||||
|
||||
Yes. As an open source project, we support your ability to modify the source code for the server or web app to make changes and customizations to meet your specific needs.
|
||||
|
||||
Learn about [forking our open source repositories](https://developers.mattermost.com/integrate/other-integrations/customization/) and [customizing the Mattermost source code](https://developers.mattermost.com/integrate/customization/customization/) for your specific operational needs.
|
||||
203
docs/main/integrations-guide/github.mdx
Normal file
203
docs/main/integrations-guide/github.mdx
Normal file
@@ -0,0 +1,203 @@
|
||||
---
|
||||
title: "Connect GitHub to Mattermost"
|
||||
sidebar_label: "GitHub"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Minimize distractions and reduce context switching between your GitHub code repositories and your communication platform by integrating GitHub with Mattermost. Help your teams stay focused and productive with real-time updates on commits, pull requests, issues, and more directly from Mattermost channels.
|
||||
|
||||

|
||||
|
||||
## Deploy
|
||||
|
||||
A Mattermost system admin must perform the following steps to deploy the GitHub integration.
|
||||
|
||||
### Install the integration
|
||||
|
||||
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 GitHub, and select **Install**.
|
||||
|
||||
### Set up the integration
|
||||
|
||||
You can configure the GitHub integration using either the built-in setup wizard (recommended) or by following the manual configuration steps.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="setup-wizard-recommended" label="Setup wizard (recommended)">
|
||||
|
||||
The recommended way to configure the GitHub integration is using the built-in setup wizard. The wizard guides you through each step of the configuration process, including creating the OAuth app and webhook in GitHub.
|
||||
|
||||
1. In any Mattermost channel, run the `/github setup` slash command.
|
||||
2. Follow the interactive prompts to complete the setup.
|
||||
|
||||
The wizard walks you through:
|
||||
|
||||
- Creating and configuring an OAuth app in GitHub
|
||||
- Setting up the webhook connection between GitHub and Mattermost
|
||||
- Announcing the integration to your team
|
||||
|
||||
You can also run individual setup steps at any time using the following subcommands:
|
||||
|
||||
- `/github setup oauth`: Configure the OAuth2 application in GitHub.
|
||||
- `/github setup webhook`: Create a webhook from GitHub to Mattermost.
|
||||
- `/github setup announce`: Announce the integration availability to designated channels.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="manual-configuration" label="Manual configuration">
|
||||
|
||||
If you prefer to configure the integration manually instead of using the setup wizard, follow the steps below.
|
||||
|
||||
**Register an OAuth app in GitHub**
|
||||
|
||||
1. Go to [https://github.com/settings/applications/new](https://github.com/settings/applications/new) to register an OAuth app with GitHub.
|
||||
2. Set the following values:
|
||||
|
||||
> - **Application name**: `Mattermost GitHub Plugin - <YOUR COMPANY NAME>`
|
||||
> - **Homepage URL**: `https://github.com/mattermost/mattermost-plugin-github`
|
||||
> - **Authorization callback URL**: `https://YOUR-MATTERMOST-URL.COM/plugins/github/oauth/complete`, replacing `https://YOUR-MATTERMOST-URL.COM` with your Mattermost URL. This value must match the Mattermost server URL you use to log in.
|
||||
|
||||
3. Save your changes.
|
||||
4. Select **Generate a new client secret**, and enter your GitHub password to continue.
|
||||
5. Copy the **Client ID** and **Client Secret** in the resulting screen.
|
||||
6. In Mattermost, go to **System Console \> Plugins \> GitHub**, and regenerate both a **Webhook Secret** and **At Rest Encryption Key** by selecting **Regenerate** next to each field. You'll need a copy of the **Webhook Secret** value to create a webhook in GitHub.
|
||||
|
||||
<Note>
|
||||
|
||||
We recommend making a copy of your webhook secret and encryption key, as it will only be visible to you once.
|
||||
|
||||
</Note>
|
||||
|
||||
**Create a webhook in GitHub**
|
||||
|
||||
Create a webhook in GitHub to send events to Mattermost. You can create the webhook at either level:
|
||||
|
||||
- **Organization level**: Delivers events for every repository in the organization.
|
||||
- **Repository level**: One webhook per repository you want to send events from to Mattermost.
|
||||
|
||||
<Important>
|
||||
|
||||
Make sure only **one** webhook delivers events for any given repository. If a repository is covered by both an organization-level webhook and a repository-level webhook (or by duplicate webhooks), GitHub delivers each event more than once, and Mattermost posts a duplicate notification for every delivery. If notifications appear two or more times, review the webhooks in your GitHub organization and repository settings, and remove the extras so that exactly one webhook delivers each repository's events.
|
||||
|
||||
</Important>
|
||||
|
||||
<Note>
|
||||
|
||||
When you subscribe a channel to a specific repository using `/github subscriptions add owner/repository` while relying on an **organization-level** webhook, the plugin might report `No webhook was found for this repository or organization` even though the organization-level webhook is delivering events correctly. This check currently only looks for repository-level webhooks; the message is informational and doesn't mean events are missing, so it's safe to ignore. If you prefer to avoid it, deliver that repository's events through a repository-level webhook *instead of* the organization-level webhook.
|
||||
|
||||
</Note>
|
||||
|
||||
1. In GitHub, go to the **Settings** page (for your organization or a specific repository) where you want to send notifications from, then select **Webhooks** in the sidebar.
|
||||
2. Select **Add Webhook**.
|
||||
3. Set the following values:
|
||||
|
||||
> - **Payload URL**: `https://YOUR-MATTERMOST-URL.COM/plugins/github/webhook`. Replace `https://YOUR-MATTERMOST-URL.COM` with your Mattermost URL.
|
||||
> - **Content Type**: `application/json`
|
||||
> - **Secret**: The **Webhook Secret** value you copied earlier.
|
||||
|
||||
4. Under **Which events would you like to trigger this webhook?**, select **Let me select individual events**.
|
||||
5. Select the following events:
|
||||
|
||||
> - Branch or Tag creation
|
||||
> - Branch or Tag deletion
|
||||
> - Discussions
|
||||
> - Discussion comments
|
||||
> - Issue comments
|
||||
> - Issues
|
||||
> - Pull requests
|
||||
> - Pull request review
|
||||
> - Pull request review comments
|
||||
> - Pushes
|
||||
> - Releases
|
||||
> - Stars
|
||||
> - Workflows
|
||||
|
||||
6. Select **Add Webhook** to save your changes.
|
||||
|
||||
**Configure the integration in Mattermost**
|
||||
|
||||
1. Confirm whether your Mattermost deployment has a `github` user account. If it exists, that account posts GitHub messages in channels by default, and the messages won't include a BOT tag. You can change this account behavior to include a BOT tag by using one of the following methods:
|
||||
|
||||
> - Convert the user account to a bot using [mmctl user convert](/administration-guide/manage/mmctl-command-line-tool#mmctl-user-convert).
|
||||
> - Change the existing `github` username to something else. A new bot account called `github` is created the Mattermost server is restarted when the [enable bot account creation](/administration-guide/configure/integrations-configuration-settings#enable-bot-account-creation) configuration setting is enabled.
|
||||
|
||||
2. In Mattermost, go to **System Console \> Plugins \> GitHub** and configure the following settings, then select **Save**:
|
||||
|
||||
> - Enter the **GitHub OAuth Client ID** and **GitHub OAuth Client Secret** obtained during registration.
|
||||
> - (Optional) **GitHub Organization**: Lock the integration to GitHub organizations by specifying a comma seperated list of your GitHub organizations.
|
||||
> - (GitHub Enterprise Only): Set **Enterprise Base URL** and **Enterprise Upload URL** values to your GitHub Enterprise URLs, e.g. `https://github.example.com`. These values are often the same.
|
||||
> - (Mattermost desktop app only) **Display Notification Counters in Left Sidebar**: Display or hide GitHub notification counters in the Mattermost sidebar.
|
||||
> - (Optional) **Enable Private Repositories**: Enable the ability to work with private repositories. Affected users are notified once private repositories are enabled, and must reconnect their GitHub accounts to gain access to private repositories.
|
||||
> - (Optional) **Connect to private Repositories by default**: Connect to private GitHub repositories by default, when private repositories are enabled.
|
||||
> - (Optional) **Enable Code Previews**: Expand permalinks to GitHub files with previews. You can can enable public repositories, public and private repositories, or disable this option.
|
||||
> - (Optional) **Enable Webhook Event Logging**: Log webhook events when log level set to DEBUG by enabling the option.
|
||||
> - (Optional) **Show Author in commit notification**: Show commit author instead of committer in GitHub push event notifications.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-github/releases) for the latest release, available releases, and compatibiilty considerations.
|
||||
|
||||
## Enable
|
||||
|
||||
Once you setup the integration, notify your teams that they can [connect their GitHub accounts to Mattermost](#connect-a-github-account-to-mattermost).
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use GitHub interconnectivity must connect their GitHub account to Mattermost.
|
||||
|
||||
Once connected, you'll receive direct messages from the GitHub bot in Mattermost when someone mentions you, requests a review, comments on, modifies one of your pull requests/issues (includes adding labels or reopening the issue), or assigns you to an issue on GitHub.
|
||||
|
||||
### Connect a GitHub account to Mattermost
|
||||
|
||||
1. In Mattermost, run the `/github connect` slash command in any Mattermost channel to link your Mattermost account with your GitHub account.
|
||||
2. Once connected, run the `/github help` slash command to see what you can do.
|
||||
|
||||
### Get started
|
||||
|
||||
Here are some common slash commands you can get started with:
|
||||
|
||||
Run the `/github subscriptions add` slash command to subscribe a Mattermost channel to receive notifications for new pull requests, issues, branch creation, and more in a GitHub repository.
|
||||
|
||||
For example, to post notifications for issues, issue comments, and pull requests matching the label **Help Wanted** from the `mattermost/mattermost-server` GitHub repository, use: `/github subscriptions add mattermost/mattermost-server --features issues,pulls,issue_comments,label:"Help Wanted"`. The following flags are supported:
|
||||
|
||||
- `--features`: A comma-delimited list of one or more of: issues, pulls, pulls_merged, pulls_created, pushes, creates, deletes, issue_creations, issue_comments, pull_reviews, releases, workflow_success, workflow_failure, discussions, discussion_comments, label:"labelname". Defaults to `pulls,issues,creates,deletes`.
|
||||
- `--exclude-org-member`: The events triggered by organization members that won't be delivered. It will be locked to the organization configured and only works for users whose membership is public. Organization members and collaborators are not the same.
|
||||
- `--include-only-org-members`: events triggered only by organization members will be delivered. It will be locked to the organization provided in the plugin configuration and it will only work for users whose membership is public. Note that organization members and collaborators are not the same.
|
||||
- `--render-style`: Notifications are delivered in the specified style (for example, the body of a pull request will not be displayed). Supported values are `collapsed`, `skip-body`, or `default` (which is the same as omitting the flag).
|
||||
- `--exclude`: A comma-separated list of the repositories to exclude from getting the subscription notifications like `mattermost/mattermost-server`. Only supported for subscriptions to an organization.
|
||||
|
||||
Run the `/github todo` slash command to get a message with items to do in GitHub, including a list of unread messages and pull requests awaiting your review.
|
||||
|
||||
Run the `/github settings` slash command to update your settings for notifications and daily reminders.
|
||||
|
||||
Run the `/github mute` slash command to manage muted GitHub users. You won't receive notifications for comments in your pull requests and issues from muted users.
|
||||
|
||||
Run the `/github default-repo` slash command to set a default repository for the current channel. This repository will be auto-filled in the Create GitHub Issue modal for convenience.
|
||||
|
||||
## Frequently asked questions
|
||||
|
||||
### How do I connect a repository instead of an organization?
|
||||
|
||||
Set up your GitHub webhook from the repository instead of the organization. Notifications and subscriptions will then be sent only for repositories you create webhooks for. The reminder and `/github todo` searches the whole organization, but only show items assigned to you.
|
||||
|
||||
### How do I send notifications when a certain label is applied?
|
||||
|
||||
If you want to send notifications to a Mattermost channel when **Severity/Critical** label is applied to any issue in the `mattermost/mattermost-plugin-github` repository, run the following slash command to subscribe to these notifications: `/github subscriptions add mattermost/mattermost-plugin-github issues,label:"Severity/Critical"`
|
||||
|
||||
### How does the integration save user data for each connected GitHub user?
|
||||
|
||||
GitHub user tokens are AES-encrypted with an **At Rest Encryption Key** generated in Mattermost. Once encrypted, the tokens are saved in the `PluginKeyValueStore` table in your Mattermost database.
|
||||
|
||||
## 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 GitHub plugin repository](https://github.com/mattermost/mattermost-plugin-github).
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [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.
|
||||
215
docs/main/integrations-guide/gitlab.mdx
Normal file
215
docs/main/integrations-guide/gitlab.mdx
Normal file
@@ -0,0 +1,215 @@
|
||||
---
|
||||
title: "Connect GitLab to Mattermost"
|
||||
sidebar_label: "GitLab"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Minimize distractions and reduce context switching between your GitLab code repositories and your communication platform by integrating GitLab with Mattermost. You control which events trigger notifications beyond default events, including merges, issue comments, merge request comments, pipelines, pull reviews, and many more. Help your teams stay focused and productive with daily task summaries, real-time updates and notifications on new and closed merge requests, new and closed issues, and tag creation events, directly from Mattermost channel subscriptions.
|
||||
|
||||
Mattermost supports both Software-as-a-Service (SaaS) and on-premises versions of GitLab.
|
||||
|
||||

|
||||
|
||||
## Deploy
|
||||
|
||||
A Mattermost system admin must perform the following steps to deploy the GitLab integration.
|
||||
|
||||
### Install the integration
|
||||
|
||||
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 GitLab, and select **Install**.
|
||||
|
||||
### Set up the integration
|
||||
|
||||
You can configure the GitLab integration using either the built-in setup wizard (recommended) or by following the manual configuration steps.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="setup-wizard-recommended" label="Setup wizard (recommended)">
|
||||
|
||||
The recommended way to configure the GitLab integration is using the built-in setup wizard. The wizard guides you through each step of the configuration process, including creating the OAuth app in GitLab.
|
||||
|
||||
1. In any Mattermost channel, run the `/gitlab setup` slash command.
|
||||
2. Follow the interactive prompts to complete the setup.
|
||||
|
||||
The wizard walks you through:
|
||||
|
||||
- Creating and configuring an OAuth app in GitLab
|
||||
- Configuring the plugin settings in Mattermost
|
||||
- Announcing the integration to your team
|
||||
|
||||
You can also run individual setup steps at any time using the following subcommands:
|
||||
|
||||
- `/gitlab setup oauth`: Configure the OAuth2 application in GitLab.
|
||||
- `/gitlab setup announce`: Announce the integration availability to designated channels.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="manual-configuration" label="Manual configuration">
|
||||
|
||||
If you prefer to configure the integration manually instead of using the setup wizard, follow the steps below.
|
||||
|
||||
**Register an OAuth app in GitLab**
|
||||
|
||||
1. Go to `https://gitlab.com/-/profile/applications` or `https://gitlab.YOURDOMAIN.com/-/profile/applications`, replacing `YOURDOMAIN.COM` with your GitLab URL, to register an OAuth app with GitLab.
|
||||
2. Set the following values:
|
||||
|
||||
> - **Name**: `Mattermost GitLab Plugin - <YOUR COMPANY NAME>`
|
||||
> - **Redirect URI**: `https://YOUR-MATTERMOST-URL.COM/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete`, replacing `YOUR-MATTERMOST-URL.COM` with your Mattermost URL. This value must match the Mattermost server URL you use to log in.
|
||||
|
||||
3. Select `api` and `read_user` in **Scopes**.
|
||||
4. Save your changes. Copy the **Application ID** and **Secret** fields in the resulting screen.
|
||||
|
||||
**Configure the integration in Mattermost**
|
||||
|
||||
1. In Mattermost, go to **System Console \> Plugins \> GitLab** and configure the following settings, then select **Save**:
|
||||
|
||||
> - Enter the **GitLab URL**, **GitLab OAuth Client ID**, and **GitLab OAuth Client Secret** you obtained when registering the OAuth app in GitLab.
|
||||
>
|
||||
> - Generate a **Webhook Secret** and **At Rest Encryption Key** by selecting **Generate**.
|
||||
>
|
||||
> - (Optional) **GitLab Group**: Lock the integration to a single GitLab group.
|
||||
>
|
||||
> - (Optional) **Enable Private Repositories**: Enable the ability to work with private repositories. Affected users are notified once private repositories are enabled, and must reconnect their GitLab accounts to gain access to private repositories.
|
||||
>
|
||||
> - (Optional) **Enable Child Pipeline Notifications**: When enabled, allows notifications for child pipeline events in addition to parent pipeline events. When disabled, only parent pipeline notifications are sent. This setting helps reduce notification noise in environments with complex CI/CD pipeline structures that use child pipelines extensively.
|
||||
>
|
||||
> - (Optional) **Enable Code Previews**: Control automatic expansion of GitLab file permalinks with code previews. Options include:
|
||||
>
|
||||
> - **Enable for public projects** (Default): Shows previews only for public GitLab repositories.
|
||||
>
|
||||
> - **Enable for public and private projects**: Shows previews for both public and private repositories.
|
||||
>
|
||||
> <div class="warning">
|
||||
>
|
||||
> <div class="title">
|
||||
>
|
||||
> Warning
|
||||
>
|
||||
> </div>
|
||||
>
|
||||
> This setting has the potential to leak confidential code into public channels in cases where users with access to private GitLab repositories post permalinks in public Mattermost channels. The plugin automatically generates previews using the poster's GitLab permissions, allowing other channel members without access to view the confidential code.
|
||||
>
|
||||
> </div>
|
||||
>
|
||||
> - **Disable**: Completely disables code preview functionality.
|
||||
>
|
||||
> **Supported Permalink Types:**
|
||||
>
|
||||
> - Single line permalinks: Shows target line plus 3 lines of context
|
||||
> - File permalinks: Shows file information (no code preview)
|
||||
> - Line range permalinks: Shows file information (no code preview)
|
||||
>
|
||||
> **Preview Limits:**
|
||||
>
|
||||
> - Maximum 10 lines displayed per preview (single line permalinks may show fewer preview lines due to context limits)
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-gitlab/releases) for the latest release, available releases, and compatibility considerations.
|
||||
|
||||
## Enable
|
||||
|
||||
Once you setup the integration, notify your teams that they can [connect their GitLab accounts to Mattermost](#connect-a-gitlab-account-to-mattermost).
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use GitLab interconnectivity must connect their GitLab account to Mattermost.
|
||||
|
||||
Once connected, you'll receive direct messages from the GitLab bot in Mattermost when someone mentions you, requests a review, comments on, or modifies one of your merge requests/issues, or assigns you to an issue on GitLab.
|
||||
|
||||
### Connect a GitLab account to Mattermost
|
||||
|
||||
Run the `/gitlab connect` slash command in any Mattermost channel to link your Mattermost account with your GitLab account.
|
||||
|
||||
Disconnect a GitLab account by running the `/gitlab disconnect` slash command. Run the `/gitlab me` slash command to review which account is connected to GitLab.
|
||||
|
||||
Once connected, run the `/gitlab help` slash command to see what you can do.
|
||||
|
||||
### Get started
|
||||
|
||||
Run the `/gitlab todo` slash command to get a list of to-do's, assigned issues, assigned merge requests and merge requests awaiting your review. Alternatively, use the options located in the left sidebar.
|
||||
|
||||
Run the `/gitlab webhook` slash command to have GitLab send events to Mattermost. For example: `/gitlab webhook add group[/project]`
|
||||
|
||||
### Channel subscriptions
|
||||
|
||||
Run the `/gitlab subscriptions list` to review all of your subscriptions.
|
||||
|
||||
Run the `/gitlab subscriptions add group[/project] [features]` slash command to subscribe a Mattermost channel and receive posts for new merge requests, issues, or other features, from a GitLab project. To unsubscribe and stop receiving posts, run the `/gitlab subscriptions delete group[/project]` slash command.
|
||||
|
||||
The following features are supported for channel subscriptions:
|
||||
|
||||
- `merges` - Get notified when merge requests are merged
|
||||
- `issues` - Get notified when issues are created
|
||||
- `pushes` - Get notified when commits are pushed to a branch
|
||||
- `issue_comments` - Get notified when comments are made on issues
|
||||
- `merge_request_comments` - Get notified when comments are made on merge requests
|
||||
- `tag` - Get notified when tags are created
|
||||
- `pipeline` - Get notified about pipeline events (includes child pipeline events if enabled in plugin configuration)
|
||||
- `wiki` - Get notified about wiki page events
|
||||
- `releases` - Get notified when releases are created
|
||||
- `deployments` - Get notified about deployment events
|
||||
|
||||
For example, to subscribe to release and deployment events: `/gitlab subscriptions add group[/project] releases,deployments`
|
||||
|
||||
For each project you want to receive notifications for or subscribe to, create a webhook in a channel where you want to watch events sent from GitLab by running the `/gitlab webhook` slash command. For example: `/gitlab webhook add group[/project]`
|
||||
|
||||
<Note>
|
||||
|
||||
For GitLab versions prior to 1.2:
|
||||
|
||||
1. In GitLab, go to the project you want to subscribe to, and select **Settings \> Integrations** in the sidebar.
|
||||
2. Set the following values:
|
||||
|
||||
> - **URL**: `https://YOUR-MATTERMOST-URL.COM/plugins/com.github.manland.mattermost-plugin-gitlab/webhook`, replacing `https://YOUR-MATTERMOST-URL.COM` with your Mattermost URL. Ensure that you add `/plugins/com.github.manland.mattermost-plugin-gitlab/webhook` to the URL, or the webhook won't work.
|
||||
> - **Secret Token**: Copy the webhook secret you generated earlier.
|
||||
> - Select all the events in **Triggers**.
|
||||
> - Add the webhook.
|
||||
|
||||
</Note>
|
||||
|
||||
### Create issues and manage comments
|
||||
|
||||
You can create GitLab issues and manage issue comments directly from Mattermost using slash commands and interactive modals.
|
||||
|
||||
#### Create a GitLab issue
|
||||
|
||||
Run the `/gitlab issue create` slash command to open an interactive modal where you can create a new GitLab issue. The modal allows you to perform the following actions:
|
||||
|
||||
- Set the issue title and description
|
||||
- Assign labels
|
||||
- Set the assignee
|
||||
- Choose the milestone
|
||||
- Select the target project
|
||||
|
||||
#### Attach comments to existing issues
|
||||
|
||||
Run the `/gitlab issue comment [issue-number]` slash command to attach a comment to an existing GitLab issue. This opens an interactive modal where you can compose and submit your comment directly from Mattermost.
|
||||
|
||||
### Update settings
|
||||
|
||||
Run the `/gitlab settings [setting] [value]` slash command to update your preferences for the integration:
|
||||
|
||||
- Turn personal notifications on or off.
|
||||
- Turn reminders on or off when you connect initially each day.
|
||||
|
||||
## 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 GitLab plugin repository](https://github.com/mattermost/mattermost-plugin-gitlab).
|
||||
|
||||
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.
|
||||
|
||||
<Tip>
|
||||
|
||||
Watch [this on-demand webinar on release management with Mattermost and GitLab](https://mattermost.com/webinar/release-management-with-gitlab/) to learn how to streamline and standardize your release processes, while reducing the amount of effort required to ship your latest releases.
|
||||
|
||||
</Tip>
|
||||
229
docs/main/integrations-guide/incoming-webhooks.mdx
Normal file
229
docs/main/integrations-guide/incoming-webhooks.mdx
Normal file
@@ -0,0 +1,229 @@
|
||||
---
|
||||
title: "Incoming Webhooks"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
Send or receive real-time data from external tools. Webhooks require minimal coding and are easy to set up with virtually any tool or platform because they use lightweight HTTP POST requests with JSON payloads.
|
||||
|
||||
For richly formatted interactive posts with buttons and menus, see [What are Mattermost Blocks?](/integrations-guide/faq#what-are-mattermost-blocks).
|
||||
|
||||
Using incoming webhooks in Mattermost requires only basic setup. You generate a webhook URL using the Mattermost interface, then point another service to send data to that address. No coding is required if your external service triggering the events is able to send data via webhooks or HTTP POST requests, which most modern applications and platforms support. Setting this up usually involves pasting the Mattermost webhook URL into the service’s settings and selecting what type of events you want it to send.
|
||||
|
||||
## Example Use Cases
|
||||
|
||||
Here are some example use cases for incoming webhooks in Mattermost:
|
||||
|
||||
**Monitoring alerts**
|
||||
|
||||
Send real-time alerts from monitoring systems (such as Prometheus or Datadog) into a dedicated Mattermost channel so your team is immediately notified about system issues or downtime.
|
||||
|
||||
**Build and deployment notifications**
|
||||
|
||||
Post automated updates from CI/CD pipelines (such as Jenkins or GitLab CI) to a channel, keeping developers informed of build status, test results, and deployment progress.
|
||||
|
||||
**Customer support updates**
|
||||
|
||||
Forward new support ticket notifications from systems like Zendesk or ServiceNow into a support channel, ensuring the team can respond quickly to incoming requests.
|
||||
|
||||
## Create
|
||||
|
||||
1. In Mattermost, go to **Product Menu \> Integrations**. If you don't have the **Integrations** option, incoming webhooks may not be enabled on your Mattermost server or may be disabled for non-admins. A System Admin can enable them from **System Console \> Integrations \> Integration Management**.
|
||||
|
||||
> 
|
||||
|
||||
2. From the Integrations page, select **Incoming Webhooks**.
|
||||
|
||||
> 
|
||||
|
||||
3. Select **Add Incoming Webhook**.
|
||||
|
||||
> 
|
||||
|
||||
4. Enter a name and description for the webhook, and then select the channel. You can optionally limit bot posts to a specific channel by selecting **Lock to this channel**, or you can allow the webhook to post to any public channel or private channel the incoming webhook creator is a member of. Note that administrators can enforce channel locking for all incoming webhooks through **System Console \> Integrations \> Integration Management**. Select **Save**.
|
||||
|
||||
> 
|
||||
|
||||
5\. Select **Done** to confirm. Mattermost generates a unique webhook URL, which will look something like this: `https://your-mattermost-server.com/hooks/xxx-generatedkey-xxx`. Treat this URL as a secret. Anyone who has it will be able to post messages to your Mattermost instance.
|
||||
|
||||
> 
|
||||
|
||||
## Use
|
||||
|
||||
To post a message, your application needs to send an HTTP POST request to the webhook URL with a JSON payload in the request body.
|
||||
|
||||
``` bash
|
||||
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "Hello, this is some text\nThis is more text. :tada:"}' https://your-mattermost-server.com/hooks/xxx-generatedkey-xxx
|
||||
```
|
||||
|
||||
A successful request will receive an HTTP 200 response with <code>ok</code> in the response body.
|
||||
|
||||
For compatibility with Slack incoming webhooks, if no `Content-Type` header is set, the request body must be prefixed with `payload=`.
|
||||
|
||||
### Post Examples
|
||||
|
||||
Here are some examples of simple messages posted using incoming webhooks:
|
||||
|
||||
<img src={useBaseUrl('/images/github-incoming-webhook.png')} width="400" alt="Example of a GitHub notification posted to Mattermost using an incoming webhook." />
|
||||
|
||||
<img src={useBaseUrl('/images/jira-incoming-webhook.png')} width="400" alt="Example of a Jira notification posted to Mattermost using an incoming webhook." />
|
||||
|
||||
<img src={useBaseUrl('/images/mattermost-incoming-webhook.png')} width="400" alt="Example of a Mattermost notification posted to Mattermost using an incoming webhook." />
|
||||
|
||||
<img src={useBaseUrl('/images/fastlane-incoming-webhook.png')} width="400" alt="Example of a Fastlane notification posted to Mattermost using an incoming webhook." />
|
||||
|
||||
<img src={useBaseUrl('/images/weblate-incoming-webhook.png')} width="400" alt="Example of a Weblate notification posted to Mattermost using an incoming webhook." />
|
||||
|
||||
## Parameters
|
||||
|
||||
The JSON payload can contain the following parameters:
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style={{width: '20%'}} />
|
||||
<col style={{width: '15%'}} />
|
||||
<col style={{width: '65%'}} />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Parameter</th>
|
||||
<th>Required</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>text</code></td>
|
||||
<td>Yes (if <code>props.mm_blocks</code> is not set)</td>
|
||||
<td><a href="/end-user-guide/collaborate/format-messages">Markdown-formatted</a> message. Use <code>@<username></code>, <code>@channel</code>, and <code>@here</code> for notifications.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>channel</code></td>
|
||||
<td>No</td>
|
||||
<td>Overrides the default channel. Use the channel's name (e.g., <code>town-square</code>), not the display name. Use <code>@<username></code> to send a Direct Message. The webhook can post to any public channel, and any private channel the creator is a member of.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>username</code></td>
|
||||
<td>No</td>
|
||||
<td>Overrides the default username. The <a href="/administration-guide/configure/integrations-configuration-settings#enable-integrations-to-override-usernames">Enable integrations to override usernames</a> setting must be enabled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>icon_url</code></td>
|
||||
<td>No</td>
|
||||
<td>Overrides the default profile picture URL. The <a href="/administration-guide/configure/integrations-configuration-settings#enable-integrations-to-override-profile-picture-icons">Enable integrations to override profile picture icons</a> setting must be enabled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>icon_emoji</code></td>
|
||||
<td>No</td>
|
||||
<td>Overrides the <code>icon_url</code> with an emoji. Use the emoji name (e.g., <code>:tada:</code>). The <a href="/administration-guide/configure/integrations-configuration-settings#enable-integrations-to-override-profile-picture-icons">Enable integrations to override profile picture icons</a> setting must be enabled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>type</code></td>
|
||||
<td>No</td>
|
||||
<td>Sets the post type, mainly for use by plugins. If set, must begin with <code>custom_</code>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>props</code></td>
|
||||
<td>No</td>
|
||||
<td>A JSON object for storing metadata. Use <a href="https://developers.mattermost.com/integrate/reference/mm-blocks/">Mattermost Blocks</a> for rich, interactive content. The <code>card</code> property can be used to display extra Markdown-formatted text in the post's info panel (RHS). This is available in Mattermost v5.14 and later, and is not yet supported on mobile.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>priority</code></td>
|
||||
<td>No</td>
|
||||
<td>Sets the priority of the message. See <a href="https://developers.mattermost.com/integrate/reference/message-priority/">message priorities</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
### Example with Parameters
|
||||
|
||||
``` json
|
||||
{
|
||||
"channel": "town-square",
|
||||
"username": "test-automation",
|
||||
"icon_url": "https://mattermost.com/wp-content/uploads/2022/02/icon.png",
|
||||
"text": "#### Test results for July 27th, 2017\n@channel please review failed tests.\n\n| Component | Tests Run | Tests Failed |\n|:-----------|:-----------:|:-----------------------------------------------|\n| Server | 948 | :white_check_mark: 0 |\n| Web Client | 123 | :warning: 2 [(see details)](https://linktologs) |\n| iOS Client | 78 | :warning: 3 [(see details)](https://linktologs) |"
|
||||
}
|
||||
```
|
||||
|
||||
This renders as:
|
||||
|
||||
<img src={useBaseUrl('/images/incoming_webhooks_full_example.png')} width="400" alt="Example of a webhook post with a custom username, icon, and formatted text." />
|
||||
|
||||
### Example with Card Prop
|
||||
|
||||
Using the `card` property inside `props` will display an info icon on the post. Clicking the icon opens the right-hand sidebar to display the content.
|
||||
|
||||
``` json
|
||||
{
|
||||
"channel": "town-square",
|
||||
"username": "Winning-bot",
|
||||
"text": "#### We won a new deal!",
|
||||
"props": {
|
||||
"card": "Salesforce Opportunity Information:\n\n [Opportunity Name](https://salesforce.com/OPPORTUNITY_ID)\n\n-Salesperson: **Bob McKnight** \n\n Amount: **$300,020.00**"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Slack Compatibility
|
||||
|
||||
Mattermost provides compatibility with Slack's webhook format to make migration easier.
|
||||
|
||||
### Translating Slack's Data Format
|
||||
|
||||
Mattermost automatically translates JSON payloads from Slack format:
|
||||
|
||||
- `[https://mattermost.com/](https://mattermost.com/)` is rendered as a link.
|
||||
- `<https://mattermost.com/|Click here>` is rendered as linked text.
|
||||
- `<userid>` triggers a user mention.
|
||||
- `<!channel>`, `<!here>`, or `<!all>` trigger channel-wide mentions.
|
||||
|
||||
You can also send a direct message by overriding the channel name with `@username`, e.g., `"channel": "@jim"`.
|
||||
|
||||
### Using Mattermost Webhooks in GitLab
|
||||
|
||||
You can use GitLab's built-in Slack integration to send notifications to Mattermost:
|
||||
|
||||
1. In GitLab, go to **Settings \> Services** and select **Slack**.
|
||||
2. Paste the Mattermost incoming webhook URL.
|
||||
3. Optionally, set a **Username**. Leave the **Channel** field blank.
|
||||
4. Select **Save** and test the integration.
|
||||
|
||||
### Known Slack Compatibility Issues
|
||||
|
||||
- Referencing channels using `<#CHANNEL_ID>` is not supported.
|
||||
- `<!everyone>` and `<!group>` are not supported.
|
||||
- `*bold*` formatting is not supported; use `**bold**` instead.
|
||||
- Webhooks cannot send a direct message to the user who created the webhook.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
To debug incoming webhooks, a System Admin can enable **Webhook Debugging** and set the **Console Log Level** to **DEBUG** in **System Console \> Logging**.
|
||||
|
||||
Common error messages include:
|
||||
|
||||
- **Couldn't find the channel**: The channel specified in the `channel` parameter does not exist.
|
||||
- **Couldn't find the user**: The user specified does not exist.
|
||||
- **Unable to parse incoming data**: The JSON payload is malformed.
|
||||
|
||||
If your integration posts the JSON payload as plain text instead of a rendered message, ensure the request includes the `Content-Type: application/json` header.
|
||||
|
||||
## Do More with Incoming Webhooks
|
||||
|
||||
Transform basic message posts into rich, interactive notifications by including buttons, menus, and other interactive elements in your webhook messages, making them more engaging and useful for your team.
|
||||
|
||||
- [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/): Create structured, interactive posts with text, images, buttons, and menus.
|
||||
- [Interactive Dialogs](https://developers.mattermost.com/integrate/plugins/interactive-dialogs/): Guide users to successful outcomes when interactions need structured input or confirmation (for example, “Acknowledge with note” or “Assign to user”). Improve data quality with required fields, minimum/maximum input lengths, server‑driven user/channel pickers, validated defaults, inline field errors, placeholders, and help text that help users enter the right data the first time.
|
||||
- [Message Priority](https://developers.mattermost.com/integrate/reference/message-priority/): Set `priority` to elevate critical posts and optionally request acknowledgements or persistent notifications.
|
||||
|
||||
<Tip>
|
||||
|
||||
- Need a dedicated identity, permissions scoping, or need to post outside of webhook/command flows? Use a [bot account](https://developers.mattermost.com/integrate/reference/bot-accounts/) if you need a more permanent solution than using overrides for simple branding.
|
||||
- If your system later needs to call Mattermost APIs (e.g., post follow-ups, open dialogs), authenticate with a bot user [personal access token](https://developers.mattermost.com/integrate/reference/personal-access-token/). We recommend avoiding human/System Admin personal access tokens for automations and rotating and storing tokens securely.
|
||||
|
||||
</Tip>
|
||||
148
docs/main/integrations-guide/integrations-guide-index.mdx
Normal file
148
docs/main/integrations-guide/integrations-guide-index.mdx
Normal file
@@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "Integrations Guide"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
Mattermost provides a variety of methods to integrate with your favorite tools, automate critical workflows, and extend the capabilities of the platform. This guide provides a high-level overview of integration options and the level of technical skills required [(no-code, low-code, or pro-code)](/integrations-guide/faq#what-is-meant-by-no-code-low-code-and-pro-code), and links to detailed documentation for each.
|
||||
|
||||
## Choose Your Path
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style={{width: '15%'}} />
|
||||
<col style={{width: '40%'}} />
|
||||
<col style={{width: '45%'}} />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Skill Level</th>
|
||||
<th>Best Options</th>
|
||||
<th>Examples</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="/integrations-guide/faq#no-code">No-code</a></td>
|
||||
<td><ul>
|
||||
<li><a href="#pre-built-plugins">Pre-built plugins</a></li>
|
||||
<li><a href="#built-in-slash-commands">Built-in slash commands</a></li>
|
||||
<li><a href="#no-code-automation-platforms">No-code automation</a></li>
|
||||
<li><a href="#mattermost-playbooks">Playbooks</a></li>
|
||||
</ul></td>
|
||||
<td><ul>
|
||||
<li>Connect Jira, GitHub, Zoom</li>
|
||||
<li>Command line interactions</li>
|
||||
<li>Automate with n8n, Zapier</li>
|
||||
<li>Run incident playbooks</li>
|
||||
</ul></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/integrations-guide/faq#low-code">Low-code</a></td>
|
||||
<td><ul>
|
||||
<li><a href="#webhooks">Webhooks</a></li>
|
||||
<li><a href="#custom-slash-commands">Custom slash commands</a></li>
|
||||
</ul></td>
|
||||
<td><ul>
|
||||
<li>Send monitoring alerts</li>
|
||||
<li>Trigger actions with keywords</li>
|
||||
</ul></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/integrations-guide/faq#pro-code">Pro-code</a></td>
|
||||
<td><ul>
|
||||
<li><a href="#restful-api">REST API</a></li>
|
||||
<li><a href="#custom-built-plugins">Custom plugins</a></li>
|
||||
</ul></td>
|
||||
<td><ul>
|
||||
<li>Build custom apps</li>
|
||||
<li>Extend Mattermost core</li>
|
||||
</ul></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
## Integration Options
|
||||
|
||||
### Plugins
|
||||
|
||||
Learn more about [Mattermost plugins](/integrations-guide/plugins).
|
||||
|
||||
#### Pre-Built Plugins
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
Mattermost provides a set of [pre-built plugins](/integrations-guide/popular-integrations) that require no coding to install, configure, and use. These plugins are installed and managed entirely through the System Console, where you can enable, configure, and customize settings without any development work.
|
||||
|
||||
<img src={useBaseUrl('/images/prebuilt-integrations.png')} width="800" alt="Pre-built plugins available for no-code integration" />
|
||||
|
||||
#### Custom-Built Plugins
|
||||
|
||||
**Technical complexity:** [Pro-code](./faq#pro-code)
|
||||
|
||||
[Building custom plugins](/integrations-guide/plugins#custom-built-plugins) are the most comprehensive way to add new features and customization to self-hosted Mattermost deployments. Custom plugins are ideal for customers wanting to change the behavior of the Mattermost server, desktop, and web apps without forking the core codebase to suit their organization’s needs.
|
||||
|
||||
Building a custom plugin is a **software development** task, using `Go` for the server-side functionality and optionally `TypeScript/React` for UI components.
|
||||
|
||||
### Webhooks
|
||||
|
||||
Learn more about [Mattermost webhooks](/integrations-guide/webhook-integrations).
|
||||
|
||||
#### Incoming Webhooks
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
[Incoming webhooks](/integrations-guide/incoming-webhooks) allow external applications to post messages into Mattermost channels and direct messages. They are a simple way to receive notifications and data from other services in real-time and require only basic setup.
|
||||
|
||||
Additionally, Mattermost webhook payloads are [fully compatible](/integrations-guide/incoming-webhooks#slack-compatibility) with Slack’s webhook format to make migration easier. For new interactive content, use [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/) instead of message attachments.
|
||||
|
||||
#### Outgoing Webhooks
|
||||
|
||||
**Technical complexity:** [Low-code](./faq#low-code)
|
||||
|
||||
[Outgoing webhooks](/integrations-guide/outgoing-webhooks) allow Mattermost to send messages and trigger actions in external applications when specific keywords are typed in channels. They are a straightforward way to connect Mattermost conversations to other services and automate responses. Outgoing webhooks require no coding to configure in Mattermost. Some light coding is required to parse the request from the external service and format a JSON response payload.
|
||||
|
||||
### Slash Commands
|
||||
|
||||
Learn more about [Mattermost slash commands](/integrations-guide/slash-commands).
|
||||
|
||||
#### Built-In Slash Commands
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
Out-of-the-box [built-in slash commands](/integrations-guide/built-in-slash-commands) enable command line interaction with users, channels, and conversations.
|
||||
|
||||
#### Custom Slash Commands
|
||||
|
||||
**Technical complexity:** [Low-code](./faq#low-code)
|
||||
|
||||
You can create [custom slash commands](/integrations-guide/slash-commands#custom-slash-commands) that run preconfigured commands that can return a response, such as plain text, rich message content, interactive buttons or forms, directly into a channel.
|
||||
|
||||
Mattermost's slash command format is Slack compatible, so you can easily migrate your commands from Slack.
|
||||
|
||||
### RESTful API
|
||||
|
||||
**Technical complexity:** [Pro-code](./faq#pro-code)
|
||||
|
||||
With [Mattermost's RESTful API](/integrations-guide/restful-api), you have full developer control for automation, bots, and integrations.
|
||||
|
||||
## Build and Automate Workflows
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
In addition to direct tool integrations, Mattermost can be part of larger automated workflows across your integrated services. Automate multi-step processes across Mattermost and other systems, often with no coding required.
|
||||
|
||||
### No-code Automation Platforms
|
||||
|
||||
Platforms like n8n, Zapier, and Make provide powerful visual editors that support thousands of connected tools, with triggers and actions that integrate Mattermost to external services, enabling teams to build complex workflows without writing code. Admins migrating from tools like Slack Workflow Builder can recreate familiar automations in Mattermost using these platforms.
|
||||
|
||||
Learn more about additional [no-code automation options](/integrations-guide/no-code-automation) available in Mattermost.
|
||||
|
||||
### Mattermost Playbooks
|
||||
|
||||
[Mattermost Playbooks](/end-user-guide/workflow-automation/workflow-automation-index) lets you define and execute repeatable processes without any coding. Playbooks are often used for incident response, onboarding checklists, or any workflow that involves multiple steps, owners, and notifications. Playbooks have integration points you can use to trigger actions, and they can work in conjunction with plugins, making them a powerful no-code automation tool for orchestrating both human and system actions.
|
||||
|
||||
Learn more about using [Playbooks](/end-user-guide/workflow-automation/workflow-automation-index).
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
Have questions about coding levels, Slack compatibility, or setup options? Visit the [Integrations FAQ](/integrations-guide/faq).
|
||||
278
docs/main/integrations-guide/jira.mdx
Normal file
278
docs/main/integrations-guide/jira.mdx
Normal file
@@ -0,0 +1,278 @@
|
||||
---
|
||||
title: "Connect Jira to Mattermost"
|
||||
sidebar_label: "Jira"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Minimize distractions, reduce context switching between your project management tool and your communication platform by integrating Jira with Mattermost. You control which events trigger notifications including issue creation, field-specific issue updates, reopened, resolved, or deleted issues, as well as new, updated, or deleted issue comments. Create Jira issues directly from Mattermost conversations, attach messages to Jira issues, transition and assign Jira issues, and follow up on action items in real-time, directly from Mattermost channel subscriptions.
|
||||
|
||||
Mattermost supports versions 7 and 8 of Jira Core and Jira Software products, for Server, Data Center, and Cloud platforms. From v3.0 of this integration, a commercial Mattermost license is required for multiple Jira instances with Mattermost configured using Administrator Slash Commands.
|
||||
|
||||
Jira Service Management (formerly known as Jira Service Desk) isn't supported.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in Mattermost, moves to Jira, and finishes in Mattermost.
|
||||
|
||||
<Note>
|
||||
|
||||
- Jira Core and Jira Software products, for Server, Data Center, and Cloud platforms are supported, and tested with versions 7 and 8.
|
||||
- Jira Service Management (formerly known as Jira Service Desk) isn't supported.
|
||||
- From v3.0 of this integration, support for multiple Jira instances is supported with Mattermost Enterprise and Professional plans, configured using Administrator Slash Commands.
|
||||
|
||||
</Note>
|
||||
|
||||
### Mattermost configuration
|
||||
|
||||
A Mattermost system admin must perform the following steps in Mattermost.
|
||||
|
||||
1. Install the Jira integration from the in-product App Marketplace:
|
||||
|
||||
> 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 Jira, and select **Install**.
|
||||
> 3. Once installed, select **Configure**. You're taken to the System Console.
|
||||
> 4. On the Jira configuration page, enable and configure Jira interoperability as follows, and then select **Save**:
|
||||
>
|
||||
> > - Generate a **Webhook Secret** by selecting **Regenerate**.
|
||||
> >
|
||||
> > <div class="note">
|
||||
> >
|
||||
> > <div class="title">
|
||||
> >
|
||||
> > Note
|
||||
> >
|
||||
> > </div>
|
||||
> >
|
||||
> > We recommend making a copy of your webhook secret, as it will only be visible to you once.
|
||||
> >
|
||||
> > </div>
|
||||
> >
|
||||
> > - **Allow users to attach and create Jira issues in Mattermost**: Enable or disable the user's ability to attach and create Jira issues in Mattermost. When enabled, you must also [install this Jira integration in your Jira instance](#install-jira-integration-in-your-jira-instance).
|
||||
> > - **Mattermost Roles Allowed to Edit Jira Subscriptions**: Specify the Mattermost roles that can edit Jira subscriptions to control which Mattermost users can subscribe channels to Jira tickets.
|
||||
> > - **Jira Groups Allowed to Edit Jira Subscriptions**: (Applies to older Jira v2.4 or earlier deployments only) Specify the Jira groups allowed to edit Jira subscriptions as a comma-separated list of user group names. Leave blank to allow any Jira user the ability to create subscriptions. The user editing a subscription only needs to be a member of one of the listed groups.
|
||||
> > - **Default Subscription Security Level to Empty**: Enable or disable default subscription security level. When enabled, subscriptions only include issues that have a security level assigned when a security level has been included as a filter.
|
||||
> > - **Additional Help Text to be shown with Jira Help**: Define any additional help text to display when users run the `/jira help` slash command.
|
||||
> > - **Hide issue descriptions and comments**: Show or hide issue descriptions and comments from subscription and webhook messages.
|
||||
> > - **Enable slash command**: Enable or disable slash command autocompletion to guide users through available `/jira` slash commands.
|
||||
> > - **Display Subscription name in notifications**: Show or hide subscription name in notification messages posted to a channel.
|
||||
> > - **Admin API Token**: Set an [API token](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/) to get notified for comments and issue creation events, even when the user triggering the event isn't connected to Jira, and set up Autolink. API tokens must be created using an admin Jira account; otherwise, notifications won't be delivered for projects the user can't access, and Autolink won't work.
|
||||
> > - **Admin Email**: Set Admin email to get notified for comment and issue created events even if the user triggering the event is not connected to Jira and setup Autolink for Jira plugin.
|
||||
|
||||
2. Run `/jira setup` to start the wizard to configure the plugin. If you wish to set up the plugin manually, then please follow the steps below.
|
||||
|
||||
### Install Jira integration in your Jira instance
|
||||
|
||||
To enable your users to create and manage Jira issues across Mattermost channels, you must install this Jira integration, as an application, in your Jira instance.
|
||||
|
||||
- For Jira Server or Data Center instances, run the `/jira instance install server <YOUR-JIRA-URL>` slash command in a Mattermost channel as a Mattermost system admin, then follow the steps posted to the channel, replacing `YOUR-JIRA-URL` with your Jira URL. This value must match the Jira server URL you use to log in. Run the `/jira instance uninstall server <YOUR-JIRA-URL>` slash command to uninstall your Jira Server or Data Center instance from your Mattermost instance.
|
||||
- For Jira Cloud, run the `/jira instance install cloud-oauth <YOUR-JIRA-URL>` slash command in a Mattermost channel as a Mattermost system admin, then follow the wizard to complete the setup. Run the `/jira instance uninstall cloud-oauth <YOUR-JIRA-URL>` slash command to uninstall your Jira Cloud instance from your Mattermost.
|
||||
|
||||
### Configure webhooks in Jira
|
||||
|
||||
A Mattermost system admin and a Jira system admin must perform the following steps to configure a single webhook for all possible event triggers, called a firehose, that you would like to be pushed into Mattermost. Mattermost receives a stream of events from the Jira server via a configured webhook, and routes the events to specific channels. A [channel subscription](#manage-channel-subscriptions-in-mattermost) processes the firehose of data, and routes the events to channels based on your subscriptions.
|
||||
|
||||
1. In Mattermost, run the `/jira webhook <YOUR-JIRA-URL>` slash command in a Mattermost channel to get the appropriate webhook URL, replacing `YOUR-JIRA-URL` with your Jira URL.
|
||||
2. In Jira, go to **Jira Settings \> System \> WebHooks**. (For older versions of Jira, select the gear icon in bottom left corner, then go to **Advanced \> WebHooks**.)
|
||||
3. Select **Create a WebHook**.
|
||||
4. Enter a **Name** for the webhook and add the Jira webhook URL you retrieved above in Mattermost as the URL.
|
||||
5. Specify the issue events that will be sent to Mattermost channels by selecting all of the following:
|
||||
|
||||
> - Comments: created, updated, and deleted.
|
||||
> - Issues: created, updated, and deleted.
|
||||
|
||||
6. Select **Save**.
|
||||
|
||||
### Manage channel subscriptions in Mattermost
|
||||
|
||||
Mattermost channel admins can set up notifications they want to receive per channel as subscription rules based on the Jira project, event type, issue type. You can also filter out issues based on its value.
|
||||
|
||||
To modify subscription, users must meet the criteria of both the Mattermost user settings and Jira group settings. If you can subscribe channels to Jira events, you can also set up rules; however, you'll only see the projects and issue types you have access to within Jira. If you can't see a project in Jira, it won't be avaialble as an option.
|
||||
|
||||
If your organization's infrastructure is set up such that your Mattermost instance can't connect to your Jira instance, channel subscriptions won't be avaialable. Instead, use [legacy Webhooks](#legacy-jira-webhooks) instead to allow a Jira webhook to post to a specific channel.
|
||||
|
||||
In any channel, run the `/jira subscribe` slash command to configure the following options:
|
||||
|
||||
- Configure what Jira notifications are sent to the current channel.
|
||||
- Specify filters including: affects versions, epic link, fix versions, labels, and priority.
|
||||
- Specify custom fields including: checkboxes, labels, radio buttons, and select list (single or multiple choice).
|
||||
- Review the approximate JQL output generated. This is not guaranteed to be valid JQL and is only shown as a reference to what the query may look like if converted to JQL.
|
||||
|
||||
Run the `/jira subscribe list` slash command to display all subscription rules set up across all channels and teams on your Mattermost instance.
|
||||
|
||||
#### Legacy Jira webhooks
|
||||
|
||||
If your Mattermost instance can't connect to your Jira instance, you won't be able to subscribe Mattermost channels. You'll need to use legacy webhooks instead.
|
||||
|
||||
1. To generate the webhook URL for a specific channel, run the `/jira webhook` slash command, and use the URL output in the **Legacy Webhooks** section of the output.
|
||||
2. As a Jira system admin, go to **Jira Settings \> System \> WebHooks**. (For older versions of Jira, select the gear icon in bottom left corner, then go to **Advanced \> WebHooks**.)
|
||||
3. Select **Create a WebHook** to create a new webhook. Enter a **Name** for the webhook, and add the Jira webhook URL `https://MATTERMOST-SITE-URL/plugins/jira/webhook?secret=MATTERMOST-WEBHOOK-SECRET&team=MATTERMOST-TEAM-URL&channel=MATTERMOST-CHANNEL-URL` (for Jira 2.1) as the URL.
|
||||
|
||||
> - Replace `MATTERMOST-TEAM-URL` and `MATTERMOST-CHANNEL-URL` with the Mattermost team URL and channel URL you want the Jira events to post to, using lowercase characters.
|
||||
> - Replace `MATTERMOST-SITE-URL` with the site URL of your Mattermost instance.
|
||||
> - Replace `MATTERMOST-WEBHOOK-SECRET` with the secret generated in Mattermost by going to **System Console \> Plugins \> Jira**.
|
||||
|
||||
For example, if the team URL is `contributors`, channel URL is `town-square`, site URL is `https://community.mattermost.com`, and the generated webhook secret is `MYSECRET`, the final webhook URL would be: `https://community.mattermost.com/plugins/jira/webhook?secret=MYSECRET&team=contributors&channel=town-square`.
|
||||
|
||||
4. (Optional) Set a description and a custom JQL query to determine which tickets trigger events. For information on JQL queries, see the [Atlassian help documentation](https://support.atlassian.com/jira-software-cloud/docs/what-is-advanced-search-in-jira-cloud/).
|
||||
5. Set which issue events send messages to Mattermost channels, then select **Save**. The following issue events are supported: issues created, issues deleted, and issues updated (including reopened or resolved when the assignee changes).
|
||||
|
||||
By default, the legacy webhook integration publishes notifications for issue created, resolve, unresolve, reopen, and assign events. To post more events, use the following extra &-separated parameters:
|
||||
|
||||
- `updated_all=1`: all events
|
||||
- `updated_comments=1`: all comment events
|
||||
- `updated_description=1`: updated issue description
|
||||
- `updated_labels=1`: updated issue labels
|
||||
- `updated_priority=1`: updated issue priority
|
||||
- `updated_rank=1`: ranked issue higher or lower
|
||||
- `updated_sprint=1`: assigned issue to a different sprint
|
||||
- `updated_status=1`: transitioned issed to a different status, such as Done or In Progress
|
||||
- `updated_summary=1`: renamed issue
|
||||
|
||||
Here's an example of a webhook configured to create a post for comment events: `https://community.mattermost.com/plugins/jira/webhook?secret=MYSECRET&team=contributors&channel=town-square&updated_comments=1`
|
||||
|
||||
Any previously configured webhooks set up in Jira that point to specific channels are supported and will continue to work.
|
||||
|
||||
### Manage notifications
|
||||
|
||||
Jira notifications are messages sent to a Mattermost channel when a particular event occurs in Jira. They can be managed as [channel subscriptions](#manage-channel-subscriptions-in-mattermost) in Mattermost, or managed as [webhooks](#configure-webhooks-in-jira) in Jira. Notifications and metadata shown in a channel aren't protected by Jira permissions. Anyone in the channel can see what's posted to the channel. However, if users don't have the appropriate permission, they won't be able to see further details of the issue if they try to access it in Jira.
|
||||
|
||||
When any webhook event is received from Jira, and it matches a notification rule, it posts a notification to the channel. If there are no subscription matches, the webhook event is discarded.
|
||||
|
||||
## Enable
|
||||
|
||||
Notify your teams that they can [connect their Jira accounts to Mattermost](#connect-a-jira-account-to-mattermost).
|
||||
|
||||
Do more with Jira interoperabiilty as a Mattermost system admin by using the following slash commands:
|
||||
|
||||
- `/jira instance alias [URL] [ALIAS-NAME]` - Assign an alias to an instance.
|
||||
- `/jira instance unalias [ALIAS-NAME]` - Remove an alias from an instance.
|
||||
- `/jira instance list` - List all installed Jira instances.
|
||||
- `/jira instance v2 <YOUR-JIRA-URL>` - Set the Jira instance to process legacy "v2" webhooks and subscriptions (which aren't prefixed with the instance ID).
|
||||
- `/jira stats` - Display usage statistics.
|
||||
- `/jira webhook [--instance=<YOUR-JIRA-URL>]` - Display the Mattermost webhook that receive JQL queries.
|
||||
- `/jira v2revert` - Revert to the legacy V2 jira integration data model.
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use Jira interconnectivity must connect a Jira account to Mattermost.
|
||||
|
||||
Once connected, you'll receive direct messages from the Jira bot in Mattermost for Jira activity.
|
||||
|
||||
### Connect a Jira account to Mattermost
|
||||
|
||||
1. In Mattermost, run the `/jira connect` slash command in any Mattermost channel to link your Mattermost account with your Jira account. Follow the link into your Jira instance, and select **Allow**.
|
||||
|
||||
If you have multiple Jira instances, run the `/jira instance connect <YOUR-JIRA-URL>` slash command instead to connect to a specific Jira instance.
|
||||
|
||||
2. Once connected, run the `/jira help` slash command to see what you can do.
|
||||
3. To disconnect a Jira account from Mattermost, run the `/jira disconnect` slash command in any Mattermost channel.
|
||||
|
||||
### Get started
|
||||
|
||||
Here are some common slash commands you can get started with:
|
||||
|
||||
- `/jira info` - Display information about the current user and the Jira integration
|
||||
- `/jira connect [jiraURL]` - Connect your Mattermost account to your Jira account
|
||||
- `/jira disconnect [jiraURL]` - Disconnect your Mattermost account from your Jira account
|
||||
- `/jira issue assign [issue-key] [assignee]` - Change the assignee of a Jira issue
|
||||
- `/jira issue create [text]` - Create a new Issue with 'text' inserted into the description field
|
||||
- `/jira issue transition [issue-key] [state]` - Change the state of a Jira issue
|
||||
- `/jira issue unassign [issue-key]` - Unassign the Jira issue
|
||||
- `/jira issue view [issue-key]` - View the details of a specific Jira issue
|
||||
- `/jira instance settings` - View your user settings
|
||||
- `/jira instance settings [setting] [value]` - Update your user settings. `[setting]` can be notifications and `[value]` can be `on` or `off`
|
||||
|
||||
#### Create a Jira issue
|
||||
|
||||
Use the `/jira issue create` slash command to create a Jira issue without leaving Mattermost. You can prepopulate the issue's summary by running `/jira issue create This is my issue's summary`. You're prompted to fill out the issue details.
|
||||
|
||||

|
||||
|
||||
#### Transition Jira issues
|
||||
|
||||
You can transition issues without leaving Mattermost by using the `/jira transition <issue-key> <state>` slash command. States and issue transitions are based on your Jira project workflow configuration. For example, `/jira transition EXT-20 done` transitions the issue key EXT-20 to a `done` state. Partial matches are supported. For example, running the `/jira transition EXT-20 in` slash command transitions the issue to an `in progress` state. However, if your Jira instance includes states of both `in review` and `in progress`, the Jira integration bot will prompt you to clarify which state you want.
|
||||
|
||||
#### Assign Jira issues
|
||||
|
||||
Assign issues to other Jira users without leaving Mattermost using the `/jira assign` command. Partial matches on usernames, firstnames, and lastnames are supported. For example, running the slash command `/jira assign EXT-20 john` transitions the issue EXT-20 to John.
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-jira/releases) for the latest release, available releases, and compatibiilty considerations.
|
||||
|
||||
## Frequenly asked questions
|
||||
|
||||
### How do I disable Jira interoperability?
|
||||
|
||||
You can disable the Jira integration at any time from Mattermost by going to **System Console \> Plugins \> Jira**. Once disabled, any webhook requests coming from Jira are ignored, and users can't create Jira issues from Mattermost.
|
||||
|
||||
### Why isn't the Jira integration posting messages to Mattermost?
|
||||
|
||||
Try the following troubleshooting steps:
|
||||
|
||||
1. Confirm that your [Mattermost Site URL](/administration-guide/configure/environment-configuration-settings#site-url) is configured, and that the webhook created in Jira is pointing to this URL. To ensure the URL is correct, run the `/jira webhook` slash command, then copy the output and paste it into Jira's webhook setup page.
|
||||
2. If you specified a JQL query in your Jira webhook setup, paste the JQL to Jira issue search and make sure it returns results. If it doesn't, the query may be incorrect. Refer to the [Atlassian documentation](https://support.atlassian.com/jira-software-cloud/docs/what-is-advanced-search-in-jira-cloud/) for help. A JQL query isn't required when setting up the webhook.
|
||||
|
||||
If you're using legacy webhooks:
|
||||
|
||||
- Confirm the team URL and channel URL you specified in the Jira webhook URL match up with the path shown in your browser when visiting the channel.
|
||||
- Only events described in the Legacy Webhook documentation are supported.
|
||||
- Use a curl command to make a POST request to the webhook URL. If curl command completes with a `200 OK` response, the integration is configured correctly. For instance, you can run the following command:
|
||||
|
||||
``` sh
|
||||
curl -X POST -v "https://<YOUR-MATTERMOST-URL>/plugins/jira/webhook?secret=<YOUR-SECRET>&team=<YOUR-TEAM>&channel=<YOUR-CHANNEL>&user_id=admin&user_key=admin" --data '{"event":"some_jira_event"}'
|
||||
```
|
||||
|
||||
Replace `<YOUR-MATTERMOST-URL>`, `<YOUR-SECRET>`, `<YOUR-TEAM>`, and `<YOUR-SECRET>` with your setup when configuring the Jira integration. The curl command won't post a message in your Mattermost channel.
|
||||
|
||||
### Can admins restrict who can create or attach Mattermost messages to Jira issues?
|
||||
|
||||
Yes, Mattermost system admins can disable this functionality by going to **System Console \> Plugins \> Jira** to disable the **Allow users to attach and create Jira issues in Mattermost** option.
|
||||
|
||||
### How does Mattermost know which Jira issues users can access?
|
||||
|
||||
Mattermost only displays static messages in the channel, and doesn't enforce Jira permissions on viewers in a channel.
|
||||
|
||||
Any messages in a channel can be seen by all users of that channel. Subscriptions to Jira issues should be made carefully to avoid unwittingly exposing sensitive Jira issues in a public channel for example. Exposure is limited to the information posted to the channel. To transition an issue, or re-assign it the user needs to have the appropriate permissions in Jira.
|
||||
|
||||
### Why must every user authenticate with Jira?
|
||||
|
||||
The authentication with Jira lets the JiraBot provide personal notifications for each Mattermost/Jira user whenever they are mentioned on an issue, comment on an issue, or have an issue assigned to them. Additionally, the integration uses their authentication information to perform actions on their behalf. Tasks such as searching, viewing, creating, assigning, and transitioning issues all abide by the permissions granted to the user within Jira.
|
||||
|
||||
Users will need to temporarily enable third-party cookies in their browser during the Jira authentication process.
|
||||
|
||||
### What does the error message `'/(name)' not found` mean?
|
||||
|
||||
If you see the error `'/(name)' not found` in Mattermost, disable the Jira integration, check the log file looking for messages that refer to plugins and health check fail, such as `ExecuteCommand`, etc. And consider [enabling debug logging](/administration-guide/manage/logging#how-do-i-enable-debug-logging) to log more verbose error events in the Mattermost system log. Then try re-enabling Jira interoperability and review the log file for clues.
|
||||
|
||||
Debug logging can cause log files to expand substantially, and may adversely impact the server performance. Keep an eye on your server logs, or only enable it temporarily or in development environments, and not production enviornments.
|
||||
|
||||
### Why do I get a webhooks error?
|
||||
|
||||
If you see a `WebHooks can only use standard http and https ports (80 or 443)` error, it indicates that you're using a non-standard port. Jira only allows webhooks to connect to the standard ports 80 and 443. You need to set up a proxy between Jira and your Mattermost instance to let Jira communicate over port 443.
|
||||
|
||||
### How do I handle credential rotation for the Jira webhook?
|
||||
|
||||
Generate a new secret by going to **System Console \> Plugins \> Jira**. Paste the new webhook URL in your Jira webhook configuration.
|
||||
|
||||
## Customize
|
||||
|
||||
This integration contains both a server and web app portion. 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.
|
||||
|
||||
## Get help
|
||||
|
||||
Customers with a Mattermost subscription can open a [Mattermost support case](https://support.mattermost.com/hc/en-us/requests/new). Community deployments can report a bug by opening a GitHub issue against the [Mattermost Jira plugin repository](https://github.com/mattermost/mattermost-plugin-jira), or visit the Mattermost [peer-to-peer troubleshooting forum](https://forum.mattermost.com/c/trouble-shoot/16) to access the global Mattermost Community for assistance.
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [Integrations and Apps channel](https://community.mattermost.com/core/channels/integrations) on the [Mattermost Community Server](https://community.mattermost.com/) for assistance.
|
||||
|
||||
<Tip>
|
||||
|
||||
Download [this Jira workflows datasheet](https://mattermost.com/mattermost-jira-datasheet/) to learn more about using Mattermost and Jira, including:
|
||||
|
||||
- Key benefits to integrating Jira and Mattermost
|
||||
- Common Jira Workflows on Mattermost
|
||||
- How to get started with the Jira plugin for Mattermost
|
||||
|
||||
</Tip>
|
||||
@@ -0,0 +1,169 @@
|
||||
---
|
||||
title: "Connect Microsoft 365, Teams, and Outlook with Mattermost"
|
||||
sidebar_label: "Microsoft 365 and Outlook"
|
||||
---
|
||||
<PlanAvailability slug="entry-ent" />
|
||||
|
||||
Mattermost Mission Collaboration for Microsoft extends Microsoft for mission-critical coordination, command and control, incident response, and DevSecOps workflows in demanding environments, including air-gapped and classified networks by embedding Mattermost inside Teams. Use data-sovereign tools like secure chat, Playbooks, and Calls directly within M365, Teams, and Outlook.
|
||||
|
||||
This app is designed to work with Microsoft 365, Teams, and Outlook and is currently in [Beta](/administration-guide/manage/feature-labels#beta). From Mattermost v10.7.1, this integration supports Entra ID-based Single Sign-On (SSO) for automatic authentication. Users must exist in both Mattermost and Microsoft with matching email addresses; the integration handles authentication but does not automatically provision new users. See the [single sign-on](/administration-guide/onboard/corporate-directory-integration) product documentation for details on setting up SSO.
|
||||
|
||||

|
||||
|
||||
## Deploy
|
||||
|
||||
Before starting the setup, review this section to familiarize yourself with the 3 components needed to integrate Mattermost with M365, including [Azure App registration](#register-an-ms-teams-app-in-azure), [Microsoft Teams App installation](#install-mattermost-in-microsoft-teams), and [Mattermost plugin configuration](#configure-the-mattermost-plugin). Each component plays a crucial role in ensuring seamless communication and collaboration between Mattermost and Microsoft 365 services. Then complete the following integration setup steps in the order listed below.
|
||||
|
||||
### Register an MS Teams app in Azure
|
||||
|
||||
An application must be registered in Microsoft Azure to enable secure authentication and authorization between Mattermost and M365 services. This app registration acts as the bridge for permissions and connectivity. The **Azure App** is responsible for authentication and managing permissions.
|
||||
|
||||
1. Sign in to the [Azure portal](https://portal.azure.com/) using an admin Azure account.
|
||||
2. Go to your **Azure Portal \> Microsoft Entra ID**.
|
||||
3. Create a new app registration by selecting the **Add application registration** "Quick Action":
|
||||
|
||||
> 
|
||||
>
|
||||
> - Give it a name.
|
||||
> - Choose the "Accounts in this organizational directory only (single tenant)" option.
|
||||
> - Leave the Redirect URI empty.
|
||||
>
|
||||
> 
|
||||
|
||||
4. Go to your newly created application and copy the **Application (client) ID** and **Directory (tenant) ID** values. You'll need those later to configure the plugin.
|
||||
|
||||
> 
|
||||
|
||||
5. Go to **Certificates and secrets** to generate a new client secret. Make a copy of the secret value, as it will only be shown once. You'll need this value to configure the plugin.
|
||||
|
||||
> 
|
||||
|
||||
6. Go to **API Permissions** to complete the following steps:
|
||||
|
||||
> - Ensure the `User.Read` **delegated** permission is added. See the [Microsoft SSO documentation](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-register-aad#enable-sso-in-microsoft-entra-id) for details.
|
||||
> - Add the **Microsoft Graph API** `TeamsActivity.Send` **application** permission for notifications. See the [Microsoft notifications documentation](https://learn.microsoft.com/en-us/graph/teams-send-activityfeednotifications?tabs=desktop%2Chttp) for details.
|
||||
> - Add the **Microsoft Graph API** `AppCatalog.Read.All` **application** permission for notifications. See the [Microsoft List teamsApp documentation](https://learn.microsoft.com/en-us/graph/api/appcatalogs-list-teamsapps?view=graph-rest-1.0&tabs=http) for details.
|
||||
> - Grant admin consent for the default directory to prevent users from seeing the consent prompt.
|
||||
|
||||
7. Go to **Expose an API** to complete the following steps:
|
||||
|
||||
> - Add/edit a **Application ID URI** and set the value to `api://{{Mattermost Site URL Hostname}}/{{Application (client) ID}}`.
|
||||
>
|
||||
> - Add the `access_as_user` scope by selecting **Add a scope** and setting the following values:
|
||||
>
|
||||
> - **Scope name**: `access_as_user`.
|
||||
> - **Who can consent?** Admins and users
|
||||
> - Provide a display name and description, as well as a user consent display name and description. These will be shown to end users on the consent screen. For example:
|
||||
> - **Display name**: Log in to Mattermost
|
||||
> - **Description**: Used to allow O365 users to log in to the Mattermost application
|
||||
> - **User consent display name**: Log in to Mattermost
|
||||
> - **User consent description**: This permission is required to automatically log you in into Mattermost from Microsoft applications.
|
||||
>
|
||||
> See the [Microsoft API scope documentation](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-register-aad#to-configure-api-scope) for details.
|
||||
>
|
||||
> - Add authorised client applications for the scope. See the [Microsoft authorized client documentation](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-register-aad#to-configure-authorized-client-application) for details.
|
||||
> - Select `_Add a client application_`. **You must add a client application for each target Microsoft application**:
|
||||
> - **Authorised scopes**: The one we just created
|
||||
> - **Client ID**:
|
||||
> - **Teams web**: 5e3ce6c0-2b1f-4285-8d4b-75ee78787346
|
||||
> - **Teams app**: 1fec8e78-bce4-4aaf-ab1b-5451cc387264
|
||||
> - **Outlook desktop** : d3590ed6-52b3-4102-aeff-aad2292ab01c
|
||||
> - **Outlook web** : bc59ab01-8403-45c6-8796-ac3ef710b3e3
|
||||
> - If you want to make your application available in more Microsoft applications, keep adding client applications from [the following table](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/tab-sso-register-aad#to-configure-authorized-client-application:~:text=Select%20one%20of%20the%20following%20client%20IDs%3A).
|
||||
|
||||

|
||||
|
||||
### Configure the Mattermost plugin
|
||||
|
||||
A Microsoft Teams app is installed into Microsoft Teams. This app facilitates collaboration between Mattermost and Teams, providing a tab containing Mattermost within the Teams client. The **Teams App** is installed within Microsoft Teams to enable collaboration via a tab.
|
||||
|
||||
1. Download the [latest release of the plugin](https://github.com/mattermost/mattermost-plugin-msteams-devsecops/releases).
|
||||
|
||||
2. Go to **System Console \> Plugins \> Plugin Management \> Upload Plugin**, and upload the plugin binary you downloaded in the previous step.
|
||||
|
||||
3. Go to **System Console \> Plugins \> Plugin Management**. In the **Installed Plugins** section, scroll to **Mattermost Mission Collaboration for Microsoft**.
|
||||
|
||||
4. Enter an **Application Version**. You can start with `1.0.0`.
|
||||
|
||||
5. Generate an Application ID in [version 4 UUID format](https://www.uuidgenerator.net/) and enter it in the **Application ID** field.
|
||||
|
||||
6. Enter the values you noted earlier in the appropriate fields, including **Directory (tenant) ID**, **Application (client) ID**, and **Client Secret**.
|
||||
|
||||
> 
|
||||
|
||||
7. Enter an **Application Display Name** to define how your application is named in the MS Teams App Store. Make it company specific for easy discovery.
|
||||
|
||||
8. Save the changes and enable the plugin.
|
||||
|
||||
9. Select the **Download Manifest** button to generate the MS Teams application as a ZIP file, containing the app manifest. Save this file as it will be used in the next steps.
|
||||
|
||||
### Install Mattermost in Microsoft Teams
|
||||
|
||||
Within Mattermost, the Mattermost Mission Collaboration for Microsoft plugin needs to be installed and configured. This plugin acts as the integration hub on the Mattermost side, connecting to both the Azure App and the Teams App. The **Mattermost Plugin** is the configuration point within Mattermost that unifies the integration.
|
||||
|
||||
1. Go to the [Microsoft Teams admin center](https://admin.teams.microsoft.com/dashboard).
|
||||
|
||||
2. Go to **Teams apps \> Manage apps**.
|
||||
|
||||
> 
|
||||
|
||||
3. Go to **Actions \> Upload new app** located in the upper-right corner of the Manage apps page.
|
||||
|
||||
4. Select **Upload** and select the ZIP file saved previously.
|
||||
|
||||
5. Done! Your application is now available to users.
|
||||
|
||||
## Use
|
||||
|
||||
### Add the app
|
||||
|
||||
Once the application is deployed, your users can add the Mattermost app to their Microsoft Teams environment. Inform your users to:
|
||||
|
||||
1. Open Microsoft Teams and go to **Apps** in the left sidebar.
|
||||
2. Search for the **Application Display Name** you configured in the plugin settings (step 7 of the [Configure the Mattermost plugin](#configure-the-mattermost-plugin) section).
|
||||
3. The app will display a **Built for your org** tag, indicating it's a custom application approved for your organization.
|
||||
4. Select the app and then select **Add** to install it in their Teams environment.
|
||||
|
||||
Once added, users can access Mattermost directly within Microsoft Teams through the app tab.
|
||||
|
||||

|
||||
|
||||
### Authentication
|
||||
|
||||
This plugin supports automatic authentication when logged into Microsoft Teams. Teams authentication automatically logs users into Mattermost if the email addresses in both platforms match exactly. Regular authentication methods (LDAP, SAML, email/password, OpenID) can additionally be used for Mattermost.
|
||||
|
||||
The integration automatically configures Content Security Policy (CSP) and Frame Ancestors settings to ensure secure embedding of Mattermost within Microsoft Teams, Outlook, and other Microsoft 365 applications. Deep linking is supported, allowing users to select links in Teams notifications and navigate directly to specific Mattermost posts or conversations.
|
||||
|
||||
In air-gapped environments or during business continuity disruptions, users who can't join Microsoft Teams, can continue to access Mattermost using their Mattermost credentials by opening Mattermost in a separate app (e.g., in a new browser window). Alternatively, a Mattermost admin can pre-distribute the Mattermost desktop app using Windows MSI or the mobile app via EMM.
|
||||
|
||||

|
||||
|
||||
### Activity Feed notifications
|
||||
|
||||
When you're mentioned in Mattermost while working in Microsoft Teams, you'll receive notifications directly in your Teams Activity Feed. This keeps you connected to important Mattermost conversations without switching applications.
|
||||
|
||||
**What triggers notifications:**
|
||||
|
||||
- Direct mentions using @username
|
||||
- Channel-wide mentions using @channel, @all, or @here
|
||||
- Direct messages sent to you
|
||||
|
||||
**How it works:**
|
||||
|
||||
When someone mentions you in Mattermost, a notification appears in your Microsoft Teams Activity Feed. Select the notification to open Mattermost and view the full context of the message. This feature uses the `TeamsActivity.Send` permission configured during the Azure app registration setup.
|
||||
|
||||
**Disable notifications:**
|
||||
|
||||
System admins can disable Activity Feed notifications for specific users or across your organization by configuring the `disable_user_activity_notifications` setting in the plugin configuration. This setting is useful if you want to reduce notification noise or if users prefer to check Mattermost manually.
|
||||
|
||||
<Note>
|
||||
|
||||
Activity Feed notifications require the `TeamsActivity.Send` application permission to be configured in Azure (step 6 of the [Register an MS Teams app in Azure](#register-an-ms-teams-app-in-azure) section).
|
||||
|
||||
</Note>
|
||||
|
||||
## Get Help
|
||||
|
||||
Customers with a Mattermost subscription can open a [Mattermost support case](https://support.mattermost.com/hc/en-us/requests/new).
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [Integrations and Apps channel](https://community.mattermost.com/core/channels/integrations) on the [Mattermost Community Server](https://community.mattermost.com/) for assistance.
|
||||
132
docs/main/integrations-guide/microsoft-calendar.mdx
Normal file
132
docs/main/integrations-guide/microsoft-calendar.mdx
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
title: "Connect Microsoft Calendar to Mattermost"
|
||||
sidebar_label: "Microsoft Calendar"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Connect your Microsoft M365 Calendar to your Mattermost instance to receive daily summaries of calendar events, synchronize your M365 status in Mattermost, and accept or decline calendar invites from Mattermost.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in Microsoft Azure and ends in Mattermost.
|
||||
|
||||
### Create a Mattermost App in Azure
|
||||
|
||||
1. Sign in to [portal.azure.com](https://portal.azure.com) using an admin Azure account.
|
||||
2. Navigate to [App Registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps)
|
||||
3. Select **New registration** at the top of the page.
|
||||
|
||||
> 
|
||||
|
||||
4. Fill out the form with the following values. Select **Register** to submit the form.
|
||||
|
||||
> - **Name**: Mattermost MS Calendar Plugin
|
||||
> - **Supported account types**: Default value (Single tenant)
|
||||
> - **Redirect URI**: `https://<MM_SITE_URL>/plugins/com.mattermost.mscalendar/oauth2/complete` Replace `<MM_SITE_URL>` with your Mattermost server's Site URL. Select **Register** to submit the form.
|
||||
>
|
||||
> 
|
||||
|
||||
5. Go to **Certificates & secrets** in the left pane.
|
||||
|
||||
> 
|
||||
|
||||
6. Select **New client secret \> Add**, and copy the new secret in the bottom right corner of the screen. We'll use this value later in the Mattermost System Console.
|
||||
|
||||
> 
|
||||
|
||||
7. Go to **API permissions** in the left pane.
|
||||
|
||||
> 
|
||||
|
||||
8. Select **Add a permission**, then **Microsoft Graph** in the right pane.
|
||||
|
||||
> 
|
||||
|
||||
9. Select **Delegated permissions**, and scroll down to select the following permissions. Select **Add permissions** to submit the form:
|
||||
|
||||
> - `Calendars.ReadWrite`
|
||||
> - `Calendars.ReadWrite.Shared`
|
||||
> - `MailboxSettings.Read`
|
||||
>
|
||||
> 
|
||||
|
||||
10. Add application permissions by going to **Add a permission \> Microsoft Graph \> Application permissions**, and select **Add permissions** to submit the form.
|
||||
11. Select the following permissions, and then select **Grant admin consent for mattermost** to grant the permissions for the application.
|
||||
|
||||
> - `Calendars.Read`
|
||||
> - `MailboxSettings.Read`
|
||||
> - `User.Read.All`
|
||||
>
|
||||
> 
|
||||
>
|
||||
> 
|
||||
|
||||
You're all set for configuration in the Azure portal.
|
||||
|
||||
### Install the Microsoft Calendar Integration
|
||||
|
||||
1. Log in to your Mattermost [workspace](/end-user-guide/end-user-guide-index) as a system admin.
|
||||
2. 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**.
|
||||
3. Search for or scroll to Microsoft Calendar, and select **Install**.
|
||||
4. Once installed, select **Configure**. You're taken to the System Console, directly to the **Microsoft Calendar** integration page, under **Plugins**.
|
||||
|
||||
<Note>
|
||||
|
||||
From Mattermost v9.11.2 (ESR) and Mattermost Cloud v10, this plugin is pre-packaged with the Mattermost Server. If your Mattermost deployment is on a release prior to v9.11.2, download the [latest plugin binary release](https://github.com/mattermost/mattermost-plugin-mscalendar/releases), and upload it to your server via **System Console \> Plugin Management**.
|
||||
|
||||
</Note>
|
||||
|
||||
### Enable and configure the Microsoft Calendar Integration in Mattermost
|
||||
|
||||
1. In Azure, copy the **Application (client) ID** and **Directory (tenant) ID** from the Azure portal.
|
||||
|
||||
> 
|
||||
|
||||
2. In Mattermost, go to **System Console \> Plugins \> Microsoft Calendar** to enable this integration.
|
||||
3. Copy the **Application (client) ID** and **Directory (tenant) ID** from the Azure portal.
|
||||
4. In Mattermost, enter the following values in the fields provided. Select **Save** to apply the configuration:
|
||||
|
||||
> - **Admin User IDs** - A comma-separated list of [user IDs](/administration-guide/configure/user-management-configuration-settings#identify-a-users-id) for authorized users who can manage this integration.
|
||||
> - **Copy plugin logs to admins, as bot messages** - Select the log level for logs.
|
||||
> - **Display full context for each admin log message** - Show or hide full context for all log entries.
|
||||
> - **Azure - Directory (tenant) ID** - Paste the **Directory (tenant) ID** from the Azure portal.
|
||||
> - **Azure - Application (client) ID** - Paste the **Application (client) ID** from the Azure portal.
|
||||
> - **Microsoft Office Client Secret** - Copy from the Azure portal (generated in **Certificates & secrets** earlier in these instructions).
|
||||
|
||||
Notify your teams that they can [connect their Microsoft Office accounts to Mattermost](#connect-a-microsoft-calendar-account-to-mattermost).
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use Microsoft Calendar interconnectivity must connect a Microsoft Office account to Mattermost.
|
||||
|
||||

|
||||
|
||||
Once connected, you'll receive direct messages from the Microsoft Calendar bot in Mattermost for Microsoft Calendar activity.
|
||||
|
||||

|
||||
|
||||
See your upcoming events for the current day by typing `/mscalendar today` in the message input box.
|
||||
|
||||

|
||||
|
||||
A list of all supported slash commands are available by typing `/mscalendar help` in the message input box.
|
||||
|
||||

|
||||
|
||||
You can customize your notification preferences by typing `/mscalendar settings` in the message input box.
|
||||
|
||||

|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-mscalendar/releases) for the latest release, available releases, and compatibiilty considerations.
|
||||
|
||||
## Get help
|
||||
|
||||
Customers with a Mattermost subscription can open a [Mattermost support case](https://support.mattermost.com/hc/en-us/requests/new). Community deployments can report a bug by opening a GitHub issue against the [Mattermost Microsoft Calendar plugin repository](https://github.com/mattermost/mattermost-plugin-mscalendar).
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [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.
|
||||
119
docs/main/integrations-guide/microsoft-teams-meetings.mdx
Normal file
119
docs/main/integrations-guide/microsoft-teams-meetings.mdx
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: "Connect Microsoft Teams Meetings to Mattermost"
|
||||
sidebar_label: "Microsoft Teams Meetings"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Start and join voice calls, video calls, and use screen sharing with your team members in Microsoft Teams without leaving Mattermost.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in Microsoft Azure and ends in Mattermost.
|
||||
|
||||
### Create a Mattermost App in Azure
|
||||
|
||||
1. Sign in to the [Azure portal](https://portal.azure.com) using an admin Azure account.
|
||||
2. Navigate to [App Registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps).
|
||||
3. Select **New registration** at the top of the page.
|
||||
|
||||
> 
|
||||
|
||||
4. Fill out the form with the following values, then select **Register** to submit the form:
|
||||
|
||||
> - **Name**: Mattermost Microsoft Teams Meetings Plugin
|
||||
> - **Supported account types**: Default value (Single tenant)
|
||||
> - **Redirect URI**: `https://<MM_SITE_URL>/plugins/com.mattermost.msteamsmeetings/oauth2/complete`. Replace `<MM_SITE_URL>` with your Mattermost server's Site URL.
|
||||
>
|
||||
> 
|
||||
|
||||
5. Go to **Certificates & secrets** in the left pane.
|
||||
|
||||
> 
|
||||
|
||||
6. Select **New client secret \> Add**, then copy the new secret in the bottom right corner of the screen. We'll use this value later in the Mattermost System Console.
|
||||
|
||||
> 
|
||||
|
||||
7. Go to **API permissions** in the left pane.
|
||||
|
||||
> 
|
||||
|
||||
8. Select **Add a permission** and select **Microsoft Graph** in the right pane.
|
||||
|
||||
> 
|
||||
|
||||
9. Select **Delegated permissions**, and scroll down to select the `OnlineMeetings.ReadWrite` permissions. Select **Add permissions** to submit the form.
|
||||
|
||||
> 
|
||||
|
||||
10. Select **Grant admin consent for mattermost** to grant the permissions for the application.
|
||||
|
||||
> 
|
||||
|
||||
You're all set for configuration inside of the Azure portal.
|
||||
|
||||
### Install the Microsoft Teams Meetings integration
|
||||
|
||||
1. Log in to your Mattermost [workspace](/end-user-guide/end-user-guide-index) as a system admin.
|
||||
2. 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**.
|
||||
3. Search for or scroll to MS Teams Meetings, and select **Install**.
|
||||
4. Once installed, select **Configure**. You're taken to the System Console, directly to the **MS Teams Meetings** integration page, under **Plugins**.
|
||||
|
||||
<Note>
|
||||
|
||||
From Mattermost v9.11.2 (ESR) and Mattermost Cloud v10, this plugin is pre-packaged with the Mattermost Server. If your Mattermost deployment is on a release prior to v9.11.2, download the [latest plugin binary release](https://github.com/mattermost/mattermost-plugin-msteams-meetings/releases), and upload it to your server via **System Console \> Plugin Management**.
|
||||
|
||||
</Note>
|
||||
|
||||
### Enable and configure the Microsoft Teams Meetings integration in Mattermost
|
||||
|
||||
1. In Azure, copy the **Application (client) ID** and **Directory (tenant) ID** from the Azure portal.
|
||||
|
||||
> 
|
||||
|
||||
2. In Mattermost, go to **System Console \> Plugins \> MS Teams Meetings** to enable this integration.
|
||||
3. In Mattermost, enter the following values in the fields provided. Select **Save** to apply the configuration:
|
||||
|
||||
> - **Azure - Directory (tenant) ID** - Paste the **Directory (tenant) ID** from the Azure portal.
|
||||
> - **Azure - Application (client) ID** - Paste the **Application (client) ID** from the Azure portal.
|
||||
> - **Azure - Application (client) Secret** - Copy from the Azure portal (generated in **Certificates & secrets** earlier in these instructions).
|
||||
|
||||
Notify your teams that they can [connect their Microsoft Teams Meetings accounts to Mattermost](#connect-a-microsoft-teams-account-to-mattermost).
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use MS Teams Meetings interconnectivity must connect a Microsoft Teams Meetings account to Mattermost.
|
||||
|
||||
Once connected, you'll receive direct messages from the Microsoft Teams Meetings bot in Mattermost for Microsoft Teams Meetings activity.
|
||||
|
||||
### Connect a Microsoft Teams account to Mattermost
|
||||
|
||||
Use the <code>/mstmeetings connect</code> slash command to connect an MS Teams account to Mattermost.
|
||||
|
||||
### Start a call
|
||||
|
||||
Start a call either by selecting the video icon in a Mattermost channel or by running the <code>/mstmeetings start</code> slash command. Every meeting you start creates a new meeting room in Microsoft Teams.
|
||||
|
||||
<Note>
|
||||
|
||||
If you start two meetings less than 30 seconds apart you'll be prompted to confirm that you want to create the meeting.
|
||||
|
||||
</Note>
|
||||
|
||||
### Disconnect a Microsoft Teams account from Mattermost
|
||||
|
||||
Run the <code>/mstmeetings disconnect</code> slash command to disconnect a Microsoft Teams account from Mattermost.
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-mscalendar) for the latest release, available releases, and compatibiilty considerations.
|
||||
|
||||
## Get help
|
||||
|
||||
Customers with a Mattermost subscription can open a [Mattermost support case](https://support.mattermost.com/hc/en-us/requests/new). Community deployments can report a bug by opening a GitHub issue against the [Microsoft Teams Notifications plugin](https://github.com/mattermost/mattermost-plugin-msteams-meetings).
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [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.
|
||||
156
docs/main/integrations-guide/microsoft-teams-sync.mdx
Normal file
156
docs/main/integrations-guide/microsoft-teams-sync.mdx
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: "Connect Microsoft Teams to Mattermost"
|
||||
sidebar_label: "Microsoft Teams Sync"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="entry-ent" />
|
||||
|
||||
Break through siloes in a mixed Mattermost and Microsoft Teams environment by forwarding real-time chat notifications from Microsoft Teams to Mattermost.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in Microsoft Teams and ends in Mattermost.
|
||||
|
||||
### Set up an OAuth application in Azure
|
||||
|
||||
1. Sign into [portal.azure.com](https://portal.azure.com) using an admin Azure account.
|
||||
2. Navigate to [App Registrations](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps).
|
||||
3. Select **New registration** at the top of the page.
|
||||
|
||||
> 
|
||||
|
||||
4. Fill out the form with the following values:
|
||||
|
||||
> - **Name**: `Mattermost MS Teams`
|
||||
> - **Supported account types**: `Default value (Single tenant)`
|
||||
> - **Platform**: `Web`
|
||||
> - **Redirect URI**: `https://(MM_SITE_URL)/plugins/com.mattermost.msteams-sync/oauth-redirect`
|
||||
|
||||
Replace `(MM_SITE_URL)` with your Mattermost server's Site URL. Select **Register** to submit the form.
|
||||
|
||||
> 
|
||||
|
||||
5. From this screen, make note of the **Application (client) ID** and **Directory (tenant) ID**, needed later to configure the plugin in Mattermost.
|
||||
|
||||
> 
|
||||
|
||||
6. Navigate to **Certificates & secrets** in the left pane.
|
||||
7. Select **New client secret**. Enter the description and select **Add**. After the creation of the client secret, copy the new secret value, not the secret ID. We'll use this value later in the Mattermost System Console.
|
||||
|
||||
> 
|
||||
|
||||
8. Navigate to **API permissions** in the left pane.
|
||||
9. Select **Add a permission**, then **Microsoft Graph** in the right pane.
|
||||
|
||||
> 
|
||||
|
||||
10. Select **Delegated permissions**, and scroll down to select the following permissions:
|
||||
|
||||
> - `Chat.Read`
|
||||
> - `ChatMessage.Read`
|
||||
> - `Files.Read.All`
|
||||
> - `offline_access`
|
||||
> - `User.Read`
|
||||
|
||||
11. Select **Add permissions** to submit the form.
|
||||
12. Next, add application permissions via **Add a permission \> Microsoft Graph \> Application permissions**.
|
||||
13. Select the following permissions:
|
||||
|
||||
> - `Chat.Read.All`
|
||||
> - `Presence.Read.All`
|
||||
|
||||
14. Select **Add permissions** to submit the form.
|
||||
15. Select **Grant admin consent for...** to grant the permissions for the application.
|
||||
|
||||
### Ensure you have the metered APIs enabled (and the pay subscription associated to it)
|
||||
|
||||
Subscribing to chat notifications requires assocating the OAuth App with a paid Azure subscription. To complete this setup, follow the instructions at [https://learn.microsoft.com/en-us/graph/metered-api-setup](https://learn.microsoft.com/en-us/graph/metered-api-setup).
|
||||
|
||||
<Important>
|
||||
|
||||
If you don't configure the metered APIs, you must use the **Evaluation model** (configurable in Mattermost) that is limited to a low rate of changes per month. We strongly recommend that you avoid using the Evaluation model configuration in live production environments because you can stop receiving messages due the rate limit. See [this Microsoft documentation](https://learn.microsoft.com/en-us/graph/teams-licenses) for more details.
|
||||
|
||||
</Important>
|
||||
|
||||
You're all set for configuration inside Azure.
|
||||
|
||||
### Install and configure the Microsoft Teams integration in Mattermost
|
||||
|
||||
<Important>
|
||||
|
||||
These installation instructions assume you already have a Mattermost instance running v9.8.0 (or later) and configured to use PostgreSQL. This Mattermost integration doesn't support MySQL databases.
|
||||
|
||||
</Important>
|
||||
|
||||
1. Log in to your Mattermost [workspace](/end-user-guide/end-user-guide-index) as a system admin.
|
||||
2. 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**.
|
||||
3. Search for or scroll to MS Teams, and select **Install**.
|
||||
4. Once installed, select **Configure**. You're taken to the System Console.
|
||||
5. Configure the **Tenant ID**, **Client ID**, and **Client Secret** with the values obtained from setting up the OAuth App in Azure above.
|
||||
|
||||
See the [Microsoft Teams plugin configuration settings](/administration-guide/configure/plugins-configuration-settings#ms-teams) documentation for additional configuration options.
|
||||
|
||||
<Note>
|
||||
|
||||
- From Mattermost v9.11.2 (ESR) and Mattermost Cloud v10, v2.0 of this plugin is pre-packaged with the Mattermost Server. If your Mattermost deployment is on a release prior to v9.11.2, download the [latest plugin binary release](https://github.com/mattermost/mattermost-plugin-msteams), and upload it to your server via **System Console \> Plugin Management**.
|
||||
- We recommend making a copy of your webhook secret and encryption key, as it will only be visible to you once.
|
||||
|
||||
</Note>
|
||||
|
||||
## Monitor performance
|
||||
|
||||
You can set up [performance monitoring](/administration-guide/scale/deploy-prometheus-grafana-for-performance-monitoring) and [performance alerting](/administration-guide/scale/performance-alerting) for this plugin using Prometheus and Grafana.
|
||||
|
||||
- Monitoring enables you to proactively review the overall health of the plugin, including database calls, HTTP requests, and API latency.
|
||||
- Alerting enables you to detect and take action as issues come up, such as the integration being offline.
|
||||
|
||||
Grafana dashboards [are available on GitHub](https://github.com/mattermost/mattermost-plugin-msteams/tree/main/server/metrics/dashboards) for Mattermost Cloud deployments as a useful starting point. These dashboards are designed for use in Mattermost Cloud, and filter to a given `namespace`.
|
||||
|
||||

|
||||
|
||||
<Note>
|
||||
|
||||
Modifications will be necessary for self-hosted Mattermost deployments. See the [Get help](#get-help) section below for details on how to contact us for assistance.
|
||||
|
||||
</Note>
|
||||
|
||||
## Use
|
||||
|
||||
See the [collaborate within connected microsoft teams](/end-user-guide/collaborate/collaborate-within-connected-microsoft-teams) product documentation to start receiving Microsoft Teams notifications.
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-msteams) for the latest release, available releases, and compatibiilty considerations.
|
||||
|
||||
## Frequently asked questions
|
||||
|
||||
### My email address in Mattermost doesn't match my email address in Microsoft Teams: can I still connect?
|
||||
|
||||
No. Currently, only accounts with the same email addresses are allowed to be connected. Specify the email address that matches your Mattermost account.
|
||||
|
||||
If connecting a Mattermost account to a Microsoft Teams account with a different email address is something your workspace requires, there is an open [GitHub issue](https://github.com/mattermost/mattermost-plugin-msteams/issues/519) for you to share your feedback.
|
||||
|
||||
### How is encryption handled at rest and in motion?
|
||||
|
||||
The configured client secret, stored in the Mattermost configuration, is used for app-only access to the the Microsoft Graph API. As users connect to Microsoft Teams using the integration, the resulting access tokens are encrypted and stored in the Mattermost database to be used for access on behalf of the connected user. All communication between the integration and the Microsoft Graph API is conducted via TLS.
|
||||
|
||||
When notifications are enabled, chats and file attachments received by connected users will be stored as posts in the direct message channel between that user and the bot account created by the integration.
|
||||
|
||||
### Are there any database or network security considerations?
|
||||
|
||||
There is nothing specific to the integration that is beyond what would apply to a Mattermost instance.
|
||||
|
||||
### Are there any compliance considerations (ie. GDPR, PCI)?
|
||||
|
||||
There is nothing specific to the integration that is beyond what would apply to a Mattermost instance.
|
||||
|
||||
### How is this integration architectured?
|
||||
|
||||
The integration subscribes to change notifications from the Microsoft Graph API. These change notifications inform Mattermost about new or updated chats within Microsoft Teams. Upon receipt of the change notification, the integration uses a combination of its app-only access (via the client secret) and delegated acess (via connected users) to fetch the contents of these chats and represent them appropriately within Mattermost.
|
||||
|
||||
## 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 for Microsoft Teams Notifications plugin repository](https://github.com/mattermost/mattermost-plugin-msteams).
|
||||
|
||||
For questions, feedback, and assistance, join our pubic [Integrations and Apps channel](https://community.mattermost.com/core/channels/integrations) on the [Mattermost Community Server](https://community.mattermost.com/) for assistance.
|
||||
119
docs/main/integrations-guide/no-code-automation.mdx
Normal file
119
docs/main/integrations-guide/no-code-automation.mdx
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: "No-Code Automation"
|
||||
---
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
Platforms like n8n, Zapier, or Make provide powerful visual editors that support thousands of connected tools, with triggers and actions that integrate Mattermost to external services, enabling teams to build complex workflows without writing code. Admins migrating from tools like Slack Workflow Builder can recreate familiar automations in Mattermost using these platforms.
|
||||
|
||||
When used in combination with outgoing webhooks or custom slash commands, users can trigger complex workflows and automations without leaving Mattermost. By pointing a webhook or slash command at the unique URL these automation tools provide, any message or keyword in Mattermost can initiate a workflow. This allows you to capture context from conversations and pass it into external systems — for example, creating tickets, updating records, or starting multi-step automations.
|
||||
|
||||
Choosing the best platform for your team depends on your specific integration requirements, hosting preferences, and technical capabilities. Learn more about the capabilities of each platform below:
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="n8n" label="n8n">
|
||||
|
||||
[n8n](https://n8n.io/) is ideal for organizations prioritizing data residency and security, since it is self-hosted and can be supported in air-gapped environments where cloud solutions like Zapier and Make might not be feasible.
|
||||
|
||||
Additionally, n8n supports both [no-code](./faq#no-code) and [low-code](./faq#low-code) approaches, making it flexible for technical and semi-technical users. Being open source means there’s a large community of people sharing their custom workflows and automations that can either be used directly or iterated on to meet your specific requirements.
|
||||
|
||||
n8n stands out for offering rich AI integration, enabling you to combine automation with AI-powered workflows. Its [native AI Agent node](https://n8n.io/ai/) lets you integrate large language models, vector databases, and other AI services directly into your automations. This means you can build workflows in Mattermost that not only react to events but also analyze context, summarize discussions, or make decisions based on AI output.
|
||||
|
||||
Explore building workflows with the [Mattermost n8n integration](https://n8n.io/integrations/mattermost/).
|
||||
|
||||
## Supported Triggers
|
||||
|
||||
- MattermostTrigger (community node): Listens for Mattermost events via WebSocket events, such as new post and users added.
|
||||
|
||||
You can also use outgoing webhooks or slash commands in Mattermost as triggers using the [Webhook node](https://n8n.io/integrations/webhook/).
|
||||
|
||||
## Supported Actions
|
||||
|
||||
- Channels
|
||||
- Add a user to a channel
|
||||
- Create a new channel
|
||||
- Soft delete a channel
|
||||
- Restore a soft deleted channel
|
||||
- Get statistics for a channel
|
||||
- Messages
|
||||
- Post a message into a channel
|
||||
- Post an ephemeral message into a channel
|
||||
- Soft delete a post
|
||||
- Reactions
|
||||
- Add a reaction to a post
|
||||
- Remove a reaction from a post
|
||||
- Get all reactions to one or more posts
|
||||
- Users
|
||||
- Create a new user
|
||||
- Deactivate a user (archive, revoke sessions)
|
||||
- Invite user to a team
|
||||
|
||||
## Supported Searches
|
||||
|
||||
- Search for a channel
|
||||
- Get a user by email
|
||||
- Get a user by ID
|
||||
- Retrieve all users
|
||||
- Retrieve members of a channel
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="make" label="Make">
|
||||
|
||||
Make offers a more visual and flexible approach to automation, allowing you to build complex workflows with advanced logic and data manipulation. Make offers one of the most expansive sets of out-of-the-box triggers and actions for Mattermost.
|
||||
|
||||
Make is hosted in the cloud, and excels at more complex multi-step workflows while still keeping the configuration non-technical.
|
||||
|
||||
Explore building workflows with the [Mattermost Make integration](https://www.make.com/en/integrations/mattermost).
|
||||
|
||||
## Supported Triggers
|
||||
|
||||
- Watch New Posts: Fires when a new post is added.
|
||||
- Watch New Posts Pinned for a Channel: Fires when a post is pinned in a channel.
|
||||
- Watch New Users: Fires when a new user is added.
|
||||
|
||||
## Supported Actions
|
||||
|
||||
- Add a User to a Team: Add a user into a specific team.
|
||||
- Check if the Team Exists: Verify whether a team exists by name.
|
||||
- Create a Command: Add a custom command within a team.
|
||||
- Create a New User: Create a user account on the Mattermost system.
|
||||
- Create a Post: Post a message in a channel.
|
||||
- Deactivate a User Account: Archive or disable a user account.
|
||||
- Delete a Command: Remove a command by its ID.
|
||||
- Delete a Post: Remove a post.
|
||||
- Execute a Command: Run or trigger an existing command.
|
||||
|
||||
You can also use outgoing webhooks or slash commands in Mattermost as triggers using the [Webhook app](https://www.make.com/en/integrations/gateway).
|
||||
|
||||
## Supported Searches
|
||||
|
||||
- Get a Channel: Retrieve a channel by its ID.
|
||||
- Get a Post: Retrieve a post by its ID.
|
||||
- Get a File: Retrieve an uploaded file by its ID.
|
||||
- Get a User: Retrieve a user by their user ID.
|
||||
- Get a Team by Name: Retrieve team information by team name.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="zapier" label="Zapier">
|
||||
|
||||
Zapier is ideal for non-technical users who want the fastest path to connect Mattermost with over 7000+ SaaS apps. It’s hosted in the cloud, easy to set up, and best for common business workflows.
|
||||
|
||||
Zapier’s strength is the breadth of integrations. Without coding, you can integrate Mattermost with everything from CRMs to social media. This is perfect for non-technical users who want to automate notifications or routine tasks, such as posting daily reports or sending Mattermost channel messages when forms are submitted. Zapier provides a user-friendly wizard and template library to get started quickly.
|
||||
|
||||
Explore building workflows with the [Mattermost Zapier integration](https://zapier.com/apps/mattermost/integrations).
|
||||
|
||||
## Supported Triggers
|
||||
|
||||
- Zapier does not natively support triggers in Mattermost. If you want Mattermost to trigger a Zapier workflow, you can use outgoing webhooks or slash commands in combination with [Zapier’s Webhooks trigger](https://zapier.com/apps/webhook/integrations). For example, you could configure an outgoing webhook in Mattermost to hit Zapier when a certain keyword is posted, which Zapier treats as a trigger to then perform actions in other apps.
|
||||
|
||||
## Supported Actions
|
||||
|
||||
- Compared with the wide range of triggers and actions supported by n8n or Make, Zapier supports only one action: posting a message.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
243
docs/main/integrations-guide/outgoing-webhooks.mdx
Normal file
243
docs/main/integrations-guide/outgoing-webhooks.mdx
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
title: "Outgoing Webhooks"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
**Technical complexity:** [Low-code](./faq#low-code)
|
||||
|
||||
Outgoing webhooks can be used to create rich, interactive experiences in Mattermost by letting external services respond with [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/)—structured content with buttons, menus, and other interactive elements. Additionally, these responses can trigger interactive dialog forms where users provide additional input directly in Mattermost. Together, these capabilities turn simple keyword triggers into powerful in-product workflows that streamline how teams interact with external systems, all with minimal coding required.
|
||||
|
||||
Outgoing webhooks require no coding to configure on in Mattermost, however the external service that receives the HTTP POST request needs to process the data, and then format and send a respond with a message back to Mattermost. This usually requires light coding to parse the request and format a JSON response payload, though many [automation platforms](/integrations-guide/integrations-guide-index#build-and-automate-workflows) handle this without writing custom code.
|
||||
|
||||
Learn more about [outgoing webhooks](/integrations-guide/outgoing-webhooks).
|
||||
|
||||
## Example Use Cases
|
||||
|
||||
Here are some example use cases for outgoing webhooks in Mattermost:
|
||||
|
||||
**Issue tracking integration**
|
||||
|
||||
When a user types `bug` in a channel, an outgoing webhook sends the message to an external service that parses the details and responds with an interactive dialog in Mattermost. The user can enter fields like priority, description, and assignee, and submitting the dialog automatically creates a ticket in your ticketing software.
|
||||
|
||||
**Knowledge base lookup**
|
||||
|
||||
A keyword like `docs` triggers an outgoing webhook that queries a documentation service and returns a response with [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/) listing suggested articles, each with clickable buttons or menus. Users can refine their search or open links without leaving Mattermost.
|
||||
|
||||
**Security incident enrichment**
|
||||
|
||||
Typing a keyword like `ioc` (indicator of compromise) in a security channel can trigger an outgoing webhook that queries a threat intelligence platform. The response can return [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/) with reputation scores, related incidents, and quick-action buttons for escalating, investigating, or dismissing the alert.
|
||||
|
||||
## Create
|
||||
|
||||
1. In Mattermost, go to **Product Menu \> Integrations**. If you don't have the **Integrations** option, outgoing webhooks may not be enabled on your Mattermost server or may be disabled for non-admins. A System Admin can enable them from **System Console \> Integrations \> Integration Management**.
|
||||
|
||||
> 
|
||||
|
||||
2. From the Integrations page, select **Outgoing Webhooks**.
|
||||
|
||||
> 
|
||||
|
||||
3. Select **Add Outgoing Webhook**.
|
||||
|
||||
> 
|
||||
|
||||
4. Enter a name and description for the webhook.
|
||||
5. Specify the **Content Type** for the request.
|
||||
|
||||
> - `application/json` will send a JSON object.
|
||||
> - `application/x-www-form-urlencoded` will encode the parameters in the URL.
|
||||
|
||||
6. Specify a **Channel** and/or one or more **Trigger Words**.
|
||||
|
||||
> - If you specify a channel, the webhook will only fire for messages in that channel.
|
||||
> - If you specify trigger words, the webhook will only fire when a message starts with one of those words.
|
||||
> - If both are specified, the message must match both conditions.
|
||||
> - If you leave the channel blank, the webhook will listen to all public channels in your team.
|
||||
> - If you leave the trigger words blank, the webhook will respond to all messages in the selected channel.
|
||||
>
|
||||
> 
|
||||
|
||||
7. Set one or more **Callback URLs** that the HTTP POST requests will be sent to. Select **Save**.
|
||||
|
||||
> 
|
||||
|
||||
8. Copy the **Token** value. This token is used to verify that the requests are coming from Mattermost.
|
||||
|
||||

|
||||
|
||||
## Use
|
||||
|
||||
When a message triggers the webhook, Mattermost will send an HTTP POST request to the callback URL(s) you specified.
|
||||
|
||||
### Request Payload
|
||||
|
||||
The request body will contain the following data (either as JSON or URL-encoded, depending on the content type you selected):
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style={{width: '25%'}} />
|
||||
<col style={{width: '75%'}} />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Parameter</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>token</code></td>
|
||||
<td>The token generated when you created the webhook.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>team_id</code></td>
|
||||
<td>The ID of the team the message was posted in.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>team_domain</code></td>
|
||||
<td>The domain of the team.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>channel_id</code></td>
|
||||
<td>The ID of the channel the message was posted in.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>channel_name</code></td>
|
||||
<td>The name of the channel.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>timestamp</code></td>
|
||||
<td>The time the message was posted.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>user_id</code></td>
|
||||
<td>The ID of the user who posted the message.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>user_name</code></td>
|
||||
<td>The username of the user who posted the message.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>post_id</code></td>
|
||||
<td>The ID of the post.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>text</code></td>
|
||||
<td>The full text of the message.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>trigger_word</code></td>
|
||||
<td>The trigger word that was matched.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Your application should validate the `token` to ensure the request is from Mattermost.
|
||||
|
||||
### Response Payload
|
||||
|
||||
Your application can respond to the POST request with a JSON object to post a message back to Mattermost.
|
||||
|
||||
``` json
|
||||
{
|
||||
"text": "| Component | Tests Run | Tests Failed |\n|:-----------|:----------|:-------------|\n| Server | 948 | :white_check_mark: 0 |"
|
||||
}
|
||||
```
|
||||
|
||||
This would render in Mattermost as:
|
||||
|
||||

|
||||
|
||||
## Response Parameters
|
||||
|
||||
The JSON response can contain the following parameters:
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style={{width: '20%'}} />
|
||||
<col style={{width: '80%'}} />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Parameter</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>text</code></td>
|
||||
<td>(Required unless <code>attachments</code> or <code>props.mm_blocks</code> is set) <a href="/end-user-guide/collaborate/format-messages">Markdown-formatted</a> message.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>response_type</code></td>
|
||||
<td>Set to <code>comment</code> to reply to the message that triggered the webhook. Defaults to <code>post</code>, which creates a new message.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>username</code></td>
|
||||
<td>Overrides the default username. Requires <a href="/administration-guide/configure/integrations-configuration-settings#enable-integrations-to-override-usernames">Enable integrations to override usernames</a> to be enabled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>icon_url</code></td>
|
||||
<td>Overrides the default profile picture. Requires <a href="/administration-guide/configure/integrations-configuration-settings#enable-integrations-to-override-profile-picture-icons">Enable integrations to override profile picture icons</a> to be enabled.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>attachments</code></td>
|
||||
<td>Legacy array of <a href="https://developers.mattermost.com/integrate/reference/message-attachments/">message attachment</a> objects. Use Mattermost Blocks for new integrations.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>type</code></td>
|
||||
<td>Sets the post type, mainly for plugins. If set, must begin with <code>custom_</code>.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>props</code></td>
|
||||
<td>A JSON object for storing metadata. Use <a href="https://developers.mattermost.com/integrate/reference/mm-blocks/">Mattermost Blocks</a> for rich, interactive content.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>priority</code></td>
|
||||
<td>Sets the priority of the message. See <a href="https://developers.mattermost.com/integrate/reference/message-priority/">message priorities</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
### Example with Parameters
|
||||
|
||||
``` json
|
||||
{
|
||||
"response_type": "comment",
|
||||
"username": "test-automation",
|
||||
"icon_url": "https://mattermost.com/wp-content/uploads/2022/02/icon.png",
|
||||
"text": "#### Test results for July 27th, 2017\n@channel here are the requested test results.",
|
||||
"props": {
|
||||
"test_data": {
|
||||
"server": 948,
|
||||
"web": 123,
|
||||
"ios": 78
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This response would produce a threaded reply to the original message that triggered the webhook.
|
||||
|
||||
<img src={useBaseUrl('/images/outgoing_webhooks_full_example.png')} width="400" alt="Example of a full response from an outgoing webhook." />
|
||||
|
||||
You can also include [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/) in your response to create more advanced workflows.
|
||||
|
||||
## Do More with Outgoing Webhooks
|
||||
|
||||
Turn keyword-triggered callbacks into guided, in-channel workflows by returning buttons, menus, and other interactive elements in your webhook responses so users can act immediately.
|
||||
|
||||
- [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/): Return structured, interactive content with text, buttons, and menus.
|
||||
- [Interactive Dialogs](https://developers.mattermost.com/integrate/plugins/interactive-dialogs/): When a button/menu click requires more info (e.g., “Acknowledge with note”, “Assign to user”), open a dialog to collect structured inputs with required fields, min/max lengths, server-driven user/channel pickers, validated defaults, inline field errors, placeholders, and help text.
|
||||
- [Message Priority](https://developers.mattermost.com/integrate/reference/message-priority/): Include `priority` in your response to mark critical updates and optionally request acknowledgements or persistent notifications.
|
||||
|
||||
<Note>
|
||||
|
||||
- Outgoing webhook responses support Mattermost Blocks and interactive actions. The outgoing webhook <code>response_type</code> accepts <code>post</code> or <code>comment</code>. When a user clicks an action, the callback payload includes a <code>trigger_id</code> field that can be used to open an interactive dialog; the trigger ID isn't a request signature. Return <code>ephemeral_text</code> in the action response when feedback should be visible only to the user who clicked the action.
|
||||
- Need a dedicated identity, permissions scoping, or need to post outside of webhook/command flows? Use a [bot account](https://developers.mattermost.com/integrate/reference/bot-accounts/) if you need a more permanent solution than using overrides for simple branding.
|
||||
- If your command backend needs to call Mattermost APIs (e.g., posting messages, ephemeral posts, opening interactive dialogs, etc.), authenticate with a bot user [personal access token](https://developers.mattermost.com/integrate/reference/personal-access-token/). We recommend avoiding human/System Admin personal access tokens for automations and rotating and storing tokens securely.
|
||||
- Looking to support private channels, direct messages, and autocomplete? Use a [built-in slash command](/integrations-guide/built-in-slash-commands), or create a [custom slash command](https://developers.mattermost.com/integrate/slash-commands/custom/). You can additionally integrate Mattermost with custom integrations hosted within your internal OAuth infrastructure [using the Client Credentials OAuth 2.0 grant type](https://developers.mattermost.com/integrate/slash-commands/outgoing-oauth-connections/). Mattermost also makes it easy to [migrate integrations written for Slack to Mattermost](https://developers.mattermost.com/integrate/slash-commands/slack/).
|
||||
|
||||
</Note>
|
||||
32
docs/main/integrations-guide/plugins.mdx
Normal file
32
docs/main/integrations-guide/plugins.mdx
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "Plugins"
|
||||
---
|
||||
## Pre-built plugins
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
Mattermost's pre-built plugins make it simple for teams to extend Mattermost with powerful integrations for project management, incident response, monitoring, and collaboration. With simple configuration steps, you can quickly connect Mattermost to widely used tools such as Jira, GitHub, GitLab, Zoom, ServiceNow and others, enabling powerful integrations that enhance collaboration and streamline workflows out of the box.
|
||||
|
||||
Learn more about which [pre-built integrations are available and how to install them](/integrations-guide/popular-integrations), including the first-party Mattermost plugins.
|
||||
|
||||
As a system admin, see the [install and manage plugins](/administration-guide/configure/manage-plugins) documentation for step-by-step instructions on installing, enabling, configuring, updating, and removing plugins.
|
||||
|
||||
<Tip>
|
||||
|
||||
The [Mattermost Marketplace](https://mattermost.com/marketplace/) offers an expanded selection of community supported integrations.
|
||||
|
||||
</Tip>
|
||||
|
||||
## Custom-built plugins
|
||||
|
||||
**Technical complexity:** [Pro-code](./faq#pro-code)
|
||||
|
||||
Building a custom plugin for your self-hosted deployment is a **software development** task, using `Go` for the server-side functionality and optionally `TypeScript/React` for UI components. Developers should be comfortable with Git, modern build tooling, and the [Mattermost Plugin API](https://developers.mattermost.com/integrate/reference/server/), including lifecycle hooks, KV storage, slash commands, and interactivity. Knowledge of testing, logging, and security best practices is essential for production-ready plugins, along with experience packaging and deploying plugins through the System Console or CLI. For teams without these skills, simpler options like webhooks, slash commands, or no-code workflow tools may be more practical.
|
||||
|
||||
Plugins can authenticate and interact with Mattermost through [bot accounts](https://developers.mattermost.com/integrate/reference/bot-accounts/), utilizing the [RESTful API](https://developers.mattermost.com/api-documentation/).
|
||||
|
||||
From Mattermost v11.5, plugins can register a Channel Header Icon component that places an icon next to the **Files** button in the channel header. This pluggable location is designed for channel-level actions such as custom workflows, analysis, or summarization tools.
|
||||
|
||||
Plugins can also register Channel Settings tabs for channel-specific configuration. A tab can use a declarative settings schema rendered by Mattermost, or a custom React component that owns the tab body while Mattermost provides the save bar.
|
||||
|
||||
Learn more about [building your own plugin](https://developers.mattermost.com/integrate/plugins/).
|
||||
53
docs/main/integrations-guide/popular-integrations.mdx
Normal file
53
docs/main/integrations-guide/popular-integrations.mdx
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "Pre-built integrations"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
Accelerate your operational and technical workflows by connecting Mattermost with your mission-critical tools through pre-built integrations.
|
||||
|
||||
## Mattermost integrations
|
||||
|
||||
Designed for teams that need reliability, auditability, and ownership of their collaboration stack, the following Mattermost collaboration integrations keep your data all inside your secure Mattermost ecosystem. Reduce tool sprawl, strengthen security, improve compliance posture, all with a seamless user experience.
|
||||
|
||||
| Mattermost Integration | How to Get It | What It Does |
|
||||
| --- | --- | --- |
|
||||
| [Mattermost Channel Export](/administration-guide/comply/export-mattermost-channel-data) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Exports channel history and data for compliance purposes. |
|
||||
| [Mattermost Legal Hold](/administration-guide/comply/legal-hold) | Manual Upload | Keeps a copy of messages and files so they cannot be deleted for legal or compliance needs. |
|
||||
| [Mattermost Metrics](/administration-guide/scale/collect-performance-metrics) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Shows numbers about system performance when people use Mattermost. |
|
||||
| [Mattermost User Survey](/administration-guide/configure/manage-user-surveys) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Collects feedback by asking questions directly in Mattermost channels. |
|
||||
|
||||
## Microsoft integrations
|
||||
|
||||
If your organization relies on Microsoft tools, Mattermost offers deep integrations with M365, Teams, Outlook, and Calendar to keep collaboration seamless and secure. These integrations allow you to enhance and extend Microsoft tools while maintaining Mattermost as your central hub. By connecting Mattermost with Microsoft apps, you reduce context switching, strengthen reliability through secure fallback options, and ensure your workflows stay efficient across both platforms.
|
||||
|
||||
| Microsoft Integration | Where to Get It | What It Does |
|
||||
| --- | --- | --- |
|
||||
| [Mattermost Embedded for M365, Teams, and Outlook](/integrations-guide/mattermost-mission-collaboration-for-m365) | Manual Upload | Embed Mattermost in Microsoft apps. Use Outlook and Teams together with Mattermost for secure backup and extra features. |
|
||||
| [Microsoft Calendar](/integrations-guide/microsoft-calendar) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Sends your Microsoft Calendar reminders into Mattermost so you don't miss events. |
|
||||
| [Microsoft Teams Meetings](/integrations-guide/microsoft-teams-meetings) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Lets you start or join Microsoft Teams meetings directly from Mattermost. |
|
||||
| [Microsoft Teams Sync](/integrations-guide/microsoft-teams-sync) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Copies messages from Microsoft Teams into Mattermost (one-way) to keep conversations in sync. |
|
||||
|
||||
## Third-party integrations
|
||||
|
||||
The following integrations bring key external tools (DevOps, ITSM, monitoring, and meetings) into Mattermost, so teams can see updates, take action, and collaborate faster without leaving their secure chat environment.
|
||||
|
||||
| Third-Party Integration | Where to Get It | What It Does |
|
||||
| --- | --- | --- |
|
||||
| [GitHub](/integrations-guide/github) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Shows GitHub updates, like new pull requests, commits, or issues, in Mattermost channels. |
|
||||
| [GitLab](/integrations-guide/gitlab) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Sends GitLab activity (code pushes, merge requests, CI/CD pipeline updates) into Mattermost channels. |
|
||||
| [Jira](/integrations-guide/jira) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Lets you see, create, and update Jira issues inside Mattermost. |
|
||||
| [Pexip](https://mattermost.com/marketplace/pexip-video-connect/) | [Mattermost Marketplace](https://mattermost.com/marketplace/) | Lets you start and join Pexip video meetings from Mattermost. |
|
||||
| [ServiceNow](/integrations-guide/servicenow) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Sends ServiceNow updates (like tickets or incidents) into Mattermost and lets you take action from chat. |
|
||||
| [Splunk](https://mattermost.com/marketplace/splunk-2/) | [Mattermost Marketplace](https://mattermost.com/marketplace/) | Sends Splunk alerts and search results directly into Mattermost channels. |
|
||||
| [Zoom](/integrations-guide/zoom) | <img src={useBaseUrl('/img/ui/products_E82F.svg')} alt="Product menu icon" className="theme-icon" /> > **App Marketplace** | Lets you start and join Zoom meetings from inside Mattermost. |
|
||||
|
||||
## More on Marketplace
|
||||
|
||||
More integrations are available on the [Mattermost Marketplace](https://mattermost.com/marketplace/). You can install these integrations directly from the Marketplace, by uploading them in the System Console, or by using the REST API.
|
||||
|
||||
<Important>
|
||||
|
||||
- Installed plugins are persisted to the configured file store and unpacked on server startup. It's imperative that your file store be accessible to the server immediately on startup. If using a shared filesystem, ensure the mount completes successfully before starting the server.
|
||||
- We strongly recommend testing integration updates in a staging environment before deploying to production, and regularly backing up integrations.
|
||||
|
||||
</Important>
|
||||
32
docs/main/integrations-guide/restful-api.mdx
Normal file
32
docs/main/integrations-guide/restful-api.mdx
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: "RESTful API"
|
||||
---
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
**Technical complexity:** [Pro-code](./faq#pro-code)
|
||||
|
||||
Full developer control for automation, bots, and integrations.
|
||||
|
||||
The [Mattermost API](https://developers.mattermost.com/api-documentation/) provides a comprehensive set of endpoints that let you programmatically interact with your Mattermost workspace. With the API, you can manage users, teams, channels, posts, and more, making it possible to automate administrative tasks, integrate external systems, and build custom applications that extend Mattermost functionality. Whether you’re writing lightweight scripts or developing full-scale integrations, the API offers flexible building blocks to tailor Mattermost to your workflows.
|
||||
|
||||
Using the API is a pro-code approach meant for developers who want to write scripts to automate specific workflows or build deeply customized integrations using the plugin framework to connect external systems.
|
||||
|
||||
The API is often used in combination with [bot accounts](https://developers.mattermost.com/integrate/reference/bot-accounts/) to authenticate and interact with Mattermost.
|
||||
|
||||
## Example Use Cases
|
||||
|
||||
Here are some example use cases for API integration in Mattermost:
|
||||
|
||||
**User provisioning**
|
||||
|
||||
Write a script to automatically create and manage user accounts in Mattermost, ensuring that new team members are added to the right teams and channels as part of your onboarding process.
|
||||
|
||||
**Channel management**
|
||||
|
||||
Use the API to programmatically create, archive, or update channels, making it easy to align collaboration spaces with your project lifecycle or organizational changes.
|
||||
|
||||
**Message automation**
|
||||
|
||||
Build a script or integration that posts messages or reminders into specific channels on a schedule, such as daily stand-up prompts, release announcements, or security notifications.
|
||||
|
||||
Learn more about using the [API and available endpoints](https://developers.mattermost.com/api-documentation/).
|
||||
14
docs/main/integrations-guide/run-slash-commands.mdx
Normal file
14
docs/main/integrations-guide/run-slash-commands.mdx
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: "Run Slash Commands"
|
||||
---
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Using a slash command is as easy as composing a message. Instead of message text, you start slash commands with a slash character: `/`.
|
||||
|
||||
For example, if you want to log out of Mattermost using only your keyboard, you can enter `/logout` in the message text box and select **Send**.
|
||||
|
||||
Because your message starts with a slash `/`, Mattermost knows it's a slash command, and performs the action defined for that command.
|
||||
|
||||
## Create custom slash commands
|
||||
|
||||
Interested in creating new custom slash commands for your Mattermost instance? Visit our [developer documentation](https://developers.mattermost.com/integrate/slash-commands/custom/) to learn more about creating custom slash commands for your work processes.
|
||||
153
docs/main/integrations-guide/servicenow.mdx
Normal file
153
docs/main/integrations-guide/servicenow.mdx
Normal file
@@ -0,0 +1,153 @@
|
||||
---
|
||||
title: "Connect ServiceNow to Mattermost"
|
||||
sidebar_label: "ServiceNow"
|
||||
---
|
||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Minimize distractions and reduce context switching by bridging the gap between IT service management (ITSM) and team communication. Create and manage incident reports, change requests, and service tickets, as well as manage event-driven notification subscriptions for ServiceNow record changes, in real-time, and automate routine tasks to decrease response times without leaving Mattermost.
|
||||
|
||||
## Deploy
|
||||
|
||||
Setup starts in ServiceNow and finishes in Mattermost.
|
||||
|
||||
### Create an OAuth app in ServiceNow
|
||||
|
||||
1. Go to your ServiceNow instance and then to **All \> System OAuth \> Application Registry**.
|
||||
2. Select New in the top right corner, and then select **Create an OAuth API endpoint for external clients**.
|
||||
3. Enter the name for your app and set the redirect URL to: `https://<YOUR-MATTERMOST-URL>/plugins/mattermost-plugin-servicenow/api/v1/oauth2/complete`, replacing `YOUR-MATTERMOST-URL` with the Mattermost URL you want the ServiceNow events to post to, using lowercase characters.
|
||||
|
||||
<Note>
|
||||
|
||||
A client secret is generated automatically. Copy the secret and the Client ID. You'll need these values for the Mattermost configuration.
|
||||
|
||||
</Note>
|
||||
|
||||
### Upload the update set in ServiceNow
|
||||
|
||||
Changing your ServiceNow instance to support subscriptions, record changes, and send change notifications to Mattermost is done by a Mattermost and ServiceNow system admin using an [update set](https://docs.servicenow.com/bundle/washingtondc-application-development/page/build/system-update-sets/concept/system-update-sets.html). Once created, you can download the update set from Mattermost and upload it into ServiceNow.
|
||||
|
||||
1. In the Mattermost System Console, download the update set XML file.
|
||||
2. In your ServiceNow instance, go to **All \> System Update Sets \> Retrieved Update Sets**.
|
||||
3. Select the **Import Update Set from XML** link at the bottom of the page.
|
||||
4. Select the downloaded XML update set file and upload it. You'll see an update set named **ServiceNow for Mattermost Notifications**.
|
||||
5. Select that update set, and then select **Preview Update Set**.
|
||||
6. Select **Commit Update Set**.
|
||||
7. Confirm the data loss notification, and select **Proceed with Commit**. Your update set is uploaded and committed to ServiceNow.
|
||||
|
||||
### Set up user permissions in ServiceNow
|
||||
|
||||
Once the update set is uploaded, it creates a new role called `x_830655_mm_std.user`. Users must have this role in ServiceNow to add or manage Mattermost subscriptions. You need to be a ServiceNow system admin to add the `x_830655_mm_std.user` role to all users who should have the ability to add or manage subscriptions through Mattermost.
|
||||
|
||||
1. In your ServiceNow instance, go to **All \> User Administration \> Users**.
|
||||
2. On the Users page, open a user's profile where you want the role added.
|
||||
3. Select the **Roles** tab in the table, and select **Edit**.
|
||||
4. Search for the `x_830655_mm_std.user` role, and add that role to the user's **Roles** list, and select **Save**. That user can now add or manage Mattermost subscriptions.
|
||||
|
||||
### Update the API secret on the change of ServiceNow Webhook Secret
|
||||
|
||||
1. In Mattermost, copy the **Webhook Secret** from your Mattermost instance by going to **System Console \> Plugins \> ServiceNow**.
|
||||
2. In your ServiceNow instance, open the auth table's list view by navigating directly to `https://<your-instance>.service-now.com/x_830655_mm_std_servicenow_for_mattermost_notifications_auth_list.do`, replacing `<your-instance>` with your ServiceNow instance subdomain.
|
||||
3. On the page, select the row containing your Mattermost Server URL. If that row doesn't exist, create it manually by selecting **New** located in the top-right corner, and adding your Mattermost Server URL.
|
||||
4. Update the **API Secret** in the ServiceNow instance with the **Webhook Secret** from Mattermost, and select **Update**.
|
||||
|
||||
#### What changes are made to ServiceNow instance?
|
||||
|
||||
- **GetStates scripted REST API**: Returns different states available for the records. Records supported: incident, task, change_task, and cert_follow_on_task
|
||||
- An application with the name **ServiceNow for Mattermost Notifications**.
|
||||
|
||||
> - **ServiceNow for Mattermost Notifications** application handles the storing of subscription details and sending notifications on the subscribed events.
|
||||
> - **ServiceNow for Mattermost Notifications** `Auth` table to store different Mattermost server URLs with their webhook secrets.
|
||||
> - **ServiceNow for Mattermost** `Subscriptions` table to store the subscription details.
|
||||
> - **Business rules** to handle different events (example: new record created, comment added on record, record state updated, etc.)
|
||||
> - **Script actions** to send notifications based on the subscription events.
|
||||
> - **Events registration** to register different record-type events.
|
||||
|
||||
#### ServiceNow tables accessible in Mattermost
|
||||
|
||||
- `incident`
|
||||
- `problem`
|
||||
- `change_request`
|
||||
- `kb_knowledge`
|
||||
- `task`
|
||||
- `change_task`
|
||||
- `cert_follow_on_task`
|
||||
- `x_830655_mm_std_servicenow_for_mattermost_notifications_auth`
|
||||
- `x_830655_mm_std_servicenow_for_mattermost_subscriptions`
|
||||
- All the tables extending these tables above
|
||||
|
||||
<Note>
|
||||
|
||||
Subscriptions are only supported for `incident`, `problem`, and `change_request` record types.
|
||||
|
||||
</Note>
|
||||
|
||||
### Mattermost configuration
|
||||
|
||||
A Mattermost system admin must perform the following steps in Mattermost.
|
||||
|
||||
Install the ServiceNow integration from the in-product App Marketplace:
|
||||
|
||||
<Note>
|
||||
|
||||
We recommend making a copy of your webhook and encryption secret, 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 ServiceNow, and select **Install**.
|
||||
3. Once installed, select **Configure**. You're taken to the System Console.
|
||||
4. On the ServiceNow configuration page, enable and configure ServiceNow interoperability as follows, and then select **Save**:
|
||||
|
||||
> - **ServiceNow Server Base URL**: Enter the base URL of your ServiceNow instance.
|
||||
> - **ServiceNow Webhook Secret**: Regenerate the webhook secret for ServiceNow. Regenerating this key will stop the subscription notifications. See the documentation on [creating an OAuth app in ServiceNow](#create-an-oauth-app-in-servicenow) for details on updating the secret in the ServiceNow instance and start receiving notifications again.
|
||||
> - **ServiceNow OAuth Client ID**: The clientID of your registered OAuth app in ServiceNow.
|
||||
> - **ServiceNow OAuth Client Secret**: The client secret of your registered OAuth app in ServiceNow.
|
||||
> - **Encryption Secret**: Select **Regenerate** to generate a new encryption secret. This encryption secret is used to encrypt and decrypt the OAuth token. Regenerating this secret will require all users to reconnect their ServiceNow accounts.
|
||||
> - **Download ServiceNow Update Set**: Download the update set XML file to upload to ServiceNow.
|
||||
|
||||
## Enable
|
||||
|
||||
Notify your teams that they can [connect their ServiceNow accounts to Mattermost](#connect-a-servicenow-account-to-mattermost).
|
||||
|
||||
## Upgrade
|
||||
|
||||
We recommend updating this integration as 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-servicenow/releases) for the latest release, available releases, and compatibility considerations.
|
||||
|
||||
## Use
|
||||
|
||||
Users who want to use ServiceNow interconnectivity must connect a ServiceNow account to Mattermost.
|
||||
|
||||
Once connected, you'll receive direct messages from the ServiceNow bot in Mattermost for ServiceNow activity.
|
||||
|
||||
### Connect a ServiceNow account to Mattermost
|
||||
|
||||
1. In Mattermost, run the `/servicenow connect` slash command in any Mattermost channel to link your Mattermost account with your ServiceNow account. Follow the link into your ServiceNow instance, and select **Allow**. You can disconnect your accounts by running the `/servicenow disconnect` slash command. Alternatively, select the **ServiceNow** icon in the apps bar on the right to connect your ServiceNow account.
|
||||
2. Once connected, run the `/servicenow help` slash command to see what you can do.
|
||||
|
||||
Available slash commands include `/servicenow subscriptions` to manage notification subscriptions, `/servicenow share` to search and share ServiceNow records in a channel, and `/servicenow incident create` to create a new incident directly from Mattermost.
|
||||
|
||||
## Customize
|
||||
|
||||
This integration contains both a server and web app portion.
|
||||
|
||||
ServiceNow itself provides developer instances to anyone who wishes to develop on ServiceNow. Developers can get a ServiceNow developer instance by logging in to their ServiceNow developer account, and selecting **Request Instance** in the top right corner. Once the instance is created, open the menu from the top right corner, go to **Manage Instance Password**, and log in to the developer instance in a new tab.
|
||||
|
||||
See the [Development](https://github.com/mattermost/mattermost-plugin-servicenow/blob/master/docs/developer_docs.md#development) section of the Mattermost ServiceNow Plugin GitHub repository for details on customizing this integration.
|
||||
|
||||
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.
|
||||
|
||||
## 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 ServiceNow plugin repository](https://github.com/mattermost/mattermost-plugin-servicenow).
|
||||
|
||||
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.
|
||||
|
||||
<Tip>
|
||||
|
||||
Watch [this on-demand webinar on incident response with Mattermost and ServiceNow](https://mattermost.com/video/streamline-incident-response-with-mattermost-and-servicenow/) to learn how to streamline incident response.
|
||||
|
||||
</Tip>
|
||||
42
docs/main/integrations-guide/slash-commands.mdx
Normal file
42
docs/main/integrations-guide/slash-commands.mdx
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: "Slash Commands"
|
||||
---
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Execute actions with simple commands inside Mattermost. Learn how to [run Mattermost slash commands](/integrations-guide/run-slash-commands).
|
||||
|
||||
## Built-in slash commands
|
||||
|
||||
**Technical complexity:** [No-code](./faq#no-code)
|
||||
|
||||
These out-of-the-box commands enable command line interaction with users, channels, and conversations. Examples of pre-built slash commands include `/invite` to add teammates to a channel, `/header` to set a channel description, or `/call` to start or join a call in a channel.
|
||||
|
||||
Additionally, you can interact with the data model programmatically using [API endpoints](https://api.mattermost.com/). Responses are posted as the user who invoked the command, with possible username/icon overrides.
|
||||
|
||||
Learn more about [built-in slash commands](/integrations-guide/built-in-slash-commands) available in Mattermost.
|
||||
|
||||
## Custom slash commands
|
||||
|
||||
**Technical complexity:** [Low-code](./faq#low-code)
|
||||
|
||||
Slash commands are similar to an outgoing webhooks, but instead of listening for keywords in a channel they are triggered by users explicitly typing a preconfigured command. Using slash commands is similar to using a command line within a channel. This means if you type in a slash command it will execute without posting a message, whereas an outgoing webhook is only triggered by posted messages. The external service then processes the request and can return a response, such as plain text, rich message content, interactive buttons or forms, directly into the channel.
|
||||
|
||||
Mattermost's slash command format is Slack compatible, so you can easily migrate your commands from Slack.
|
||||
|
||||
Learn more about [building custom slash commands](https://developers.mattermost.com/integrate/slash-commands/custom/).
|
||||
|
||||
### Example Use Cases
|
||||
|
||||
Here are some example use cases for slash commands in Mattermost:
|
||||
|
||||
**Project management**
|
||||
|
||||
Typing `/jira create` opens an interactive dialog where you can file a new Jira issue directly from Mattermost, including fields like summary, description, and priority.
|
||||
|
||||
**Incident response**
|
||||
|
||||
Using `/pagerduty trigger` can open a form to start a new incident, notify on-call responders, and post details back into the channel so the team can coordinate.
|
||||
|
||||
**Knowledge retrieval**
|
||||
|
||||
A command like `/docs search authentication` queries your documentation system and returns a list of relevant articles rendered using [Mattermost Blocks](https://developers.mattermost.com/integrate/reference/mm-blocks/) with links.
|
||||
25
docs/main/integrations-guide/webhook-integrations.mdx
Normal file
25
docs/main/integrations-guide/webhook-integrations.mdx
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: "Webhooks"
|
||||
---
|
||||
<PlanAvailability slug="all-commercial" />
|
||||
|
||||
Imagine your CI/CD pipeline just finished a build. Rather than digging through logs, a Mattermost channel instantly shows a new message:
|
||||
|
||||
✅ Build Successful – Project X, Version 2.3 deployed to staging.
|
||||
|
||||
That’s the power of Mattermost webhooks. They provide a simple yet powerful way to connect Mattermost with external systems, applications, and services so that information flows in real time, and your team stays aligned without constant manual updates.
|
||||
|
||||
With webhooks, you can:
|
||||
|
||||
- Receive updates in Mattermost from other systems via [Incoming Webhooks](/integrations-guide/incoming-webhooks).
|
||||
- Send data out of Mattermost to external endpoints via [Outgoing Webhooks](/integrations-guide/outgoing-webhooks) based on channel activity.
|
||||
|
||||
Because webhooks use lightweight HTTP POST requests with JSON payloads, they're easy to set up with virtually any tool or platform, whether you need quick notifications or deep integration with enterprise workflows.
|
||||
|
||||
Common uses include:
|
||||
|
||||
- Posting monitoring alerts directly to your incident-response channel.
|
||||
- Sending deployment updates from CI/CD pipelines.
|
||||
- Triggering external actions like creating tickets or running scripts from inside Mattermost.
|
||||
|
||||
Mattermost webhooks bridge your collaboration hub with the rest of your toolset, enabling faster decisions, smoother operations, and teams that can act on information the moment it matters. Learn more about how to set up and use webhooks in the sections below:
|
||||
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