This example app shows how easy it is to implement the Slack Events API Adapter to receive Slack Events and respond to messages using Slack's Web API via python-slackclient v2.
Set up your Python environment:
We're using venv (or virtualenv) to keep the dependencies and environmental variables specific to this app. See venv docs for more info.
python -m venv .venv
Then initialize the virtualenv:
source .venv/bin/activate
Install the app's dependencies:
pip install -r requirements.txt
🤖 Create a Slack app
Create a Slack app on https://api.slack.com/apps/
🤖 Add a bot user to your app
🤖 Install your app on your team
Visit your app's Install App page and click Install App to Team.
Authorize your app
🤖 Save your app's credentials
Once you've authorized your app, you'll be presented with your app's tokens.
Copy your app's Bot User OAuth Access Token and add it to your python environmental variables
export SLACK_BOT_TOKEN=xoxb-111-222-xxxXXxxXXxXXxXXXXxxxX
Next, go back to your app's Basic Information page
Add your app's Signing Secret to your python environmental variables
export SLACK_SIGNING_SECRET=xxxxxxxxXxxXxxXxXXXxxXxxx
🤖 Start ngrok
In order for Slack to contact your local server, you'll need to run a tunnel. We recommend ngrok or localtunnel. We're going to use ngrok for this example.
If you don't have ngrok, download it here.
Here's a rudimentary diagream of how ngrok allows Slack to connect to your server
- 💡 Slack requires event requests be delivered over SSL, so you'll want to
- use the HTTPS URL provided by ngrok.
Run ngrok and copy the HTTPS URL
ngrok http 3000
ngrok by @inconshreveable (Ctrl+C to quit) Session status online Version 2.1.18 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://h7465j.ngrok.io -> localhost:9292 Forwarding https://h7465j.ngrok.io -> localhost:9292
🤖 Run the app:
You'll need to have your server and ngrok running to complete your app's Event Subscription setup
python example.py
🤖 Subscribe your app to events
Add your Request URL (your ngrok URL + /slack/events
) and subscribe your app to message.channels and reaction_added under bot events on this same page (note that this not the same as adding Scopes on the OAuth & Permissions page). Save and toggle Enable Events to on
🎉 Once your app has been installed and subscribed to Bot Events, you will begin receiving event data from Slack
👋 Interact with your bot:
Invite your bot to a public channel, then say hi and your bot will respond
hi @bot 👋
Need help? Join Bot Developer Hangout and talk to us in #slack-api.
You can also create an Issue right here on GitHub.