Under the hood, each Hubot using this adapter is connected to Slack using the RTM API. A
connection to the RTM API is initiated using rtm.start
.
By default, the adapter calls this method with only the required token
parameter. If you have more specialized needs,
such as opting into MPIM data, you can add additional parameters to that Web API call by setting an environment
variable. The variable is called HUBOT_SLACK_RTM_START_OPTS
, and its value should be a JSON-encoded string with
the additional parameters as key-value pairs. Here is an example of running hubot with that environment variable set:
$ HUBOT_SLACK_TOKEN=xoxb-xxxxx HUBOT_SLACK_RTM_START_OPTS='{ "mpim_aware": true }' ./bin/hubot --adapter slack
The RTM connection is handled by the RtmClient
class from our handy
Slack Developer Kit for Node.js version 3. By default, the adapter instantiates the client with the required
token
parameter, but more options are available. You can customize the options for the RtmClient
instance by setting
an environment variable. The variable is called HUBOT_SLACK_RTM_CLIENT_OPTS
, and its value should be a JSON-encoded
string with the additional parameters as key-value pairs. Note that not every option can only be set to JSON-encodable
values; you won’t be able to create an instance of SlackDataStore
and pass it in via a JSON string but you can set the
option to false
to opt out of using a Data Store (not recommended). Here is an example of running hubot with a custom
retry configuration:
$ HUBOT_SLACK_TOKEN=xoxb-xxxxx HUBOT_SLACK_RTM_CLIENT_OPTS='{ "retryConfig": { "retries": 20 } }' ./bin/hubot --adapter slack
Hubot has a flag for setting a log level, called HUBOT_LOG_LEVEL
. This adapter peforms all of its logging through
Hubot, so setting it to its most detailed level, debug
, can give you much more detailed information about activity
at runtime. Here is an example of running hubot with its log level set to debug
:
$ HUBOT_SLACK_TOKEN=xoxb-xxxxx HUBOT_LOG_LEVEL=debug ./bin/hubot --adapter slack
The underlying Slack Developer Kit for Node.js can also be supplied with a log level to get even more information at runtime. Here is an example of combining both of these options:
$ HUBOT_SLACK_TOKEN=xoxb-xxxxx HUBOT_LOG_LEVEL=debug HUBOT_SLACK_RTM_CLIENT_OPTS='{ "logLevel": "debug" }' ./bin/hubot --adapter slack
You might find your Hubot unable to access a Web API method. For some methods, you can resolve this by transitioning from an App Bot to a Custom Bot (these methods are listed here). If the method isn’t available to a Custom Bot, you’ll have to use an App Bot and also manage a new token.
You will also need to manage a new token if you’re considering distributing your Hubot powered app in the App Directory.
Start by finding the new scope that your app will require. Required scopes are specified on the documentation for each Web API method. Add this scope to your app on the “OAuth and Permissions” page of your app configuration. Once you save the changes, you need to install the app on your development workspace once again.
After installing the app and authorizing the new scope, you’ll notice a new OAuth Access Token (begins with xoxp
).
This is the new token that you’ll need to manage. We recommend putting the new token in another environment variable,
and using it to initialize a new WebClient
object, as described in
Using the Slack Web API. For
example, if you put the new token in an environment variable called SLACK_OAUTH_TOKEN
, you’d simply change the
initialization of the WebClient
object to the following:
web = new WebClient process.env.SLACK_OAUTH_TOKEN
You might find the need to run Hubot inside a firewall, where the internet is only accessible via a specific proxy.
Have no fear, environment variable configuration is here. Just add the https_proxy
environment variable to your
startup (we’ll just do this on the command line for this example) with the address and authentication information of
your proxy.
$ https_proxy="http://user:pass@localhost:8888" HUBOT_SLACK_TOKEN=xoxb-xxxxx ./bin/hubot --adapter slack
Generally, it’s not supposed to invite Hubot to external shared channels. That said, the situation may arise regardless of intention.
If your workspace admins would like to surely turn off Hubot’s reactions to other workspace users, set INSTALLED_TEAM_ONLY
env variable as true
. With this option, this adapter reacts to only the messages generated by its own installed workspace users while it skips all from other workspaces.
$ HUBOT_SLACK_TOKEN=xoxb-xxxxx INSTALLED_TEAM_ONLY=true ./bin/hubot --adapter slack