Slack setup
Connect a Slack workspace to a ViksaAI project. Events flow through shared volt-engine-service webhooks — no per-project runtime pod.
Architecture#
Slack uses the same Channel Hub model as WhatsApp, Teams, and Telegram. Slack sends HTTPS events to a global ingress URL; volt-engine-service routes each event to your project by Slack App ID, runs the agent brain, and streams replies back via the Slack Web API.
Prerequisites#
- Slack workspace admin or permission to create apps
- ViksaAI project with agents deployed via builder-service
- Platform permission: volt → update to connect channels in the dashboard
- Your Slack app must reach the public webhook base URL (default:
https://api.viksaai.com/v1/webhooks/slack)
Webhook URLs#
| Purpose | URL |
|---|---|
| Event Subscriptions | https://api.viksaai.com/v1/webhooks/slack/events |
| Interactivity | https://api.viksaai.com/v1/webhooks/slack/interactions |
These URLs are embedded in the Volt Slack manifest template. When you connect in the dashboard, the same URLs appear on the Slack config page and setup guide.
Installation steps#
- 1
Open Channel Hub
In the dashboard, go to Volt → Channels and select Slack.
- 2
Create a Slack app from the Volt manifest
Download the manifest from the in-app setup guide or the Channel Hub manifest endpoint. It includes HTTPS webhook URLs, required bot scopes, and event subscriptions pre-configured.
In Slack: api.slack.com/apps → Create New App → From manifest. Install the app to your workspace.
- 3
Configure Event Subscriptions
Under Features → Event Subscriptions, enable subscriptions and set Request URL to:
txt https://api.viksaai.com/v1/webhooks/slack/eventsSlack sends a
url_verificationchallenge — Volt responds automatically. Subscribe to bot events: app_mention, message.im, app_home_opened, assistant_thread_started. - 4
Enable interactivity
Under Features → Interactivity & Shortcuts, set Request URL to:
txt https://api.viksaai.com/v1/webhooks/slack/interactions - 5
Collect credentials
- Bot token (
xoxb-…) — OAuth & Permissions → Bot User OAuth Token - Signing secret — Basic Information → App Credentials (32 hex characters)
- Bot token (
- 6
Validate and connect
Paste credentials in the Slack config page. Click Validate (checks
auth.testand bot scopes), then Connect. Credentials are encrypted; your App ID is registered for webhook routing. - 7
Grant Slack access
Open Channel access from the Slack config page. Add email grants or enable project members. Users must message from a Slack account whose profile email matches a grant — see Access & security.
- 8
Test
DM the bot or @mention it in a channel. You should see streaming assistant status, thread replies, and file attachments for structured agent output.
How users interact in Slack#
- Direct messages and @mentions in channels
- Slack AI assistant status line and custom thread titles
- Streaming reply updates in the thread
- File attachments for raw agent output (JSON, etc.)
Message flow#
- Slack POSTs an event to /v1/webhooks/slack/events (signed with your signing secret).
- volt-engine-service verifies the signature, resolves project by App ID, and enqueues the message.
- The shared turn pipeline runs Think→Act→Observe using the project agent catalog.
- Streaming events are rendered back to Slack via chat.postMessage / chat.update and assistant APIs.
- Tasks dispatch to pulse-service; results and files appear in the Slack thread.
Operations#
| Action | Where |
|---|---|
| View connection status | Volt → Channels → Slack |
| Update credentials | Slack config → Validate → Connect |
| Manage user access | Slack config → Channel access |
| Uninstall | Slack config → Uninstall — removes encrypted credentials and routing |
Required bot scopes#
The manifest generator includes these scopes. If you configure manually, ensure all are present under OAuth & Permissions:
# Bot token scopes (validated on connect)
app_mentions:read
chat:write
commands
im:history
im:read
im:write
users:read
users:read.email
assistant:write
files:write