slackteams
uses incoming webhook tokens to interact with
the Slack API. There are two main methods to create a token.
slackteams::add_team_interactive
to interactively
create a token for the R session.Each has their own pros and cons depending on what type of usage you may have
Token Type | User Level | Session Persistent | Manage Multiple Teams in Session | Store Credentials Locally | Depend on External Server |
---|---|---|---|---|---|
Interactive | All | No | Yes | No | No |
BYOT | Intermediate | Yes | No | Yes | No |
This is similar to oauth2 implementation you would see in googlesheets4. The steps are:
R
consoleThis is by far the easiest method.
The main piece that the user controls are the permission scopes the token has
attached to it. To help with this we use a yaml file to allow users to
define locally what scopes they want to define. {slackteams} comes with
its own yaml file with the scopes that are needed to use all of
slackverse
.
scopes
channels
: public channels in the workspacegroups
: private channels that your slack app has been
added tousers
: people in the workspaceim
: direct messages that your slack app has been added
tompim
: group direct messages that your slack app has
been added toemoji
: custom emoji in the workspacefiles
: files shared in channels and conversations that
your slack app has been added tousergroups
: user groups in the workspacechat
: messages in approved channels &
conversationsteam
: team metainformationpermissions
write
access mean that you can post content in a
scoperead
access mean that you can view basic information
about a scopehistory
access mean that you can view messages and
other content in a scopeThe following yaml contains a base
role which contains
only read access permissions and slackverse
role containing
permissions needed for the packages in slackverse
.
Click the triangle to view the scopes and the permission of each of these roles:
base:
- channels:
- read
- users:
- read
- groups:
- read
- mpim:
- read
- im:
- read
- team:
- read
slackverse:
- channels:
- history
- read
- write
- users:
- read
- groups:
- history
- read
- write
- mpim:
- history
- read
- write
- im:
- history
- read
- write
- usergroups:
- read
- chat:
- write
- emoji:
- read
- files:
- read
- write
- team:
- read
The default scope is called by
slackteams::add_team_interactive(
scopes = load_scopes(
system.file("scopes.yml", package = "slackteams"),
"base"
)
)
and corresponds to
slackteams::add_team_interactive(scopes = load_scopes())
To use the slackverse
role, use
slackteams::add_team_interactive(which = "slackverse"))
It is also possible to define custom roles. To do this, define a scopes file, for example “custom_scopes.yml”, which should have scopes defined following the Slack permission scopes. For example
{details,details.lang = 'yml',details.summary = 'Custom Scopes',echo= FALSE}` base: - channels: - read - users: - read - groups: - read - mpim: - read - im: - read - team: - read analyze: - channels: - read - history - users: - read - groups: - read - history - mpim: - read - im: - read - history - team: - read - links: - read postanalysis: - channels: - read - users: - read - groups: - read - mpim: - read - im: - write - team: - read
The resulting file can then be used, for example as
slackteams::add_team_interactive(
scopes = load_scopes("/path/to/custom_scopes.yml", which = "analyze")
)