Consumers are entry points where users interact with the AI. This guide covers adding a Slack consumer, the most common type.
Prerequisites
- A Slack bot token and app token (configured at org level in Settings > Integrations)
- A workspace to bind the consumer to
Before binding channels, you need to configure the Slack bot at the organisation level:
- Go to Settings > Integrations
- Enter your Slack bot token and Slack app token
- Click Test to verify the connection
This creates a single Slack bot shared by all workspaces.
Bind a channel via dashboard
- Navigate to your workspace
- Open the Consumers tab
- Click Add consumer
- Select Slack as the type
- Enter the Slack channel ID and optional channel name
- Click Save
The channel is now bound to this workspace. Messages mentioning the bot in this channel will be routed here.
Bind via API
Connect consumer credentials
curl -X POST https://your-instance/api/connectors/consumer \
-H "Content-Type: application/json" \
-H "Cookie: supaproxy_session=YOUR_JWT" \
-d '{
"type": "slack",
"workspace_id": "ws-example",
"credentials": {
"bot_token": "xoxb-...",
"app_token": "xapp-..."
}
}'
Bind a channel
curl -X POST https://your-instance/api/connectors/consumer/channel \
-H "Content-Type: application/json" \
-H "Cookie: supaproxy_session=YOUR_JWT" \
-d '{
"type": "slack",
"workspace_id": "ws-example",
"channel_id": "C0EXAMPLE123",
"channel_name": "#support-assist"
}'
A channel can only be bound to one workspace. If the channel is already bound elsewhere, the request will be rejected.
How Slack messages are processed
- User mentions the bot in a bound channel
- SupaProxy receives the message via Socket Mode
- The channel ID is looked up to find the workspace
- A conversation is created (or the existing thread conversation is extended)
- The query runs through the agent loop
- The response is posted back to the Slack thread