Version: Arctyk ITSM v0.6.0+ Last Updated: January 2026
Slack Integration¶
Real-time Slack notifications for ticket events in Arctyk ITSM.
Overview¶
Current Status¶
🔄 Planned for v0.7.0+
The Slack integration is currently in development and will provide:
- ✅ Real-time ticket notifications in Slack
- ✅ Interactive Slack commands for ticket management
- ✅ Slack threads for ticket discussions
- ✅ Custom notification rules and filters
- ✅ Ticket updates from Slack
Planned Features¶
1. Incoming Webhook Notifications¶
Receive Slack messages when tickets are created or updated:
🎫 New Ticket: Unable to login (TKT-001)
Priority: 🔴 High
Requester: John Doe
Project: Platform
[View in Arctyk] [Assign to Me] [Add Comment]
2. Slash Commands¶
Manage tickets directly from Slack:
# Create a ticket
/arctyk ticket "Server down" "Production server is offline" --priority=critical
# Update ticket status
/arctyk ticket TKT-001 status in_progress
# Add comment
/arctyk comment TKT-001 "Working on this now"
# List my tickets
/arctyk my-tickets
3. Interactive Messages¶
Click buttons to perform actions:
4. Slack Threads¶
Ticket comments sync with Slack threads:
Setup Instructions (v0.7.0+)¶
1. Create Slack App¶
- Go to api.slack.com/apps
- Click "Create New App"
- Choose "From scratch"
- Name: "Arctyk ITSM"
- Choose your workspace
2. Configure OAuth Scopes¶
Add permissions under "OAuth & Permissions":
3. Set Webhook URLs¶
Under "Event Subscriptions":
- Request URL:
https://arctyk.example.com/integrations/slack/events/ - Subscribe to events:
message.channelsreaction_addedapp_mention
4. Configure in Arctyk¶
Navigate to Admin > Integrations > Slack:
Slack Workspace: your-workspace
Webhook URL: https://hooks.slack.com/services/YOUR/WEBHOOK/URL
OAuth Token: xoxb-your-bot-token
Channel: #tickets
5. Install to Workspace¶
Click "Install to Workspace" and authorize.
Configuration¶
Environment Variables¶
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_SIGNING_SECRET=your-signing-secret
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
SLACK_DEFAULT_CHANNEL=tickets
Django Settings¶
# src/config/settings.py
SLACK_INTEGRATIONS = {
'enabled': True,
'bot_token': os.getenv('SLACK_BOT_TOKEN'),
'signing_secret': os.getenv('SLACK_SIGNING_SECRET'),
'webhook_url': os.getenv('SLACK_WEBHOOK_URL'),
'default_channel': os.getenv('SLACK_DEFAULT_CHANNEL', '#tickets'),
}
Event Mapping¶
Ticket Events¶
| Arctyk Event | Slack Notification |
|---|---|
| Ticket Created | Message in #tickets channel |
| Ticket Assigned | DM to assigned user |
| Status Changed | Thread reply or new message |
| Comment Added | Thread reply |
| Overdue | Reminder message |
| SLA Breach | Warning message |
Example Notifications¶
New Ticket¶
🎫 New Ticket: Website Down
━━━━━━━━━━━━━━━━━━━━━━━━━
Priority: 🔴 CRITICAL
Requester: Sarah Smith
Project: Platform
Description: Homepage not loading
[View] [Assign] [Update Status]
Comment Added¶
💬 New Comment on TKT-001: Unable to login
@Alice Johnson replied:
"I've identified the issue - it's a database connection problem.
Working on a fix now."
[View in Arctyk] [Reply in Slack]
Status Update¶
✅ TKT-001: Unable to login → Resolved
Resolver: @Bob Johnson
Time to Resolve: 2h 30m
[Close Ticket] [Reopen]
Slack Bot Commands (v0.7.0+)¶
Create Ticket¶
Or:
Manage Ticket¶
/arctyk TKT-001 status in_progress
/arctyk TKT-001 assign @alice
/arctyk TKT-001 comment "Working on this now"
List Tickets¶
/arctyk my-tickets # Show assigned to me
/arctyk team-tickets # Show team's tickets
/arctyk open-critical # Show open critical tickets
Integration Flow¶
┌─────────────────────────┐
│ Arctyk ITSM Event │
│ (Ticket Created) │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Celery Task │
│ send_slack_message │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Slack Webhook │
│ POST to Slack API │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Slack Channel │
│ Display Notification │
└─────────────────────────┘
Conversation Tracking¶
Link Slack messages to Arctyk tickets:
# When message is posted, track the Slack message ID
slack_thread = SlackThread.objects.create(
ticket=ticket,
channel_id='C12345',
thread_ts='1234567890.123456'
)
# When ticket is updated, update Slack thread
update_slack_thread(slack_thread, updated_comment)
Troubleshooting¶
Message Not Sending¶
- Verify
SLACK_BOT_TOKENis correct - Check bot has
chat:writepermission - Verify channel name is correct
- Check Celery worker is running
Command Not Working¶
- Verify slash command is registered
- Check URL is accessible from Slack
- Review Slack app logs for errors
Sync Issues¶
- Check timestamp alignment
- Verify thread IDs are stored correctly
- Monitor message delivery logs
Security Considerations¶
Token Management¶
- ✅ Store tokens in environment variables
- ✅ Rotate tokens regularly
- ❌ Don't commit tokens to repository
- ❌ Don't share tokens in logs
Message Validation¶
Always validate Slack signatures:
from slack_sdk.signature import SignatureVerifier
verifier = SignatureVerifier(signing_secret)
if not verifier.is_valid_request(body, timestamp, signature):
raise ValidationError('Invalid Slack signature')
Rate Limiting¶
Slack API has rate limits:
- Web API: 1-30 requests per second (per team)
- Webhook: ~3 messages per second
Solution: Queue messages and batch process.
Testing¶
Local Testing with Slack¶
# Install ngrok for local tunneling
ngrok http 8000
# Update Slack Event URL to: https://YOUR-NGROK-URL/integrations/slack/events/
Mock Testing¶
from unittest.mock import patch
@patch('slacks.slack_sdk.WebClient.chat_postMessage')
def test_ticket_created_notification(mock_post):
ticket = Ticket.objects.create(...)
# Assert Slack message was sent
mock_post.assert_called_once()
call_args = mock_post.call_args
assert 'Unable to login' in call_args.kwargs['text']
Future Enhancements¶
v0.7.0¶
- Real-time notifications
- Slash commands
- Interactive buttons
- Thread syncing
v0.8.0¶
- Workflow automation from Slack
- Scheduled reports to Slack
- Slack AI features integration
- Advanced filtering rules
Related Documentation¶
Need Help?¶
For Slack integration questions:
- Check Slack API Documentation
- Review Arctyk ITSM Integrations Guide
- Contact the development team