Package: errbot-backend-slackv3
err-backend-slackv3Slack Events and Real Time Messaging backend for ErrbotPurposeThis backend has been developed to support both the Slack Events and Real Time Messaging APIs using the latest SDK from Slack.The backend has been made available outside the core errbot project to allow development and user feedback to happen on independent release cycles.Connection MethodsSlack has been making changes to their OAuth and API architecture that can seem quite confusing.
No matter which OAuth bot token you're using or the API architecture in your environment,slackv3has got you covered.The backend will automatically detect which token and architecture you have and start listening for Slack events in the right way:Legacy tokens (OAuthv1) with Real Time Messaging (RTM) APICurrent token (OAuthv2) with Event API using the Event Subscriptions and Request URL.Current token (Oauthv2) with Event API using the Socket-mode client.Backend InstallationThese instructions are for errbot running inside a Python virtual environment.  You will need to adapt these steps to your own errbot instance setup.
The virtual environment is created in/opt/errbot/virtualenvand errbot initialised in/opt/errbot.  The extra backend directory is in/opt/erbot/backend.Create the errbot virtual environmentmkdir-p/opt/errbot/backend
virtualenv--python=python3/opt/errbot/virtualenvormkdir-p/opt/errbot/backend
python3-mvenv/opt/errbot/virtualenvInstall and initialise errbot.See here for detailssource/opt/errbot/virtualenv/bin/activate
pipinstallerrbotcd/opt/errbot
errbot--initConfigure the slackv3 backend and extra backend directory.  Located in/opt/errbot/config.pyBACKEND="SlackV3"BOT_EXTRA_BACKEND_DIR="/opt/errbot/backend"Cloneerr-backend-slackv3into the backend directory and install module dependencies.cd/opt/errbot/backend
gitclonehttps://github.com/errbotio/err-backend-slackv3# to get a specific release use `--branch <release-tag>`, e.g. `--branch v0.1.0`gitclone--depth1https://github.com/errbotio/err-backend-slackv3
pipinstall.Configure the slack bot token, signing secret (Events API with Request URLs) and/or app token (Events API with Socket-mode).  Located in/opt/errbot/config.pyBOT_IDENTITY={'token':'xoxb-...','signing_secret':"<hexadecimal value>",'app_token':"xapp-..."}Setting up Slack applicationLegacy token with RTMThis was the original method for connecting a bot to Slack.  Create a bot token, configure errbot with it and start using Slack.
Pay attention when readingthis documentexplaining how to create a "classic slack application".  Slack does not allow Legacy bot tokens to use the Events API.Current token with Events Request URLsThis is by far the most complex method of having errbot communicate with Slack.  The architecture involves server to client communication over HTTP.  This means the Slack server must be able to reach errbot's/slack/eventsendpoint via the internet using a valid SSL connection.
How to set up such an architecture is outside the scope of this readme and is left as an exercise for the reader.  Readthis documentfor details on how to configure the Slack app and request URL.Current token with Events Socket-mode clientCreate a current bot token, enable socket mode.  Configure errbot to use the bot and app tokens and start using Slack.
Readthis documentfor instructions on setting up Socket-mode.Ensure the bot is also subscribed to the following events:file_createdfile_publicmessage.channelsmessage.groupsmessage.imMoving from older slack backendsBot AdminsSlack changed the way users are uniquely identified from display name@some_nameto user idUxxxxxx.
Errbot configuration will need to be updated before administrators can be correctly identified aginst
the ACL sets.The UserID is in plain text format.  It can be found in the the Slack full profile page or using the!whoamicommand (personfield).Because BOT_ADMINS is defined as plain text User IDs, they can not be used to send notifications.  The mention format<@Uxxxxx>must be used in the BOT_ADMINS_NOTIFICATIONS configuration setting for errbot to initiate message to bot administrators.