A Slack message with composable pipe builders — the Slack analogue of
Swoosh.Email. The struct alone fully determines what the fake Slack dev UI
renders, so message content lives here (not in per-call options).
A raw Slack JSON map may be supplied via :raw as an escape hatch.
Summary
Functions
Collect every action_id from the message's actions blocks, in order.
A Block Kit actions block wrapping interactive elements.
Set the Block Kit blocks for this message.
A Block Kit button element. Supported opts: :action_id, :value.
Nil opts are dropped so the payload matches Slack's shape.
Build a new message from keyword/map attrs.
A Block Kit section block with mrkdwn text.
Set the fallback/notification text.
Post this message as a threaded reply to parent_ts.
Set the destination channel (e.g. "#alerts" or a channel id).
Serialize to a Slack Web API payload map (drops nil/empty fields).
Target user for post_ephemeral.
Toggle Slack link unfurling for this message.
Types
@type t() :: %Slackbox.Message{ attachments: [map()], blocks: [map()], channel: String.t() | nil, icon: String.t() | nil, metadata: map(), raw: map() | nil, reply_broadcast: boolean() | nil, text: String.t() | nil, thread_ts: String.t() | nil, ts: String.t() | nil, unfurl_links: boolean() | nil, unfurl_media: boolean() | nil, user: String.t() | nil, username: String.t() | nil }
Functions
Collect every action_id from the message's actions blocks, in order.
A Block Kit actions block wrapping interactive elements.
Set the Block Kit blocks for this message.
A Block Kit button element. Supported opts: :action_id, :value.
Nil opts are dropped so the payload matches Slack's shape.
Build a new message from keyword/map attrs.
A Block Kit section block with mrkdwn text.
Set the fallback/notification text.
Post this message as a threaded reply to parent_ts.
Set the destination channel (e.g. "#alerts" or a channel id).
Serialize to a Slack Web API payload map (drops nil/empty fields).
Target user for post_ephemeral.
Toggle Slack link unfurling for this message.