Mattermost, Inc.

Interactive messages in direct message channel

Do interactive messages work in direct message channels?

While I can use the APIs to create interactive messages (ie. those with buttons/menus) in both public and direct message channels, Mattermost does not send an event to my integration endpoint when I click on a button in the direct message channel.

The message I create is the same in each one, something like this:

 "channel_id": "{THE CHANNEL ID}",
 "props": {
           "attachments": [
                            "actions": [
                                         "name": "Click me",
                                         "integration": {
                                                         "url": "http://host.docker.internal:8080/mattermost",
                                                         "context": {
                                                                     "message": "Context message"
                            "text": "A button to click"

I can send this message to both a public channel or a direct message channel. It renders as expected in both.

When I click on the message in the public channel, I get a call to my server. However, when I click on the message in the direct message channel, I get nothing.

I haven’t found anything in the documentation (or this forum) that indicates whether this should work or not. Am I missing something?



Using Chrome dev tools, I can see the webapp post to http://localhost:8065/api/v4/posts/zcrco8hbppbutgyazoahngfgca/actions/tiprgoyh53fj3edmfi6q3thkye and get back a response like this:

{"id":"store.sql_team.get.find.app_error","message":"Unable to find the existing team","detailed_error":"","request_id":"s3tbgf44cfb7dyszioobwa63yh","status_code":404}

I would expect that either:

  1. Interactive messages are not supported in direct messages, and I shouldn’t be able to post one there.
  2. Interactive messages are supported in direct messages, and when clicking a button my registered integration endpoint should receive a payload (with or without a team id).

Note: I’ve commented on a closed issue issue in GitHub that might describe this problem (