Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kowalczyk-krzysztof/slack-huddle-notification
Slack bot for notifying users about an ongoing huddle
https://github.com/kowalczyk-krzysztof/slack-huddle-notification
huddle mongodb slack slack-bot
Last synced: 3 months ago
JSON representation
Slack bot for notifying users about an ongoing huddle
- Host: GitHub
- URL: https://github.com/kowalczyk-krzysztof/slack-huddle-notification
- Owner: kowalczyk-krzysztof
- Created: 2022-08-14T23:56:13.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-18T22:22:49.000Z (about 2 years ago)
- Last Synced: 2023-12-17T01:36:10.370Z (about 1 year ago)
- Topics: huddle, mongodb, slack, slack-bot
- Language: TypeScript
- Homepage:
- Size: 125 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Slack Huddle Notification
# ⚠️Slack now has implemented built-in notifications when someone starts a huddle in a channel. ⚠️
## How this app works
Slack `public API` doesn't expose any information about huddles.
There is an undocumented API endpoint (`https://edgeapi.slack.com/cache/{TEAM_ID}/huddles/info`) returning info about ongoing huddles but it requires `user token` for authorization. Bot accounts are not permitted to access this endpoint, so instead the app pretends to be an actual user by using a real user token for authorization.
### How to get an user token and authenticate?
1. Log in to Slack in browser to the desired workspace
2. Open network tab and look for requests to `edgeapi.slack.com`
3. Choose a request and check `request payload` for `token` - the value of token will start with `xoxc-`
4. Set env variable `SLACK_USER_TOKEN` to the value of the token
5. From the same request, check the `cookie` tab and copy either the whole cookie or only the needed keys - `d` and `x`
6. Set env variable `COOKIE` to the value you get in previous step. The variable should look like this:```
COOKIE="d=xoxd-%2BmcyU%2BLTIRdfKO%2BmMboAB9weYlV%2BrzLkXRqrZXTnXzUGzLIBAkyRfcUURrNw8VLXZk7tFHVPa%2BwjIHULIepheLJL65mA3YXXeo9wxRD37Mn8c%2By1VcyWvdBdFoy8m%2B0FZ7X19vSRj534xjv2c0ya9jufd7f8sf7dfy7dsfyd7ffd7fydf%3D; x=enod5kiefgfgfd5mgioqfv8s2.1660519318;"
```### How to get `TEAM_ID` and `CHANNEL_ID`?
There are many ways to do that but I believe this is the simplest one:
1. Log in to Slack in browser to the desired workspace
2. Open console
3. Join a huddle in the channel of your choice
4. You should see a log of ongoing events, look for a line that looks like this```
11:02:47.700 Aug-15 11:02:47.700 [HUDDLES] (T03T0K10A2W) sh_room_join, channelId: C03T0K143RQ, participants: 1
```5. `channelId` is your `CHANNEL_ID` and the value in brackets (but without them) `(T03T0K10A2W)` is `TEAM_ID`. Example:
```
CHANNEL_ID=C03T0K143RQ
TEAM_ID=T03T0K10A2W
```## Creating a bot account (dev environment)
1. Go to [Slack Apps page](https://api.slack.com/apps?new_app)
2. Click `Create New App` button and select `From an app manifest`
3. Select a workspace - if you don't see your desired workspace, click `Sign into a different workspace` and sign in
4. Click `Next` and paste the contents of `manifest.yml` found in the root directory in this repository into the `YAML` textarea
5. Review the changes if you wish and click `Create`
6. In the `Basic Information` tab, scroll down to `App-Level Tokens` - this is needed for `Socket Mode` funcionality, which you'll be using in development
7. Click `Generate Token and Scopes`. Name the token however you want then click `Add scope` and select `connections:write` and then click `Generate`
8. You'll see your token, write it down - it will be used as value for `SLACK_APP_TOKEN` env variable
9. Scroll up to `App Credentials` section and reveal the `Signing Secret` value - it will be used as `SLACK_SIGNING_SECRET` env variable
10. Scroll up to `Install your app`, click it then click `Install to Workspace` button and then click `Allow`
11. You'll be shown your `Bot User OAuth Token` - the value is used for `SLACK_BOT_TOKEN` env variable. If lost, you can access it from `Install App` or `OAuth & Permissions` pages
12. Inside `Slack app` go to a channel of your choice then and go to options
13. Go to `Integrations` tab and in the `Apps` section click `Add an App` and select your app.## Running the app locally
1. Add an `.env` file in the root directory and fill it according to `template.env`
2. Run your local MongoDB and fill the `MONGO_CONNECTION_STRING` env variable```
MONGO_CONNECTION_STRING=mongodb://localhost:27017/{database_name}
```Or connect to a remote database
3. `npm install`
4. `npm run dev` to compile `.ts` files in watch mode
5. `npm start`