Tokens in slack can only be retrieved from the your slack apps oauth page. This cannot be done via the API. If you want to send the messages as another user what you need to so is Create the a slack app using the users account. In addition to delivering content to Looker's built-in destinations, you can deliver content to third-party services integrated with.In addition to delivering content to Looker's built-in.
Visit Slack API for the latest on platform features. API tokens can be created for both members and bot users. For added security, it’s a good idea to rotate these tokens periodically. Slack is a popular communication and collaboration tool, and their API gives us access to channels, messages, and more. Let's check it out!
The Slack Web API allows you to build applications that interact with Slack in more complex ways than the integrations we provide out of the box.
Access Slack’s API methods requires an OAuth token – see the Tokens & Authentication section for more on how Slack uses OAuth tokens as well as best practices.
Each of these API methods is fully documented on our developer site at api.slack.com
Sending a message¶
One of the primary uses of Slack is posting messages to a channel using the channel ID or as a DM to another person using their user ID. This method will handle either a channel ID or a user ID passed to the channel
parameter.
Sending an ephemeral message, which is only visible to an assigned user in a specified channel, is nearly the sameas sending a regular message, but with an additional user
parameter.
See chat.postEphemeral for more info.
Formatting with Block Kit¶
Messages posted from apps can contain more than just text, though. They can include full user interfaces composed of blocks.
The chat.postMessage method takes an optional blocks argument that allows you to customize the layout of a message. Blocks specified in a single object literal, so just add additional keys for any optional argument.
To send a message to a channel, use the channel’s ID. For IMs, use the user’s ID.
Note: You can use the Block Kit Builder to prototype your message’s look and feel.
Threading Messages¶
Threaded messages are a way of grouping messages together to provide greater context. You can reply to a thread or start a new threaded conversation by simply passing the original message’s ts
ID in the thread_ts
attribute when posting a message. If you’re replying to a threaded message, you’ll pass the thread_ts ID of the message you’re replying to.
A channel or DM conversation is a nearly linear timeline of messages exchanged between people, bots, and apps. When one of these messages is replied to, it becomes the parent of a thread. By default, threaded replies do not appear directly in the channel, instead relegated to a kind of forked timeline descending from the parent message.
By default, reply_broadcast
is set to False
. To indicate your reply is germane to all members of a channel, and therefore a notification of the reply should be posted in-channel, set the reply_broadcast
to True
.
Note: While threaded messages may contain attachments and message buttons, when your reply is broadcast to thechannel, it’ll actually be a reference to your reply, not the reply itself.So, when appearing in the channel, it won’t contain any attachments or message buttons. Also note that updates anddeletion of threaded replies works the same as regular messages.
See the Threading messages togetherarticle for more information.
Updating a message¶
Let’s say you have a bot which posts the status of a request. When that request changes, you’ll want to update the message to reflect it’s state.
See chat.update for formatting options and some special considerations when calling this with a bot user.
Deleting a message¶
Sometimes you need to delete things.
See chat.delete for more info.
Opening a modal¶
Modals allow you to collect data from users and display dynamic information in a focused surface.
Modals use the same blocks that compose messages with the addition of an input block.
See views.open more details and additional parameters.
Also, to run the above example, the following Slack app configurations are required.
Enable Interactivity with a valid Request URL:
https://{your-public-domain}/slack/events
Add a global shortcut with the Callback ID:
open-modal-shortcut
Updating and pushing modals¶
You can dynamically update a view inside of a modal by calling views.update and passing the view ID returned in the previous views.open call.
See views.update for more info.
If you want to push a new view onto the modal instead of updating an existing view, reference the views.push documentation.
Emoji reactions¶
You can quickly respond to any message on Slack with an emoji reaction. Reactions can be used for any purpose: voting, checking off to-do items, showing excitement -— or just for fun.
This method adds a reaction (emoji) to an item (file
, filecomment
, channelmessage
, groupmessage
, or directmessage
). One of file, file_comment, or the combination of channel and timestamp must be specified.
Removing an emoji reaction is basically the same format, but you’ll use reactions.remove
instead of reactions.add
See reactions.add and reactions.remove for more info.
Listing public channels¶
At some point, you’ll want to find out what channels are available to your app. This is how you get that list.
Archived channels are included by default. You can exclude them by passing exclude_archived=1
to your request.
See conversations.list for more info.
Getting a channel’s info¶
Once you have the ID for a specific channel, you can fetch information about that channel.
See conversations.info for more info.
Joining a channel¶
Channels are the social hub of most Slack teams. Here’s how you hop into one:
If you are already in the channel, the response is slightly different.already_in_channel
will be true, and a limited channel
object will be returned. Bot users cannot join a channel on their own, they need to be invited by another user.
See conversations.join for more info.
Leaving a channel¶
Maybe you’ve finished up all the business you had in a channel, or maybe youjoined one by accident. This is how you leave a channel.
See conversations.leave for more info.
Listing team members¶
See users.list for more info.
Uploading files¶
See files.upload for more info.
Calling any API methods¶
This library covers all the public endpoints as the methods in WebClient
. That said, you may see a bit delay of the library release. When you’re in a hurry, you can directly use api_call
method as below.
Web API Rate Limits¶
When posting messages to a channel, Slack allows applications to send no more than one message per channel per second. We allow bursts over that limit for short periods. However, if your app continues to exceed the limit over a longer period of time it will be rate limited. Different API methods have other rate limits – be sure to check the limits and test that your application has a graceful fallback if it should hit those limits.
If you go over these limits, Slack will start returning a HTTP 429 Too Many Requests error, a JSON object containing the number of calls you have been making, and a Retry-After header containing the number of seconds until you can retry.
Slack Bearer Token
Here’s a very basic example of how one might deal with rate limited requests.
See the documentation on Rate Limiting for more info.
Management
Reports
Distribution
Distribution
This example shows how to use the Mode API to create a schedule for delivering reports via Slack. You can use this example to create multiple schedules with different parameter values, to send a report to different Slack channels, and so on.
Slack Api Key
Endpoints used
.../{organization}/reports/{report_token}/subscriptions
Supported methods:
- GET: returns all schedules for a report
- POST: creates a new schedule
.../{organization}/reports/{report_token}/subscriptions/{subscription_token}
Supported methods:
- GET: returns a schedule
- PATCH: updates a schedule
.../{organization}/reports/{report_token}/subscriptions/{subscription_token}/slack_memberships
Supported methods:
- GET: returns the Slack channel to which the report is delivered on schedule
- POST: adds Slack channel to which the report is delivered on schedule
- PATCH: updates the channel to which the report is delivered on schedule
Slack Api Token For Channel
How this example works
In this example, the create_slack_schedule
method first makes a POST
request to app.mode.com/api/{organization}/reports/{report_token}/subscriptions
, creating a schedule. You can specify the time interval, preview/report link preferences, and parameter values in the payload. We then make a GET
request to that same endpoint, to return all schedules in the report. We look at the first schedule on the list, the most recently created one, and get its subscription token. This subscription token lets us add a Slack channel by making a subsequent POST
request to app.mode.com/api/{organization}/reports/{report_token}/subscriptions/{subscription_token}/slack_memberships
.
How To Get Slack Token
To try it yourself
- Download the example code to a
.py
file - Input the API token, API secret, organization name, and other custom information as needed. An API token and secret can be generated here
- Save the .py file in your desired directory
- Open the terminal and navigate to that directory
- Run the command
python3 {file_name}.py
- All of our Python recipes require Python 3