Slack
Posting project notifications into a Slack channel: installation, the OAuth scope, retries, and disconnection handling.
A Slack connector posts project notifications directly into a specified channel.
Connectors are configured per project. Project Owners and Admins can
connect and manage destinations from the project's Connectors page
(/{organization}/{project}/connectors). Project Members can view the
project's connectors and their delivery histories.
Connecting a channel
- Open your project's Connectors page.
- Select Connect Slack.
- You will be directed to Slack's authorization screen. Choose the destination workspace and target channel.
- Once authorized, you are redirected back to the Connectors page, where
the channel shows as Connected. Connecting raises a
connector_connectednotice, which the channel receives as its first message.
Authorization handshakes must be completed within 10 minutes. An install Slack approved that Telmoni then refuses — the project moved to another organization, or your role changed, while you were at Slack — creates no connection: the app is uninstalled from the workspace again unless another connection on the platform uses it there, its bot token kept, sealed, until Slack has answered, a day at most, as after a disconnect.
Send test on a connected channel posts one message, titled "Slack is connected", that reads "This is a test from Telmoni. Notices for this project will arrive here." The test is not recorded in the project's audit log or its delivery log.
Slack shows each notice as a header with its title, its body, and its kind below them.
On a self-hosted deployment whose operator has not configured the Slack app, the Slack tile shows Soon, with Connect turned off (see The Slack app).
Connection states
The Connectors page shows each channel in one of three states:
- Connected: notices are posted as they arrive.
- Needs attention: the installation stands, but the channel refuses posts: it was archived or deleted, or Slack refuses posting into the workspace's general channel. Notices queued for it fail.
- Disconnected: the installation itself is gone: the Telmoni app was removed from the Slack workspace or its token revoked. Notices queued for it fail.
In either failed state, Reconnect on the row runs Slack's authorization again. Picking the same channel reconnects it in place, and the audit log notes the reconnection; picking another channel makes a new connection. No notice is queued for a connection while it is in a failed state, so reconnecting does not deliver the notices raised meanwhile.
Permissions and security
Telmoni requests one scope from Slack, the one that lets it post into the
channel you pick: incoming-webhook. It requests no scope for reading
messages, listing channels, or listing workspace members. The grant and the
webhook target it receives are stored encrypted at rest.
Delivery and retries
A notice's first attempt starts as soon as the notice is written, unless 32
first attempts are already in flight on that server; then the delivery loop
takes it on its next poll. If a delivery attempt fails due to a transient
network error, a rate limit, a server error on Slack's side, or a 408
timeout:
- Telmoni makes up to 5 attempts in all: after 30 seconds, then 2, 8, and 32
minutes. These are the defaults, which the hosted service uses and a
self-hosted operator can change (
NOTIFICATIONS_DELIVERY_*in the configuration reference). - If Slack answers with a
Retry-Afterheader, Telmoni waits at least that long before the next attempt, up to a day.
A refusal that says the channel or the installation is gone moves the connection to Needs attention or Disconnected, as the states above describe. So does a disabled workspace, a revoked token, or an app no longer allowed to post there. Any other refusal fails that notice at once, without retries, and leaves the connection Connected.
Disconnection
If Slack answers that the destination is gone (the channel was deleted or
archived, the incoming webhook was removed, or the Telmoni app was uninstalled
from the workspace), Telmoni marks the connector Needs attention or
Disconnected as the states above describe, fails the
notices still queued for it, and posts a connector_disconnected notice to the
project's other connectors (see
where you read notices).
Removing the Telmoni app from a Slack workspace disconnects all channels
connected to that Slack workspace. The event is recorded in the organization's
audit log with external:slack as the actor.
Disconnecting manually
To remove a connection, select Disconnect on the connector's row on the Connectors page. Telmoni deletes the connection with its queue and delivery log, records the action in the project's audit log, and uninstalls the Slack app from the workspace once no other connection on the platform uses it, asking again every hour for a day where Slack does not answer.
Notifications
What Telmoni records in activity feeds, where notices are displayed, and how notifications are dispatched to external destinations.
Webhooks
Receiving and verifying a signed webhook. The body, the signature header, the replay window, choosing events, retries, the delivery log, and rotation.