426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
184 lines
5.5 KiB
Markdown
184 lines
5.5 KiB
Markdown
# @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
|
|
|
|
```bash
|
|
npm install @elizaos/plugin-slack
|
|
# or
|
|
bun add @elizaos/plugin-slack
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Required Environment Variables
|
|
|
|
```env
|
|
# 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
|
|
|
|
```env
|
|
# 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
|
|
|
|
1. Create a new Slack App at https://api.slack.com/apps
|
|
2. Enable Socket Mode in your app settings
|
|
3. Generate an App-Level Token with `connections:write` scope
|
|
4. Add the following Bot Token Scopes:
|
|
- `channels:history` - Read messages in public channels
|
|
- `channels:read` - View basic channel information
|
|
- `chat:write` - Send messages
|
|
- `emoji:read` - View custom emoji
|
|
- `files:read` - View files
|
|
- `groups:history` - Read messages in private channels
|
|
- `groups:read` - View basic private channel information
|
|
- `im:history` - Read direct messages
|
|
- `im:read` - View basic direct message information
|
|
- `mpim:history` - Read group direct messages
|
|
- `mpim:read` - View basic group direct message information
|
|
- `pins:read` - View pinned items
|
|
- `pins:write` - Add and remove pinned items
|
|
- `reactions:read` - View reactions
|
|
- `reactions:write` - Add and remove reactions
|
|
- `team:read` - View workspace information
|
|
- `users:read` - View basic user information
|
|
- `users:read.email` - View user email addresses
|
|
|
|
5. Enable Events and subscribe to:
|
|
- `message.channels` - Messages in public channels
|
|
- `message.groups` - Messages in private channels
|
|
- `message.im` - Direct messages
|
|
- `message.mpim` - Group direct messages
|
|
- `app_mention` - When the app is mentioned
|
|
- `member_joined_channel` - When a user joins a channel
|
|
- `member_left_channel` - When a user leaves a channel
|
|
- `reaction_added` - When a reaction is added
|
|
- `reaction_removed` - When a reaction is removed
|
|
|
|
6. Install the app to your workspace
|
|
|
|
## Usage
|
|
|
|
### Add to your agent configuration
|
|
|
|
```typescript
|
|
import slackPlugin from "@elizaos/plugin-slack";
|
|
|
|
const agent = {
|
|
// ... other configuration
|
|
plugins: [slackPlugin],
|
|
};
|
|
```
|
|
|
|
### Character file configuration
|
|
|
|
```json
|
|
{
|
|
"name": "MyAgent",
|
|
"settings": {
|
|
"slack": {
|
|
"shouldIgnoreBotMessages": true,
|
|
"shouldRespondOnlyToMentions": false
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Connector capabilities
|
|
|
|
This plugin registers no elizaOS actions. Slack messaging is handled via the `MessageConnector` interface. The registered connector exposes these capabilities: `send_message`, `read_messages`, `search_messages`, `resolve_targets`, `list_rooms`, `list_servers`, `chat_context`, `user_context`, `react_message`, `edit_message`, `delete_message`, `pin_message`, `get_user`.
|
|
|
|
## Events
|
|
|
|
The plugin emits the following events:
|
|
|
|
- `SLACK_MESSAGE_RECEIVED` - When a message is received
|
|
- `SLACK_MESSAGE_SENT` - When a message is sent
|
|
- `SLACK_REACTION_ADDED` - When a reaction is added
|
|
- `SLACK_REACTION_REMOVED` - When a reaction is removed
|
|
- `SLACK_APP_MENTION` - When the bot is mentioned
|
|
- `SLACK_MEMBER_JOINED_CHANNEL` - When a member joins a channel
|
|
- `SLACK_MEMBER_LEFT_CHANNEL` - When a member leaves a channel
|
|
- `SLACK_FILE_SHARED` - When a file is shared
|
|
|
|
## API Reference
|
|
|
|
### SlackService
|
|
|
|
The main service class providing direct access to Slack functionality:
|
|
|
|
```typescript
|
|
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
|
|
|
|
1. Verify your `SLACK_BOT_TOKEN` and `SLACK_APP_TOKEN` are correct
|
|
2. Check that Socket Mode is enabled in your Slack app
|
|
3. Ensure the bot has been invited to the channel
|
|
4. Check if `SLACK_SHOULD_RESPOND_ONLY_TO_MENTIONS` is enabled
|
|
|
|
### Permission errors
|
|
|
|
1. Verify the bot has all required OAuth scopes
|
|
2. Reinstall the app to your workspace after adding new scopes
|
|
3. Check if the channel is private and the bot is a member
|
|
|
|
### Socket Mode connection issues
|
|
|
|
1. Verify your `SLACK_APP_TOKEN` starts with `xapp-`
|
|
2. Check that the app-level token has `connections:write` scope
|
|
3. Ensure only one instance of the bot is running per token
|
|
|