# Slack

## Register OAuth2 app

Go to <https://api.slack.com/apps> and create a new app.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-adfba1d8d76fcea5dd1433b1eae3682d90525355%2Fslack-1.png?alt=media)

Name your application and select a workspace.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-ff6a0b3742164c7276de0d00e82f9b308afe7ba6%2Fslack-2.png?alt=media)

## Basic Information

Then you receive your *clientID*, *clientSecret* and *signingSecret*.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-9866ea751959d8dcf42cafce2a0183c93f4654e5%2Fslack-3.png?alt=media)

After that create an App-Level Token with the following scopes: `authorizations:read`. This token is used verify authorization of the user for incoming Events API requests from Slack.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-6ec2f8947c2ce4837153724d1dc0598242f08a0c%2Fslack-31.png?alt=media)

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-a9b5b7fd1193c96adaa41f744795158762401ec9%2Fslack-32.png?alt=media)

Copy and paste those values into the Backoffice.

* `clientID` is the `Client ID` from the Slack app.
* `clientSecret` is the `Client Secret` from the Slack app.
* `authToken` is the `App-Level Token` from the Slack app.
* `signingSecret` is the `Signing Secret` from the Slack app (just under Client Secret).

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-d445078362decd8a65445b82ea6aa39bb4dcc4dd%2Fslack-4.png?alt=media)

## OAuth & Permissions

### Redirect URL

The next thing is adding the *redirect URL* and *scopes.*

Example redirect URL: `https://api.YOUR_SUBDOMAIN.appmixer.cloud/auth/slack/callback`

![Setting the redirect URL](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-ef5ee59d02236dac108aa7385948c79633440d81%2Fslack-5.png?alt=media)

### Bot Scopes

In order to be able to send messages as bot to channels, you have to add these scopes in the `OAuth & Permissions` section, specifically in the `Bot Token Scopes` section.

***

| Scope                  | Description                                                 |
| ---------------------- | ----------------------------------------------------------- |
| `chat:write`           | Send messages as @BOT                                       |
| `chat:write.customize` | Send messages as @BOT with a customized username and avatar |
| `chat:write.public`    | Send messages to channels @BOT isn't a member of            |

### User Scopes

In order to be able to work with channels and groups as user, you have to add these scopes in the `OAuth & Permissions` section, specifically in the `User Token Scopes` section.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-9a75b5086f5d76ca55e2735061f5838a5eb631b0%2Fslack-6.png?alt=media)

In order to use the application accross workspaces you have to distribute it.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-6f50478ad93a9348d30f5643c60ca6fe6785139d%2Fslack-7.png?alt=media)

![Activate Public Distribution](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-685d8f992ec9412165eb14f93e5e7a02a32e4c11%2Fslack-8.png?alt=media)

## Events API

Some components (`New Channel Message` or `New User`) use Slack Events API (<https://api.slack.com/events-api>). In order to use this components in Appmixer, you have to register Appmixer's Slack URI in Slack first.

Go to <https://api.slack.com/apps> then choose your Appmixer app.

Go to your app settings ([https://api.slack.com/apps/{your-app-id}/event-subscriptions](https://api.slack.com/apps/A2WEBMFC6/event-subscriptions?))

![Slack Event Subscription.](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-b20a5a64ea0c2a646e3e954e9bfb8a87bd4abd0b%2Fslack-9.png?alt=media)

The *Request URL* has to point to your Appmixer backend server. The rest of the URL `/plugins/appmixer/slack/events` has to remain like this. Your Appmixer backend server has to be running before you enter the URL. Slack will immediately try to connect to that URL.

Then you need to subscribe to these events:

* `messages.channels`, `message.groups` for the `New Channel Message` component
* `team_join` for the `New User` component

## ![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-d4328878be138389dab4853e23d6e852ca7e01ee%2Fslack-10.png?alt=media)

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-06c1cb4ab5c375f96f452d6ac39aaf23b4c4ef49%2Fslack-11.png?alt=media)

Don't forget to hit *Save Changes:*

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-48a085aabbae0c3ba023518dbe8da822970eee4f%2Fslack-12.png?alt=media)

You can now use the appmixer.slack.list.NewChannelMessageRT component in a flow.

## Slack app migration

In Appmixer 4.2 the Slack module was upgraded. We did remove all the legacy API and switched to their newest API. For some time, it was possible to use the Appmixer Slack module with both legacy Slack apps and the new Slack apps. But the legacy apps are deprecated and will retire in **August 2021** (<https://api.slack.com/legacy/workspace-apps>). If you use the legacy Slack app, you either have to create a new Slack app or migrate the existing one.

In order to migrate your Slack legacy app, go to *Oauth & Permission* section.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-472dd3bd76cff6c66b31b3432daf8fca348b1b2b%2Fslack-13.png?alt=media)

Then scroll down to *Scopes* and hit the *Update Scopes* button.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-a814b75356b62c4eb22777c8a05d32a8d84d3161%2Fslack-14.png?alt=media)

Ignore the first page, because that's all about scopes for bots.

![Ignore bot scopes](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-ca7d1f1d31112190d4933520ae705887a4a50240%2Fslack-15.png?alt=media)

Scroll all the way down and hit *continue.* You get to a second page with user scopes.

![User scopes](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-856061490d509b810279188bab9d46d9eab5d1cb%2Fslack-16.png?alt=media)

Select *channels:read, channels:history, channels:write, groups:read, groups:write, groups:history, chat:write* and *users:read.*

Verify the scopes and migrate the app.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-217eca6becf8013dd53d42aef53a2c6b4fdc48da%2Fslack-17.png?alt=media)

And confirm. The Appmixer Slack module since version 4.2.1 is already updated and ready for the new Slack apps.

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-e3a2b479e563d027ca3c06281f9a1ed0b5887ba1%2Fslack-18.png?alt=media)

Flows that use the *SendPrivateChannelMessage* component won't work. The component will appear unauthenticated. The reason is a different Oauth scope in the new Slack app version. In this case, the user has to authenticate the component again.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.appmixer.com/connector-configuration/slack.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
