Set up Mattermost notifications using the discourse-chat-integration plugin

This howto describes how to setup the Mattermost provider included in discourse-chat-integration.

Install

If you haven’t already, install the discourse-chat-integration plugin

Notifications

Set up Mattermost

Your Mattermost server needs to be accessible from your Discourse server in order to connect them. It is recommended that you use HTTPS, but HTTP should also work.

  1. In your Mattermost System Console, under Custom Integrations, check that these settings are enabled:

    • Enable Incoming Webhooks
    • Enable integrations to override usernames
    • Enable integrations to override profile picture icons
    • Enable Custom Slash Commands (if you want slash commands)
  2. Login to your team, click your name in the top left, then click Integrations

  3. Choose Incoming Webhooks, Add incoming Webhook

  4. Enter a “Display Name”, “Description”, and choose a random channel from the list (it doesn’t matter which one, Discourse will override this)

  1. Save

  2. Copy the URL provided, you’ll need it later

Setup Discourse

  1. Paste the URL you copied into the chat_integration_mattermost_webhook_url site setting

  2. Enable chat_integration_mattermost_enabled

  3. Setup some “Rules” for your channels, according to the discourse-chat-integration instructions. Channel identifiers look like #town-square or @davidtaylor.

  4. Click Test on one of the channels to check everything’s working. You should receive a message like this:
    26

  5. :unicorn:

Slash Commands

Slash commands allow you to manage your rules from inside Mattermost. To get it working:

  1. If you didn’t already, enable Enable Custom Slash Commands in your Mattermost System Console

  2. Login to your team, click your name in the top left, then click Integrations

  3. Choose Slash Commands, Add slash command

    • Display Name: Discourse
    • Description: Manage Discourse notification rules
    • Command Trigger Word: discourse
    • Request URL: <your-discourse-url>/chat-integration/mattermost/command
    • Request Method: POST
    • Response Username: Discourse
    • Response Icon: (optionally specify an icon URL)
    • Autocomplete: :ballot_box_with_check:
    • Autocomplete Hint: Manage this channel's integration with Discourse
    • Autocomplete Description: [watch|follow|mute|delete|status|help]
  4. Save

  5. Copy the “Token” provided, and paste it into your Discourse site settings under chat_integration_mattermost_incoming_webhook_token

  6. Try sending /discourse help in your mattermost channel - you should get a message with a list of possible commands

  7. :1st_place_medal:

Last edited by @JammyDodger 2024-05-26T07:09:54Z

Check documentPerform check on document:
11 Likes

I recommend you also post this on the mattermost Discourse to get more feedbacks :cowboy_hat_face:

and probably a dedicated topic.

(also I wish we warned communities about hideous looking oneboxes cause they are missing images)

6 Likes

I think we already do in the dashboard if they use the default images for the logos.

1 Like

Mattermost integration now supports slash commands (their implementation is built to be compatible with Slack’s) :tada:

I have also created a topic about it on the Mattermost forum, it can be found here:

5 Likes

Hello! I am getting a broken image link to the right of the mattermost post. I tried to see the image url and it looks like an actual post instead of an image:

http://destek.hugin.com.tr/t/hugin-destek-topluluguna-hos-geldiniz/183/1

Is it intended to be the post author image I wonder?

Any tips on how to fix it?

Hi @nommaz - sorry about that. It was indeed trying to load an image from the URL of the post, which clearly isn’t going to work :wink:

I’ve fixed it now, so if you update to the latest version of the plugin it should work as intended :slight_smile:

https://github.com/discourse/discourse-chat-integration/commit/438a9d92fe6be632b825238ce703a03dd20d285b

2 Likes

Hi David didnt work unfortunately

Are you sure it is not an issue with mattermost_provider.rb:68 ?

Thanks

Vedat

Oops, I made the change in the slack provider instead of mattermost :facepalm:

Just added another commit to correct the error, so please can you give it another try :slight_smile:

1 Like

Thanks! All set now :slight_smile:

What’s up if I get a 422 error when trying (test) to hook to Mattermost?

Make sure you copied the webhook URL correctly, and that there are no spaces before/after the URL. Is your mattermost server accessible to the internet? Or just an internal network?

3 Likes

What’s the best way to handle multiple teams / multiple mattermost servers?

I have chat integration with mattermost enabled - i subscribed to all “top level” categories that are displayed via the “/discourse watch” command but posts to “sub categories” are not caught.

Take this post: This is a test topic in the sdks category - sdk-c - openziti

it is relayed to slack properly - but it is NOT relayed to mattermost. Slack is able to subscribe to “all categories”. Mattermost does not seem to be able to.

I’ve tried all the syntax I can think of but I’ve not had luck. Any tips??

Thanks in advance…

1 Like

@david - sorry for the mention but I’m missing discourse posts in my chat integration. any chance you’re still watching this thread?

At the moment, sub-categories are not automatically included when you “watch” a category. You’ll need to either add every individual subcategory, or use the “all categories” option.

1 Like

Hey, thanks for replying!!! that’d be sweet if I could figure out ‘how’. The only categories that the plugin seems to recognize are the topmost categories?

I found/tried the “all categories” option but that also doesn’t seem to work? Man I’d really love to just use “all”, that’d be IDEAL… Am i “doing it wrong”? See screen cap below

Hi @david… the problem with the above is i cannot figure out how to sub to a “subcategory” nor does there seem to be an “all” i can use? I’d love to get this figured out.

Thanks!

1 Like

Sorry for the delayed response @Clint_Dovholuk!

Using slash commands, I think you can watch all categories like this:

/discourse watch

But the easiest way to configure notification rules is from the Discourse admin panel. There, all the options are clearly displayed in the UI, so there’s no need to try and work out the precise ‘slash command’ syntax. Check out the ‘configuring rules’ section of the plugin’s documentation for more info.

2 Likes

Thanks @david .

I posted a screen cap from the slash command before. reposting it here… you can see the ‘sub categories’ are not listed a post or two above…

I had tried the admin page before but it would immediately close the dropdown when I used it… However pressing the ‘down arrow’ seemed to jar whatever I needed loose.

I would REALLY like an ‘all’ option. Is this a plugin I can somehow edit/fix??? Right now it looks like this :confused:

To get notifications of all topics, I’d suggest deleting all of those category-specific rules, and then adding a single ‘all categories’ rule.

Can you share some more detail on what you’re seeing here? Some screenshots or a video would be great!

When editing a ‘rule’, you should be able to use the category dropdown to choose ‘(no category)’.

Once saved, it should look like this:

(‘no category’ in the dropdown is clearly a bad description of what it actually means. I’ll get that fixed up)

I think subcategories are ommitted from the help text for space. But you can still subscribe to categories by using their ‘slug’ (the name of the subcategory from the URL). So in the case of #howto:admins here on Meta, it would be /discourse watch admins.