This documentation describes the integration of MindsDB with Slack, a cloud-based collaboration platform.
The integration allows MindsDB to access data from Slack and enhance Slack with AI capabilities.
Method 1: Chatbot responds in direct messages to a Slack app
One way to connect Slack is to use both bot and app tokens. By following the instructions below, you’ll set up the Slack app and be able to message this Slack app directly to chat with the bot.
If you want to use Slack in the CREATE CHATBOT syntax, use this method of connecting Slack to MindsDB.
Here is how to set up a Slack app and generate both a Slack bot token and a Slack app token:
Follow this link and sign in with your Slack account.
Create a new app From scratch or select an existing app.
Please note that the following instructions support apps created From scratch.
For apps created From an app manifest, please follow the Slack docs here.
Go to Basic Information under Settings.
Under App-Level Tokens, click on Generate Token and Scopes.
Name the token socket and add the connections:write scope.
Copy and save the xapp-... token - you’ll need it to publish the chatbot.
Go to Socket Mode under Settings and toggle the button to Enable Socket Mode.
Go to OAuth & Permissions under Features.
Add the following Bot Token Scopes:
app_mentions:read
channels:history
channels:read
chat:write
groups:history
groups:read (optional)
im:history
im:read
im:write
mpim:read (optional)
users.profile:read
users:read (optional)
In the OAuth Tokens for Your Workspace section, click on Install to Workspace and then Allow.
Copy and save the xoxb-... token - you’ll need it to publish the chatbot.
Go to App Home under Features and click on the checkbox to Allow users to send Slash commands and messages from the messages tab.
Go to Event Subscriptions under Features.
Toggle the button to Enable Events.
Under Subscribe to bot events, click on Add Bot User Event and add app_mention and message.im.
Click on Save Changes.
Now you can use tokens from points 3 and 5 to initialize the Slack handler in MindsDB.
This connection method enables you to chat directly with an app via Slack.
Alternatively, you can connect an app to the Slack channel:
Go to the channel where you want to use the bot.
Right-click on the channel and select View Channel Details.
Method 2: Chatbot responds on a defined Slack channel
Another way to connect to Slack is to use the bot token only. By following the instructions below, you’ll set up the Slack app and integrate it into one of the channels from which you can directly chat with the bot.
Here is how to set up a Slack app and generate a Slack bot token:
Follow this link and sign in with your Slack account.
Create a new app From scratch or select an existing app.
Please note that the following instructions support apps created From scratch.
For apps created From an app manifest, please follow the Slack docs here.
Go to the OAuth & Permissions section.
Under the Scopes section, add the Bot Token Scopes necessary for your application. You can add more later as well.
channels:history
channels:read
chat:write
groups:read
im:read
mpim:read
users:read
Install the bot in your workspace.
Under the OAuth Tokens for Your Workspace section, copy the the Bot User OAuth Token value.
Open your Slack application and add the App/Bot to one of the channels:
Go to the channel where you want to use the bot.
Right-click on the channel and select View Channel Details.
Select Integrations.
Click on Add an App.
Now you can use the token from step 6 to initialize the Slack handler in MindsDB and use the channel name to query and write messages.
The conversations virtual table is used to query conversations (channels, DMs, and groups) in the connected Slack workspace.
-- Retrieve all conversations in the workspaceSELECT * FROM slack_datasource.conversations;-- Retrieve a specific conversation using its IDSELECT * FROM slack_datasource.conversations WHERE id = "<channel-id>";-- Retrieve a specific conversation using its nameSELECT *FROM slack_datasource.conversationsWHERE name = "<channel-name>";
The messages virtual table is used to query, post, update, and delete messages in specific conversations within the connected Slack workspace.
-- Retrieve all messages from a specific conversation-- channel_id is a required parameter and can be found in the conversations tableSELECT * FROM slack_datasource.messages WHERE channel_id = "<channel-id>";-- Post a new message-- channel_id and text are required parametersINSERT INTO slack_datasource.messages (channel_id, text)VALUES("<channel-id>", "Hello from SQL!");-- Update a bot-posted message-- channel_id, ts, and text are required parametersUPDATE slack_datasource.messagesSET text = "Updated message content"WHERE channel_id = "<channel-id>" AND ts = "<timestamp>";-- Delete a bot-posted message-- channel_id and ts are required parametersDELETE FROM slack_datasource.messagesWHERE channel_id = "<channel-id>" AND ts = "<timestamp>";
You can also find the channel ID by right-clicking on the conversation in Slack, selecting ‘View conversation details’ or ‘View channel details,’ and copying the channel ID from the bottom of the ‘About’ tab.
The threads virtual table is used to query and post messages in threads within the connected Slack workspace.
-- Retrieve all messages in a specific thread-- channel_id and thread_ts are required parameters-- thread_ts is the timestamp of the parent message and can be found in the messages tableSELECT * FROM slack_datasource.threads WHERE channel_id = "<channel-id>" AND thread_ts = "<thread-ts>";-- Post a message to a threadINSERT INTO slack_datasource.threads (channel_id, thread_ts, text)VALUES("<channel-id>", "<thread-ts>", "Replying to the thread!");
The users virtual table is used to query user information in the connected Slack workspace.
-- Retrieve all users in the workspaceSELECT * FROM slack_datasource.users;-- Retrieve a specific user by nameSELECT * FROM slack_datasource.users WHERE name = "John Doe";
The Slack API enforces rate limits on data retrieval. Therefore, when querying the above tables, by default, the first 1000 (999 for messages) records are returned.
To retrieve more records, use the LIMIT clause in your SQL queries. For example: