Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/upstash/vercel-note-taker-slackbot

Serverless Slackbot with Vercel
https://github.com/upstash/vercel-note-taker-slackbot

redis serverless upstash vercel

Last synced: about 1 month ago
JSON representation

Serverless Slackbot with Vercel

Awesome Lists containing this project

README

        

# Note Taker Slack App/Bot
This is a Slack Bot, using Vercel for serverless deployment and Upstash Redis for database.

## Deploy This Project on Vercel!
Simply fill the environmental variables defined below and your serverless functions will be up in seconds!


Deploy with Vercel

## Docs
- ### [What the Bot Does](#what-this-bot-does)
- ### [Configuring Upstash](#configure-upstash)
- ### [Configuring Slack Bot - 1](#configure-slack-bot-1)
- ### [Deploying on Vercel](#deploy-on-vercel)
- ### [Configuring Slack Bot - 2](#configure-slack-bot-2)
***

### What The Bot Does

* Events:
* New channel created:
* When a new is channel created, posts a message to `general` channel stating that such an event happened.
* Slackbot mentioned:
* Whenever the bot is mentioned, posts a
message to `general` channel stating
that the bot was mentioned.



* Commands:
* `/note set ` :
* Sets a key value pair.
* `/note get ` :
* Gets the value corresponding to the key
* `/note list-set ` :
* Adds the `` to `` list as an item.
* `/note list-all ` :
* Lists all the items in the ``
* `/note list-remove ` :
* Removes `` from the ``



* P.S:
* All of the commands mentioned can be implemented as slackbot mentions rather than slash commands. For demonstration purposes, slash commands are also used. Use cases may differ.

***
### Configuring Upstash

1. Go to the [Upstash Console](https://console.upstash.com/) and create a new database

#### Upstash environment
Find the variables in the database details page in Upstash Console:
`UPSTASH_REDIS_REST_URL` and `UPSTASH_REDIS_REST_TOKEN`

(These will be the env variables for vercel deployment)

***
### Configuring Slack Bot - 1

1. Go to [Slack API Apps Page](https://api.slack.com/apps):
* Create new App
* From Scratch
* Name your app & pick a workspace
* Go to Oauth & Permissions
* Add the following scopes
* app_mentions:read
* channels:read
* chat:write
* chat:write.public
* commands
* Install App to workspace
* Basic Information --> Install Your App --> Install To Workspace
2. Note the variables (These will be the env variables for vercel deployment) :
* `SLACK_SIGNING_SECRET`:
* Go to Basic Information
* App Credentials --> Signing Secret
* `SLACK_BOT_TOKEN`:
* Go to OAuth & Permissions
* Bot User OAuth Token

***
### Deploying on Vercel

1. Click the deploy button:


Deploy with Vercel

2. Fill the environmental variables defined above.

***
### Configuring Slack Bot - 2

* After deployment, you can use the provided `vercel_domain`.

1. Go to [Slack API Apps Page](https://api.slack.com/apps) and choose relevant app:
* Go to Slash Commands:
* Create New Command:
* Command : `note`
* Request URL : `/api/note`
* Configure the rest however you like.
* Go to Event Subscribtions:
* Enable Events:
* Request URL: `/api/events`
* Subscribe to bot events by adding:
* app_mention
* channel_created

2. After these changes, Slack may require reinstalling of the app.

### Additionally
For additional explanations of the source code and how to run it locally, you can refer to [the blogpost](https://blog.upstash.com/vercel-note-taker-slackbot).