Slack Integration
Overview
Section titled “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
Section titled “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
Section titled “Setting Up Slack Integration”1. Connect Your Slack Workspace
Section titled “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
Section titled “2. Install Required Package”uv add crewai-tools3. Environment Variable Setup
Section titled “3. Environment Variable Setup”export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"Or add it to your .env file:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_tokenAvailable Tools
Section titled “Available Tools”User Management
Section titled “User Management”slack/list_members
Description: List all members in a Slack channel.
Parameters:
- No parameters required - retrieves all channel members
slack/get_user_by_email
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
slack/get_users_by_name
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
Section titled “Channel Management”slack/list_channels
Description: List all channels in your Slack workspace.
Parameters:
- No parameters required - retrieves all accessible channels
Messaging
Section titled “Messaging”slack/send_message
Description: Send a message to a Slack channel.
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)
slack/send_direct_message
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
Section titled “Search & Discovery”slack/search_messages
Description: Search for messages across your Slack workspace.
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
Section titled “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
Section titled “Simple Text with Attachment”[ { "text": "I am a test message", "attachments": [ { "text": "And here's an attachment!" } ] }]Rich Formatting with Sections
Section titled “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
Section titled “Usage Examples”Basic Slack Agent Setup
Section titled “Basic Slack Agent Setup”from crewai import Agent, Task, Crew
# Create an agent with Slack capabilitiesslack_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 updatesupdate_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 taskcrew = Crew( agents=[slack_agent], tasks=[update_task])
crew.kickoff()Filtering Specific Slack Tools
Section titled “Filtering Specific Slack Tools”from crewai import Agent, Task, Crew
# Create agent with specific Slack actions onlycommunication_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 communicationcoordination_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
Section titled “Advanced Messaging with Block Kit”from crewai import Agent, Task, Crew
# Create agent with Slack messaging capabilitiesnotification_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 notificationsnotification_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
Section titled “Message Search and Analytics”from crewai import Agent, Task, Crew
# Create agent with Slack search and user management capabilitiesanalytics_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 analysisanalysis_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
Section titled “Contact Support”Need Help?
Contact our support team for assistance with Slack integration setup or troubleshooting.