Slack integration plugin for elizaOS agents with Socket Mode support
Project description
@elizaos/plugin-slack
Slack integration plugin for elizaOS agents with Socket Mode support.
Features
- Socket Mode: Real-time event handling via Slack Socket Mode
- Message Operations: Send, edit, delete, read messages
- Reactions: Add and remove emoji reactions
- Pins: Pin and unpin messages, list pinned items
- Channels: List channels, read channel history
- User Info: Get user profile information
- Threads: Full thread support with reply tracking
- Media: Handle file uploads and attachments
- Custom Emoji: List workspace custom emoji
Installation
npm install @elizaos/plugin-slack
# or
bun add @elizaos/plugin-slack
Configuration
Required Environment Variables
# Bot Token (starts with xoxb-)
SLACK_BOT_TOKEN=xoxb-your-bot-token
# App Token for Socket Mode (starts with xapp-)
SLACK_APP_TOKEN=xapp-your-app-token
Optional Environment Variables
# Signing Secret for request verification
SLACK_SIGNING_SECRET=your-signing-secret
# User Token for enhanced permissions (starts with xoxp-)
SLACK_USER_TOKEN=xoxp-your-user-token
# Comma-separated list of channel IDs to restrict bot to
SLACK_CHANNEL_IDS=C123456789,C987654321
# Ignore messages from other bots
SLACK_SHOULD_IGNORE_BOT_MESSAGES=false
# Only respond when mentioned
SLACK_SHOULD_RESPOND_ONLY_TO_MENTIONS=false
Slack App Setup
-
Create a new Slack App at https://api.slack.com/apps
-
Enable Socket Mode in your app settings
-
Generate an App-Level Token with
connections:writescope -
Add the following Bot Token Scopes:
channels:history- Read messages in public channelschannels:read- View basic channel informationchat:write- Send messagesemoji:read- View custom emojifiles:read- View filesgroups:history- Read messages in private channelsgroups:read- View basic private channel informationim:history- Read direct messagesim:read- View basic direct message informationmpim:history- Read group direct messagesmpim:read- View basic group direct message informationpins:read- View pinned itemspins:write- Add and remove pinned itemsreactions:read- View reactionsreactions:write- Add and remove reactionsteam:read- View workspace informationusers:read- View basic user informationusers:read.email- View user email addresses
-
Enable Events and subscribe to:
message.channels- Messages in public channelsmessage.groups- Messages in private channelsmessage.im- Direct messagesmessage.mpim- Group direct messagesapp_mention- When the app is mentionedmember_joined_channel- When a user joins a channelmember_left_channel- When a user leaves a channelreaction_added- When a reaction is addedreaction_removed- When a reaction is removed
-
Install the app to your workspace
Usage
Add to your agent configuration
import slackPlugin from "@elizaos/plugin-slack";
const agent = {
// ... other configuration
plugins: [slackPlugin],
};
Character file configuration
{
"name": "MyAgent",
"clients": ["slack"],
"settings": {
"slack": {
"shouldIgnoreBotMessages": true,
"shouldRespondOnlyToMentions": false
}
}
}
Actions
| Action | Description |
|---|---|
SLACK_SEND_MESSAGE |
Send a message to a channel or thread |
SLACK_REACT_TO_MESSAGE |
Add or remove emoji reactions |
SLACK_READ_CHANNEL |
Read message history from a channel |
SLACK_EDIT_MESSAGE |
Edit an existing message |
SLACK_DELETE_MESSAGE |
Delete a message |
SLACK_PIN_MESSAGE |
Pin a message to a channel |
SLACK_UNPIN_MESSAGE |
Unpin a message from a channel |
SLACK_LIST_PINS |
List pinned messages in a channel |
SLACK_LIST_CHANNELS |
List available channels |
SLACK_GET_USER_INFO |
Get information about a user |
SLACK_EMOJI_LIST |
List custom emoji in the workspace |
Providers
| Provider | Description |
|---|---|
slackChannelState |
Current channel context and metadata |
slackWorkspaceInfo |
Workspace-level information |
slackMemberList |
Members in the current channel |
Events
The plugin emits the following events:
SLACK_MESSAGE_RECEIVED- When a message is receivedSLACK_MESSAGE_SENT- When a message is sentSLACK_REACTION_ADDED- When a reaction is addedSLACK_REACTION_REMOVED- When a reaction is removedSLACK_APP_MENTION- When the bot is mentionedSLACK_MEMBER_JOINED_CHANNEL- When a member joins a channelSLACK_MEMBER_LEFT_CHANNEL- When a member leaves a channelSLACK_FILE_SHARED- When a file is shared
API Reference
SlackService
The main service class providing direct access to Slack functionality:
import { SlackService, SLACK_SERVICE_NAME } from "@elizaos/plugin-slack";
// Get service from runtime
const slackService = runtime.getService(SLACK_SERVICE_NAME) as SlackService;
// Send a message
await slackService.sendMessage(channelId, "Hello!", { threadTs: "..." });
// Add a reaction
await slackService.sendReaction(channelId, messageTs, "thumbsup");
// Get user info
const user = await slackService.getUser(userId);
// List channels
const channels = await slackService.listChannels();
Troubleshooting
Bot not responding to messages
- Verify your
SLACK_BOT_TOKENandSLACK_APP_TOKENare correct - Check that Socket Mode is enabled in your Slack app
- Ensure the bot has been invited to the channel
- Check if
SLACK_SHOULD_RESPOND_ONLY_TO_MENTIONSis enabled
Permission errors
- Verify the bot has all required OAuth scopes
- Reinstall the app to your workspace after adding new scopes
- Check if the channel is private and the bot is a member
Socket Mode connection issues
- Verify your
SLACK_APP_TOKENstarts withxapp- - Check that the app-level token has
connections:writescope - Ensure only one instance of the bot is running per token
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elizaos_plugin_slack-2.0.0a5.tar.gz.
File metadata
- Download URL: elizaos_plugin_slack-2.0.0a5.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c030d54a0b7516185663f4b864b46dc1e0780aaa7f8d7f74156c8f66a112a83
|
|
| MD5 |
1571a22cff8921624e4d798fc00bfb31
|
|
| BLAKE2b-256 |
96e377add105eaa68e4a58ebbbdd0bb2863115cb4ad049c10d0c1d74bc07b8c9
|
File details
Details for the file elizaos_plugin_slack-2.0.0a5-py3-none-any.whl.
File metadata
- Download URL: elizaos_plugin_slack-2.0.0a5-py3-none-any.whl
- Upload date:
- Size: 30.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2261b91cacb13c5ebc46690c75c433a904c6b016f6c7f732a2bd7f759f560282
|
|
| MD5 |
6f6c96d4b6e79db911f795b24c95e458
|
|
| BLAKE2b-256 |
b0446c71a8624a813650f969353fef51b3848445a6daab641d1c114a9ffab847
|