NOTICE: All information contained herein is, and remains
the property of TechnoCore Automate.
Updated : 2026-04-20
ObjServiceSlack provides a reusable Slack Bot API integration for the
Axion platform. It wraps the Slack Web API with Bearer token authentication,
rate-limit handling (HTTP 429 with Retry-After), and Block Kit message
formatting for rich notifications and interactive approvals.
Unlike the basic webhook integration in ObjNotify, this service uses a
proper Slack Bot token for full API access including channels, users, DMs,
reactions, threads, file uploads, and interactive buttons.
| Area | Methods |
|---|---|
| Messages | send_message(), send_dm(), update_message(), add_reaction(), send_thread_reply() |
| Channels | list_channels(), get_channel_info(), find_channel() |
| Users | list_users(), find_user_by_email(), get_user_info() |
| Interactive | send_approval_request() |
| Files | upload_file() |
| Notifications | notify_ticket(), notify_signoff(), notify_workflow(), notify_deployment() |
Rate limit: Slack applies per-method rate limits (typically Tier 2 = 20+
requests/minute). On HTTP 429 the service sleeps for the Retry-After
header value (default 30 s) and retries up to 3 times.
base:
slack:
bot_token: $environment_SLACK_BOT_TOKEN$
default_channel: "#axion-alerts"
signing_secret: $environment_SLACK_SIGNING_SECRET$
export AXION_SLACK_BOT_TOKEN="xoxb-..."
export AXION_SLACK_SIGNING_SECRET="..."
The bot token must have scopes: chat:write, channels:read, users:read,
users:read.email, reactions:write, files:write, im:write.
Sends a formatted ticket card with header, status fields, and reference link.
Expects a dict with keys: id, title, status, priority, assignee,
url.
Sends a RACI signoff request with approve/reject buttons. Expects a dict
with keys: id, description, requester, deadline. Button values are
signoff_approve_{id} and signoff_reject_{id} for webhook handling.
Posts a workflow status update with emoji indicator. Recognised statuses:
started, completed, failed, paused.
Posts a deployment card with package name, version, and timestamp.
The send_approval_request() method sends Block Kit messages with approve
and reject buttons. When clicked, Slack sends an interaction payload to the
configured request URL. Handle these in a factory.webhook handler by
checking action_id values approval_approve and approval_reject.
# Verify bot token and show connected identity
python ObjServiceSlack.py test-connection
# Send a message to a channel
python ObjServiceSlack.py send "Deploy complete" --channel "#releases"
# Send to default channel (from config.yaml)
python ObjServiceSlack.py send "System healthy"
# List public channels
python ObjServiceSlack.py list-channels
from ObjServiceSlack import ObjServiceApi
svc = ObjServiceApi()
# Send a simple message
svc.send_message("#general", "Hello from Axion")
# Find a user by email and DM them
user = svc.find_user_by_email("jane@example.com")
if user:
svc.send_dm(user["id"], "Your report is ready")
# Send an approval request
svc.send_approval_request(
"#approvals",
"Please approve budget for Project X",
approve_value="budget_approve_42",
reject_value="budget_reject_42",
)
# Notify about a deployment
svc.notify_deployment(
"#releases", "homechoice", "8.1.3"
)
Updated : 2026-04-20