plugins/omi-slack-app/README.md
Voice-activated Slack messaging through your OMI device. Simply say "Send message to [channel]" followed by your message, and AI will automatically post it to the right Slack channel!
The app intelligently processes your voice commands:
Example:
You: "Send Slack message to general saying hello team"
[collecting segment 1/5...]
You: "hope everyone is having a great day"
[collecting segment 2/5...]
[5+ second pause - timeout!]
โ AI processes 2 segments
AI Extracted:
Channel: #general
Message: "Hello team, hope everyone is having a great day."
โ Message sent! ๐
| Field | Value |
|---|---|
| Webhook URL | https://your-app.up.railway.app/webhook |
| App Home URL | https://your-app.up.railway.app/ |
| Auth URL | https://your-app.up.railway.app/auth |
| Setup Completed URL | https://your-app.up.railway.app/setup-completed |
# Clone the repository
cd slack
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your API keys
Create .env file with:
# Slack OAuth Credentials (from api.slack.com/apps)
SLACK_CLIENT_ID=your_client_id
SLACK_CLIENT_SECRET=your_client_secret
# OAuth Redirect URL
OAUTH_REDIRECT_URL=http://localhost:8000/auth/callback
# OpenAI API Key (for AI channel matching & message extraction)
OPENAI_API_KEY=your_openai_key
# App Settings
APP_HOST=0.0.0.0
APP_PORT=8000
channels:read - View public channelschat:write - Send messagesgroups:read - View private channelsusers:read - View user infohttp://localhost:8000/auth/callback.envsource venv/bin/activate
python main.py
Visit http://localhost:8000/test?dev=true to test!
Push to GitHub
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/BasedHardware/omi-slack-app.git
git branch -M main
git push -u origin main
Deploy on Railway
.env)Get your URL
your-app.up.railway.appUpdate OAuth Redirect
OAUTH_REDIRECT_URL=https://your-app.up.railway.app/auth/callbackConfigure OMI
Add these in Railway dashboard:
SLACK_CLIENT_ID
SLACK_CLIENT_SECRET
OPENAI_API_KEY
OAUTH_REDIRECT_URL=https://your-app.up.railway.app/auth/callback
APP_HOST=0.0.0.0
APP_PORT=8000
PYTHONUNBUFFERED=1
Note: PYTHONUNBUFFERED=1 ensures instant log output (no buffering delays)
Visit https://your-app.up.railway.app/test?dev=true to:
The app uses OpenAI for intelligent processing:
Example Transformation:
Input (3 segments):
"to general saying um hello team hope you're all um doing great today"
AI Output:
Channel: #general (matched from "general")
Message: "Hello team, hope you're all doing great today"
OMI sends transcripts in segments as you speak. The app:
Smart Collection:
You can always specify the channel in your voice command:
AI will fuzzy match to your workspace channels!
Set a default channel in settings, then just say:
The app automatically fetches fresh channels every time you send a message, so new channels work immediately without manual refresh!
You can also manually refresh:
Click "Switch Workspace" to:
OAUTH_REDIRECT_URL matches Slack appslack/
โโโ main.py # FastAPI application with mobile-first UI
โโโ slack_client.py # Slack API integration
โโโ message_detector.py # AI-powered message & channel detection
โโโ simple_storage.py # File-based storage (users & sessions)
โโโ requirements.txt # Python dependencies
โโโ railway.toml # Railway deployment config
โโโ runtime.txt # Python version
โโโ Procfile # Alternative deployment platforms
โโโ .env.example # Environment template
โโโ .gitignore # Git ignore rules
โโโ LICENSE # MIT License
โโโ README.md # This file
| Endpoint | Method | Description |
|---|---|---|
/ | GET | Homepage with channel selection (mobile-first) |
/auth | GET | Start Slack OAuth flow |
/auth/callback | GET | OAuth callback handler |
/setup-completed | GET | Check if user authenticated |
/webhook | POST | Real-time transcript processor |
/update-channel | POST | Update selected default channel |
/refresh-channels | POST | Refresh channel list |
/test | GET | Web testing interface |
/health | GET | Health check |
git checkout -b feature/amazing)git commit -m 'Add amazing feature')git push origin feature/amazing)MIT License - see LICENSE file for details.
Built for the OMI ecosystem.
Made with โค๏ธ for voice-first team communication
Features: