diff --git a/source/about/mattermost-for-microsoft-teams.rst b/source/about/mattermost-for-microsoft-teams.rst index d923f3c28f6..23a453d3290 100644 --- a/source/about/mattermost-for-microsoft-teams.rst +++ b/source/about/mattermost-for-microsoft-teams.rst @@ -13,6 +13,4 @@ See the following product documentation to install and use Mattermost for Micros - `Install the Mattermost for Microsoft Teams plugin `__ - `Install the Mattermost app in Microsoft Teams `__ -- `Collaborate using Mattermost for Microsoft Teams `__ - - +- `Collaborate using Mattermost for Microsoft Teams `__ \ No newline at end of file diff --git a/source/about/mattermost-google-calendar-integration.rst b/source/about/mattermost-google-calendar-integration.rst new file mode 100644 index 00000000000..b0f8f4f9073 --- /dev/null +++ b/source/about/mattermost-google-calendar-integration.rst @@ -0,0 +1,17 @@ +Mattermost Google Calendar integration +====================================== + +.. include:: ../_static/badges/allplans-cloud-selfhosted.rst + :start-after: :nosearch: + +The Mattermost Google Calendar integration enables a two-way integration between Mattermost and Google Calendar. With this integration, you can: + +- Create and schedule events, invite guests, and post reminders in channels. +- Schedule a daily summary of your events, or review your events today, tomorrow, or this week. +- Receive an event reminder 5 minutes before a meeting via direct message and linked channel message. +- Automatically set your user status as Away or Do Not Disturb during scheduled events. + +See the following product documentation to install and use Mattermost Google Calendar integration: + +- `Set up the Mattermost Google Calendar plugin `__ +- `Use the Mattermost Calendar plugin `__ \ No newline at end of file diff --git a/source/about/setup-mattermost-google-calendar-plugin.rst b/source/about/setup-mattermost-google-calendar-plugin.rst new file mode 100644 index 00000000000..0db662ad85a --- /dev/null +++ b/source/about/setup-mattermost-google-calendar-plugin.rst @@ -0,0 +1,121 @@ +Set up the Mattermost Google Calendar plugin +============================================= + +.. include:: ../_static/badges/allplans-cloud-selfhosted.rst + :start-after: :nosearch: + +Setting up the Mattermost Google Calendar integration requires the following 3 steps: + +1. (Mattermost admin) `Install the Google Calendar plugin <#install-the-mattermost-google-calendar-plugin>`__ on your Mattermost instance. +2. (Google admin) `Create a Google Calendar service <#create-a-google-calendar-service>`__ by creating a Google Cloud project. +3. (Mattermost admin) `Configure the Mattermost Google Calendar plugin <#configure-the-matermost-google-calendar-plugin>`__. + +Once setup is complete, see the `get started <#get-started-with-the-plugin>`__ section below to learn how to use the plugin. + +Install the Mattermost Google Calendar plugin +--------------------------------------------- + +To install the `Mattermost Google Calendar `__ plugin on your Mattermost server: + +1. Log in to your Mattermost workspace as a system administrator. +2. Download the latest version of `the plugin binary release `__, compatible with Mattermost v8.x and later. + + .. tip:: + + If you are using an earlier version of Mattermost, `follow our documentation `__ to upgrade to Mattermost v8.x or later. + +Create a Google Calendar service +-------------------------------- + +1. In a browser, as a Google admin, create a project in the Google Cloud Console by going to ``https://console.cloud.google.com/``, selecting the project option in the top left corner of the screen, then selecting **New Project** option in the top right corner of the popup window. + + .. image:: ../images/google-cloud-console-create-project.png + :alt: In Google Cloud Console, select New Project to create up a new project. + + .. image:: ../images/google-cloud-console-new-project.png + :alt: Use Google Cloud Console to set up a new project. + +2. When your project is created, go to **APIs & Services** to search for and enable the following 2 services: + + - **Google Calendar API**: Used for anything related to the calendar and events. + - **Google People API**: Used to link your Mattermost account to your Google account. + + .. image:: ../images/google-cloud-console-apis.png + :alt: In Google Cloud Console, select APIs & Services to search for services to enable. + + .. image:: ../images/enable-google-cloud-console-google-calendar-api.png + :alt: In Google Cloud Console, search for and enable the Google Calendar API. + + .. image:: ../images/enable-google-cloud-console-google-people-api.png + :alt: In Google Cloud Console, search for and enable the Google People API. + +3. Choose how to configure and register the application by selecting the user type as **Internal** or **External**, then select **Create**. + + .. image:: ../images/google-cloud-console-OAuth-consent-screen.png + :alt: On the OAuth consent screen, configure and register the application as internal or external. + +4. When prompted, set the following app information: + + - **App name**: `Google Calendar Mattermost Plugin` + - **User support email** + - **Developer contact information** + - Populate the remaining fields as needed. + + .. image:: ../images/google-cloud-console-app-information.png + :alt: Configure the consent screen app name and user support email. + + .. image:: ../images/google-cloud-console-developer-contact-information.png + :alt: Configure the consent screen developer contact information. + +5. Under Credentials, create new OAuth 2.0 credentials by selecting **Create Credentials > OAuth client ID**. + + - Under **Application type**, select **Web Application**. + - Under **Authorized redirect URIs** add ``https://(MM_SITE_URL)/plugins/com.mattermost.gcal/oauth2/complete`` and replace ``MM_SITE_URL`` with your Mattermost Server Site URL. + + .. image:: ../images/google-cloud-console-web-application.png + :alt: Under Credentials, select Web application. + + .. image:: ../images/google-cloud-console-authorized-redirect-uris.png + :alt: Configure the authorized redirect URI for Mattermost. + +6. Once the OAuth client is created, make a copy of the **Client ID** and **Client Secret** values for the next and final setup step below. + + .. image:: ../images/google-cloud-console-OAuth-client-created.png + :alt: Copy the Client ID and Client secret values. You'll need these values in the next step. + +Configure the Mattermost Google Calendar plugin +----------------------------------------------- + +In Mattermost, configure the plugin by going to **System Console > Plugin Management > Google Calendar**, enter the following values, and select **Save**. + +- **Enable Plugin**: Select **true** to enable the plugin for your Mattermost instance. +- **Admin User IDs**: Specify the user IDs who are authorized to manage the plugin in addition to Mattermost system admins. Separate multiple user IDs with commas. Go to **System Console > User Management > Users** to obtain a user's ID. +- **Encryption key**: Generate an encryption key used to store data in the database. Regenerating this value forces users to re-link their Google Calendars in Mattermost. +- **Google Application Client ID**: Paste the Client ID value from the Google Cloud Console. +- **Google Client Secret**: Paste the Client Secret value from the Google Cloud Console. + +.. note:: + + Additional Mattermost Google Calendar configuration options are available for troubleshooting, including the admin log level of plugin logs, and displaying full or partial context for admin log messages. See the `plugin configuration settings `__ documentation for details. + +Get started with the plugin +--------------------------- + +See the `use Mattermost Google Calendar plugin `__ documentation for details on how users can `link their Google Calendar to Mattermost `__, `customize plugin preferences `__, and `create calendar events in Mattermost `__ that are added to their Google Calendar automatically. + +Troubleshooting +--------------- + +If you encounter issues when connecting calendars, creating events, inviting guests to events, or linking channels, we recommend restarting the plugin as a Mattermost system admin. + +1. Go to **System Console > Plugins > Plugin Management**. +2. Under **Installed Plugins**, scroll to the **Google Calendar** section, select **Disable** then wait for the State to change to **Not running**. +3. Select **Enable** and wait for the State to change to **Running**. + +Get help +--------- + +If you face any issues while installing the Mattermost Google Calendar plugin, you can either: + +- Open a new issue in the `Mattermost Google Calendar repository `__. +- Or, create a new topic in our `peer-to-peer troubleshooting forum `__. \ No newline at end of file diff --git a/source/about/unified-collaboration.rst b/source/about/unified-collaboration.rst index 92e21133692..8efadace9db 100644 --- a/source/about/unified-collaboration.rst +++ b/source/about/unified-collaboration.rst @@ -8,9 +8,12 @@ Unified communication /about/mattermost-for-microsoft-teams.rst /about/install-mattermost-for-microsoft-teams-plugin.rst /about/install-mattermost-app-in-microsoft-teams.rst + /about/mattermost-google-calendar-integration.rst + /about/setup-mattermost-google-calendar-plugin.rst Mattermost's Unified Communication solution is designed to provide an extended collaboration experience for technical and operational teams to teams on other collaboration systems. * :doc:`Mattermost for Microsoft Teams ` - Learn how organizations can easily connect operational workflows through the Mattermost app while staying connected to the all-employee platform, all in one place. +* :doc:`Mattermost Google Calendar integration ` - Learn how to enable a two-way integration between Mattermost and Google Calendar. -`Contact us `_ to learn more about this solution and to discuss whether it’s the right one for you. +`Contact us `_ to learn more about this solution and to discuss whether it’s the right one for you. \ No newline at end of file diff --git a/source/channels/use-mattermost-google-calendar-plugin.rst b/source/channels/use-mattermost-google-calendar-plugin.rst new file mode 100644 index 00000000000..9e263cda1e1 --- /dev/null +++ b/source/channels/use-mattermost-google-calendar-plugin.rst @@ -0,0 +1,69 @@ +Use the Mattermost Google Calendar plugin +========================================= + +.. include:: ../_static/badges/allplans-cloud-selfhosted.rst + :start-after: :nosearch: + +`The Mattermost Google Calendar plugin `__ enables you to manage events using a two-way integration between Mattermost and Google Calendar without leaving Mattermost. + +.. note.. + + Your system admin needs to `set up this plugin `__ before you can use it to manage your Google Calendar in Mattermost. + +Connect your Google Calendar account to Mattermost +--------------------------------------------------- + +To use the Mattermost Google Calendar plugin, you must connect your Google Calendar account to Mattermost. You only need to complete this step once. + +1. Log into Mattermost using your credentials. +2. Enter the Mattermost slash command ``/gcal connect`` in the message text field, and select **Send**. +3. When prompted, select the link to open a new browser window and connect your Google Calendar account to Mattermost. +4. Choose your Google account and enter your Google credentials if you're not already logged in. +5. Select **Allow**. + +Mattermost will tell you when you’ve successfully connected your account. You can close the browser window and return to Mattermost. + +Customize your Google Calendar plugin +--------------------------------------- + +Mattermost prompts you to configure the plugin based on your personal preferences with the following options. You only need to complete this step once. + +- **Update status**: The plugin can update `your Mattermost availability `__ when you have an event scheduled. +- **Get Confirmation**: You can manually confirm every availability change, or the plugin can update your availability automatically. + + - If you select **Yes**, Mattermost confirms your availability update 5 minutes before each event starts. You'll also be prompted to change your availability back to **Online** once an event ends. + - Select **No** to enable the plugin to update your availability automatically. + +- **Receive notifications during meetings**: During an event, your availability can be set to **Away** or **No Not Disturb** when you’re in a meeting. + + - Set your availability to **Away** to clearly communicate to others in Mattermost that you're unavailable. You'll continue to receive desktop, email, and push notifications based on your Mattermost notification preferences. + - Set your availability to `Do Not Disturb `__ to disable all desktop, email, and push notifications. + +- **Receive reminders**: You can choose to receive an event reminder 5 minutes before a meeting in a direct message. + +- **Daily summary**: You can get a daily summary of your events delivered in a direct message. + +Create a calendar event +----------------------- + +1. Using a web browser or the desktop app, select a channel name to access additional channel options. +2. Select **Create calendar event**. +3. Specify a subject, date, start time, and end time for the event. You can optionally specify additional event details, including location, guest invitations, description, and a channel where event reminders will be posted. + +4. Select **Create**. + + .. note:: + + - You can invite guests to the event by username if they’ve already connected their Google Calendar account to the Mattermost server, or alternatively by their email address. + - Once you’ve invited guests to an event, guests must accept the event invitation to receive event reminders based on how they’ve customized their Google Calendar plugin preferences. + - When you create an event, it's based on your timezone. Guests see event details based on their timezone in direct message reminders, but channel reminders display using the event creator's timezone. + +Review your upcoming events +--------------------------- + +You can use the following Mattermost slash commands to review your upcoming Google Calendar events without leaving Mattermost. + +- See a summary of today's events by entering the slash command ``/gcal today`` in the message text field. +- See a summary of tomorrow's events by entering the slash command ``/gcal tomorrow`` in the message text field. +- See a summary of the week's events by entering the slash command ``/gcal viewcal`` in the message text field. +- Update your plugin preferences any time by entering the Mattermost slash command ``/gcal settings`` in the message text field. \ No newline at end of file diff --git a/source/configure/plugins-configuration-settings.rst b/source/configure/plugins-configuration-settings.rst index f08e256a0a6..b7eb7a2dedd 100644 --- a/source/configure/plugins-configuration-settings.rst +++ b/source/configure/plugins-configuration-settings.rst @@ -17,6 +17,7 @@ Both self-hosted and Cloud admins can access the following configuration setting - `Demo Plugin <#demo-plugin>`__ - `GIF commands <#gif-commands>`__ - `Mattermost Boards <#mattermost-boards>`__ +- `Google Calendar <#google-calendar>`__` - `MS Teams Sync <#ms-teams-sync>`__ - Playbooks <#mattermost-playbooks>`__ - `User Satisfaction surveys <#user-satisfaction-surveys>`__ @@ -1312,6 +1313,135 @@ Enable plugin ---- +Google Calendar +---------------- + +.. include:: ../_static/badges/allplans-cloud-selfhosted.rst + :start-after: :nosearch: + +The Mattermost Google Calendar plugin enables a two-way integration between Mattermost and Google Calendar. + +Access the following configuration settings in the System Console by going to **Plugins > Google Calendar**. + +.. config:setting:: plugins-googlecalendarenable + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + + - **true**: Enables the Google Calendar plugin on your Mattermost workspace. + - **false**: Disables the Google Calendar plugin on your Mattermost workspace. + +Enable plugin +~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| Enable the Mattermost Google Calendar plugin for all Mattermost teams. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| - **true**: Enables Google Calendar plugin on your Mattermost workspace. | - Environment variable: N/A | +| - **false**: **(Default)** Disables the Google Calendar plugin. | | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendaradminuserids + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + +Admin user IDs +~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| A comma-separated list of users authorized to manage the plugin. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| Go to **System Console > User Management > Users** to access user IDs. | - Environment variable: N/A | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendarcopypluginlogs + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + +Copy plugin logs to admins, as bot messages +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| The level of detail in log events for the plugin. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| Can be one of: **None**, **Debug**, **Info**, **Warning**, or **Error**. | - Environment variable: N/A | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendardisplayfullcontext + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + + - **true**: Displays full context for each admin log entry. + - **false**: Full context isn't displayed for each admin log entry. + +Display full context for each admin log message +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| Specify whether full context is displayed for log messages. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| - **true**: Displays full context for each admin log entry. | - Environment variable: N/A | +| - **false**: Full context isn't displayed for each admin log entry. | | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendarencryptionkey + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + +Encryption key +~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| The encryption key used to store data in the database. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| | - Environment variable: N/A | ++--------------------------------------------------------------------------+------------------------------------------------------+ +| **Note**: Select **Regenerate** to generate a new encryption key. When you regenerate this value, all users will need to | +| `reconnect their Google Calendar with Mattermost `__. | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendarappclientid + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + +Google application client ID +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| The Google App Authentication Client ID. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| | - Environment variable: N/A | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +.. config:setting:: plugins-googlecalendarclientsecret + :displayname: Enable plugin (Plugins - Google Calendar) + :systemconsole: Plugins > Google Calendar + :configjson: N/A + :environment: N/A + +Google client secret +~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------------------------+------------------------------------------------------+ +| The Google App Authentication Client Secret. | - System Config path: **Plugins > Google Calendar** | +| | - ``config.json`` setting: N/A | +| | - Environment variable: N/A | ++--------------------------------------------------------------------------+------------------------------------------------------+ + +---- + MS Teams Sync ------------- @@ -1368,7 +1498,6 @@ Tenant ID :environment: N/A :description: Specify the Microsoft Teams Client ID. - Client ID ~~~~~~~~~ diff --git a/source/guides/channels.rst b/source/guides/channels.rst index 727b8809e23..0d6366cfd0b 100644 --- a/source/guides/channels.rst +++ b/source/guides/channels.rst @@ -121,6 +121,8 @@ Extend Channels functionality Extend functionality with integrations Collaborate using Mattermost for MS Teams + Use the Mattermost Google Calendar plugin * :doc:`Extend Channels with integrations ` - Find open source integrations to common tools in the Mattermost Marketplace. -* :doc:`Collaborate using Mattermost for MS Teams ` - Learn how to collaborate with colleagues across both Mattermost and Microsoft Teams at the same time. \ No newline at end of file +* :doc:`Collaborate using Mattermost for MS Teams ` - Learn how to collaborate with colleagues across both Mattermost and Microsoft Teams at the same time. +* :doc:`Use the Mattermost Google Calendar plugin ` - Learn how to manage events using a two-way integration between Mattermost and Google Calendar. \ No newline at end of file diff --git a/source/images/enable-google-cloud-console-google-calendar-api.png b/source/images/enable-google-cloud-console-google-calendar-api.png new file mode 100644 index 00000000000..2b53435b240 Binary files /dev/null and b/source/images/enable-google-cloud-console-google-calendar-api.png differ diff --git a/source/images/enable-google-cloud-console-google-people-api.png b/source/images/enable-google-cloud-console-google-people-api.png new file mode 100644 index 00000000000..02e59a7547a Binary files /dev/null and b/source/images/enable-google-cloud-console-google-people-api.png differ diff --git a/source/images/google-cloud-console-OAuth-client-created.png b/source/images/google-cloud-console-OAuth-client-created.png new file mode 100644 index 00000000000..70b4c8de32b Binary files /dev/null and b/source/images/google-cloud-console-OAuth-client-created.png differ diff --git a/source/images/google-cloud-console-OAuth-consent-screen.png b/source/images/google-cloud-console-OAuth-consent-screen.png new file mode 100644 index 00000000000..d965e70a33d Binary files /dev/null and b/source/images/google-cloud-console-OAuth-consent-screen.png differ diff --git a/source/images/google-cloud-console-apis.png b/source/images/google-cloud-console-apis.png new file mode 100644 index 00000000000..04cbe28220e Binary files /dev/null and b/source/images/google-cloud-console-apis.png differ diff --git a/source/images/google-cloud-console-app-information.png b/source/images/google-cloud-console-app-information.png new file mode 100644 index 00000000000..9f8154b75ba Binary files /dev/null and b/source/images/google-cloud-console-app-information.png differ diff --git a/source/images/google-cloud-console-authorized-redirect-uris.png b/source/images/google-cloud-console-authorized-redirect-uris.png new file mode 100644 index 00000000000..b1306cdd959 Binary files /dev/null and b/source/images/google-cloud-console-authorized-redirect-uris.png differ diff --git a/source/images/google-cloud-console-create-project.png b/source/images/google-cloud-console-create-project.png new file mode 100644 index 00000000000..4df9f1acd2d Binary files /dev/null and b/source/images/google-cloud-console-create-project.png differ diff --git a/source/images/google-cloud-console-developer-contact-information.png b/source/images/google-cloud-console-developer-contact-information.png new file mode 100644 index 00000000000..9976df23ad7 Binary files /dev/null and b/source/images/google-cloud-console-developer-contact-information.png differ diff --git a/source/images/google-cloud-console-new-project.png b/source/images/google-cloud-console-new-project.png new file mode 100644 index 00000000000..24b2d1ce39f Binary files /dev/null and b/source/images/google-cloud-console-new-project.png differ diff --git a/source/images/google-cloud-console-web-application.png b/source/images/google-cloud-console-web-application.png new file mode 100644 index 00000000000..dcd414b7ca3 Binary files /dev/null and b/source/images/google-cloud-console-web-application.png differ