This application is helping anyone manage a Slack community semi-automate, in a less obvious, and more human way, welcome new members.
It's a matter of personal opinion, but personally, there is nothing I find less welcoming than receiving a welcome message from a bot when I join a new community. There is also the clearly automated message, but coming from the community manager, founder or developer advocate, sent at like 3AM their time. It's a bit better than from a bot, but it's not there yet. Since communities are all about humans, but welcoming everyone manually is time consuming, even if I consider it to be super important for a healthy community.
I created this Slack application to help me welcome new members on my Slack community in a more human way while making it as easy and not time consuming at all. Here is how it works:
- When John Doe, a new member, join the community, Slack is firing an event that is sent to the application;
- The application send the person responsible for welcoming new users (configured in the .env file), in that instance, me, a message saying that John Doe just joined the community;
- The message sent, contains a button to welcome John Doe directly;
- When I'm online, and I have time to answer any of their question, I then press the button, and a predefined welcome message (configured in the .env file) is sent to John Doe, which include his full name;
- This process is repeated every time someone joins, so if two people joined while you were busy, once you're back on your Slack community, you'll see two messages with two buttons to press as you wish.
First, you need to run the application on a cloud provider: you could run it locally but it needs to be accessible from the internet so Slack can send events to it. You will need to have Node.js, and npm running on your cloud provider. Once you are ready to install the application, you can either clone this repository using the git clone git@github.com:fharper/warm-welcome.git
command or you can just download the latest release. Once the files are in place, run npm install
to install all the dependencies. Be sure to update the following variable in the .env file):
- YOUR_USER_ID: to get the user ID of the person who will send the welcome message, click on their name (either within a channel, or at the top of a direct message). On the left pane that opened, click on the three vertical dots, and choose
Copy member ID
. If it's yourself, click on your profile icon at the top right of Slack, and follow the same steps. -WELCOME_PART1 & WELCOME_PART2: the automated message is built with two parts,WELCOME_PART1
being the text before the new user's full name, andWELCOME_PART2
the text after.
Future versions of this app will probably use templating, so this stupid implementation of WELCOME_PART1
& WELCOME_PART2
will be things of the past.
Once it's done, you can run the application using the node index.js
command. You would be advised to run it as a service to ensure it's always running, and restart when there is an issue (running it with something like pm2 pm2 start index.js
). Note that the app won't work at first as you need to update the other variables from the .env file), but you won't be able to do it before you create the Slack application.
You can also run the application using Docker
docker build -t warm-welcome .
docker run -p 80:8080 warm-welcome
First, you need to create a new Slack application. To do so, connect to your Slack Workspace in the browser, and go to Your Apps. Click on the Create an app
button, and choose the second option named From an app manifest
. On step 1 of 3 screens, pick the workspace you want to welcome people, and click Next
.
Before the step 2, update the manifest.yml file with the proper URL for your application. You need to update the YOUR-APP-DOMAIN-GOES.HERE
part of the following members:
redirect_urls
from theoauth_config
parent;request_url
from thesettings > event_subscriptions
parent member;request_url
from thesettings > interactivity
parent member.
Do not change the second part of the URL. Feel free to change the members name
& description
from the display_information
parent to an application name and description that you prefer. You can also change the display_name
member from the bot_user > features
parent for a preferred bot name.
On the step 2 of 3 screen, click on YAML
, overwrite the text with the content from the manifest.yml file, and click Next
. On the last screen, step 3 of 3, please validate that all the information is OK, and click the Create
button. On the Basic Information
screen, click on the "Install to Workspace" button. It will install the app to the workspace, and add the warm-welcome bot to it. Don't close this page yet, you'll need it for the next step.
If at some point, you update the URL in the Slack application manifest, you'll be asked to verify the event URL. To do so, run
./node_modules/.bin/slack-verify --secret SLACK_SIGNING_SECRET
while replacingSLACK_SIGNING_SECRET
with theSigning Secret
value. Please read the next section to learn how to get that value.
Now that the Slack application is deployed, you need to update the configurations in the .env
file from the information found on the page you kept open. Don't worry, it's the last step!
- SLACK_SIGNING_SECRET: from the
Settings
menu chooseBasic Information
(you should already be on that page). Under theApp Credentials
section, get theSigning Secret
value; - YOUR_USER_TOKEN: from the same page, under the
Building Apps for Slack
section, expend theAdd features and functionality
subsection, and click onPermissions
which will bring you to theOAuth & Permissions
page. On that page, under theOAuth Tokens for Your Workspace
section, copy the value ofUser OAuth Token
; - SLACK_BOT_TOKEN: now copy the
Bot User OAuth Token
value.
Once you completed these steps, everything should be working. Congratulations!
If you want to test if everything is working, join your Slack community as a new user. At that point, the bot named warm-welcome
(of the name you gave it in the manifest.yml file) should send you a message in the form of john-doe joined Slack! Welcome the new user now?
with a green Now
button. If you press the button, John Doe will receive your message. If one of these steps isn't working, check the log from your web server as there's probably something wrong with the Node.js app. If the logs are fine, check if the app can be reachable from outside of your server, and validate the information on the Slack application page named App Manifest
under the Features
section.