Slack Integration ↗
noOriginal Documentation
Documentation Index#
Fetch the complete documentation index at: https://docs.crewai.com/llms.txt Use this file to discover all available pages before exploring further.
Team communication and collaboration with Slack integration for CrewAI.
Overview#
Enable your agents to manage team communication through Slack. Send messages, search conversations, manage channels, and coordinate team activities to streamline your collaboration workflows with AI-powered automation.
Prerequisites#
Before using the Slack integration, ensure you have:
- A CrewAI AMP account with an active subscription
- A Slack workspace with appropriate permissions
- Connected your Slack workspace through the Integrations page
Setting Up Slack Integration#
1. Connect Your Slack Workspace#
- Navigate to CrewAI AMP Integrations
- Find Slack in the Authentication Integrations section
- Click Connect and complete the OAuth flow
- Grant the necessary permissions for team communication
- Copy your Enterprise Token from Integration Settings
2. Install Required Package#
uv add crewai-tools3. Environment Variable Setup#
To use integrations with Agent(apps=[]), you must set the
CREWAI_PLATFORM_INTEGRATION_TOKEN environment variable with your Enterprise
Token.
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"Or add it to your .env file:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_tokenAvailable Tools#
User Management#
Parameters:
No parameters required - retrieves all channel members
Description: Find a user in your Slack workspace by their email address.
Parameters:
email(string, required): The email address of a user in the workspace
Description: Search for users by their name or display name.
Parameters:
name(string, required): User’s real name to search fordisplayName(string, required): User’s display name to search forpaginationParameters(object, optional): Pagination settingspageCursor(string, optional): Page cursor for pagination
Channel Management#
Parameters:
- No parameters required - retrieves all accessible channels
Messaging#
Parameters:
channel(string, required): Channel name or ID - Use Connect Portal Workflow Settings to allow users to select a channel, or enter a channel name to create a new channelmessage(string, required): The message text to sendbotName(string, required): The name of the bot that sends this messagebotIcon(string, required): Bot icon - Can be either an image URL or an emoji (e.g., “:dog:”)blocks(object, optional): Slack Block Kit JSON for rich message formatting with attachments and interactive elementsauthenticatedUser(boolean, optional): If true, message appears to come from your authenticated Slack user instead of the application (defaults to false)
Description: Send a direct message to a specific user in Slack.
Parameters:
memberId(string, required): Recipient user ID - Use Connect Portal Workflow Settings to allow users to select a workspace membermessage(string, required): The message text to sendbotName(string, required): The name of the bot that sends this messagebotIcon(string, required): Bot icon - Can be either an image URL or an emoji (e.g., “:dog:”)blocks(object, optional): Slack Block Kit JSON for rich message formatting with attachments and interactive elementsauthenticatedUser(boolean, optional): If true, message appears to come from your authenticated Slack user instead of the application (defaults to false)
Search & Discovery#
Parameters:
query(string, required): Search query using Slack search syntax to find messages that match specified criteria
Search Query Examples:
"project update"- Search for messages containing “project update”from:@john in:#general- Search for messages from John in the #general channelhas:link after:2023-01-01- Search for messages with links after January 1, 2023in:@channel before:yesterday- Search for messages in a specific channel before yesterday
Block Kit Integration#
Slack’s Block Kit allows you to create rich, interactive messages. Here are some examples of how to use the blocks parameter:
Simple Text with Attachment#
[
{
"text": "I am a test message",
"attachments": [
{
"text": "And here's an attachment!"
}
]
}
]Rich Formatting with Sections#
[
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Project Update*\nStatus: ✅ Complete"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "plain_text",
"text": "All tasks have been completed successfully."
}
}
]Usage Examples#
Basic Slack Agent Setup#
from crewai import Agent, Task, Crew
# Create an agent with Slack capabilities
slack_agent = Agent(
role="Team Communication Manager",
goal="Facilitate team communication and coordinate collaboration efficiently",
backstory="An AI assistant specialized in team communication and workspace coordination.",
apps=['slack'] # All Slack actions will be available
)
# Task to send project updates
update_task = Task(
description="Send a project status update to the #general channel with current progress",
agent=slack_agent,
expected_output="Project update message sent successfully to team channel"
)
# Run the task
crew = Crew(
agents=[slack_agent],
tasks=[update_task]
)
crew.kickoff()Filtering Specific Slack Tools#
from crewai import Agent, Task, Crew
# Create agent with specific Slack actions only
communication_manager = Agent(
role="Communication Coordinator",
goal="Manage team communications and ensure important messages reach the right people",
backstory="An experienced communication coordinator who handles team messaging and notifications.",
apps=[
'slack/send_message',
'slack/send_direct_message',
'slack/search_messages'
] # Using canonical action names from canonical_integrations.yml
)
# Task to coordinate team communication
coordination_task = Task(
description="Send task completion notifications to team members and update project channels",
agent=communication_manager,
expected_output="Team notifications sent and project channels updated successfully"
)
crew = Crew(
agents=[communication_manager],
tasks=[coordination_task]
)
crew.kickoff()Advanced Messaging with Block Kit#
from crewai import Agent, Task, Crew
# Create agent with Slack messaging capabilities
notification_agent = Agent(
role="Notification Manager",
goal="Create rich, interactive notifications and manage workspace communication",
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
apps=['slack/send_message'] # Specific action for sending messages
)
# Task to send rich notifications
notification_task = Task(
description="""
1. Send a formatted project completion message to #general with progress charts
2. Send direct messages to team leads with task summaries
3. Create interactive notification with action buttons for team feedback
""",
agent=notification_agent,
expected_output="Rich notifications sent with interactive elements and formatted content"
)
crew = Crew(
agents=[notification_agent],
tasks=[notification_task]
)
crew.kickoff()Message Search and Analytics#
from crewai import Agent, Task, Crew
# Create agent with Slack search and user management capabilities
analytics_agent = Agent(
role="Communication Analyst",
goal="Analyze team communication patterns and extract insights from conversations",
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
apps=[
'slack/search_messages',
'slack/get_user_by_email',
'slack/list_members'
] # Using canonical action names from canonical_integrations.yml
)
# Complex task involving search and analysis
analysis_task = Task(
description="""
1. Search for recent project-related messages across all channels
2. Find users by email to identify team members
3. Analyze communication patterns and response times
4. Generate weekly team communication summary
""",
agent=analytics_agent,
expected_output="Comprehensive communication analysis with team insights and recommendations"
)
crew = Crew(
agents=[analytics_agent],
tasks=[analysis_task]
)
crew.kickoff()Contact Support#
Contact our support team for assistance with Slack integration setup or troubleshooting.