docs/integrations/app-integrations/slack.mdx
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.
Before proceeding, ensure the following prerequisites are met:
Establish a connection to Slack from MindsDB by executing the following SQL command and providing its handler name as an engine.
CREATE DATABASE slack_datasource
WITH ENGINE = 'slack',
PARAMETERS = {
"token": "values", -- required parameter
"app_token": "values" -- optional parameter
};
The Slack handler is initialized with the following parameters:
token is a Slack bot token to use for authentication.app_token is a Slack app token to use for authentication.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.
<Note> If you want to use Slack in the [`CREATE CHATBOT`](/agents/chatbot) syntax, use this method of connecting Slack to MindsDB. </Note> <Accordion title="Set up a Slack app and generate tokens"> Here is how to set up a Slack app and generate both a Slack bot token and a Slack app token:From scratch or select an existing app.
From scratch.From an app manifest, please follow the Slack docs here.socket and add the connections:write scope.xapp-... token - you'll need it to publish the chatbot.xoxb-... token - you'll need it to publish the chatbot.app_mention and message.im.Alternatively, you can connect an app to the Slack channel:
Here is how to connect Slack to MindsDB:
CREATE DATABASE slack_datasource
WITH
ENGINE = 'slack',
PARAMETERS = {
"token": "xoxb-...",
"app_token": "xapp-..."
};
It comes with the conversations and messages tables.
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.
<Accordion title="Set up a Slack app and generate tokens"> Here is how to set up a Slack app and generate a Slack bot token:From scratch or select an existing app.
From scratch.From an app manifest, please follow the Slack docs here.Here is how to connect Slack to MindsDB:
CREATE DATABASE slack_datasource
WITH
ENGINE = 'slack',
PARAMETERS = {
"token": "xoxb-..."
};
See the usage for Connection Method 1 via the CREATE CHATBOT syntax.
</Warning>
Retrieve data from a specified table by providing the integration and table names:
SELECT *
FROM slack_datasource.table_name
LIMIT 10;
The Slack integration supports the following tables:
conversations TableThe conversations virtual table is used to query conversations (channels, DMs, and groups) in the connected Slack workspace.
-- Retrieve all conversations in the workspace
SELECT *
FROM slack_datasource.conversations;
-- Retrieve a specific conversation using its ID
SELECT *
FROM slack_datasource.conversations
WHERE id = "<channel-id>";
-- Retrieve a specific conversation using its name
SELECT *
FROM slack_datasource.conversations
WHERE name = "<channel-name>";
messages TableThe 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 table
SELECT *
FROM slack_datasource.messages
WHERE channel_id = "<channel-id>";
-- Post a new message
-- channel_id and text are required parameters
INSERT 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 parameters
UPDATE slack_datasource.messages
SET text = "Updated message content"
WHERE channel_id = "<channel-id>" AND ts = "<timestamp>";
-- Delete a bot-posted message
-- channel_id and ts are required parameters
DELETE FROM slack_datasource.messages
WHERE channel_id = "<channel-id>" AND ts = "<timestamp>";
threads TableThe 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 table
SELECT *
FROM slack_datasource.threads
WHERE channel_id = "<channel-id>" AND thread_ts = "<thread-ts>";
-- Post a message to a thread
INSERT INTO slack_datasource.threads (channel_id, thread_ts, text)
VALUES("<channel-id>", "<thread-ts>", "Replying to the thread!");
users TableThe users virtual table is used to query user information in the connected Slack workspace.
-- Retrieve all users in the workspace
SELECT *
FROM slack_datasource.users;
-- Retrieve a specific user by name
SELECT *
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:
SELECT *
FROM slack_datasource.conversations
LIMIT 2000;
When using the LIMIT clause to query additional records, you may encounter Slack API rate limits.
Follow this tutorial to build an AI agent with MindsDB.