SlackMessage#
- pydantic model safir.slack.blockkit.SlackMessage#
Message to post to Slack.
The
message
attribute will be the initial part of the message.All fields in
fields
will be shown below that message, formatted in two columns. Order offields
is preserved; they will be laid out left to right and then top to bottom in the order given. Then,blocks
will be added, if any, in one column below the fields. Finally,attachments
will be added to the end as attachments, which get somewhat different formatting (for example, long attachments are collapsed by default).At most ten elements are allowed in
fields
. They should be used for short information, generally a single half-line at most. Longer information should go intoblocks
orattachments
.- Parameters:
data (
Any
) –
Show JSON schema
{ "title": "SlackMessage", "description": "Message to post to Slack.\n\nThe ``message`` attribute will be the initial part of the message.\n\nAll fields in ``fields`` will be shown below that message, formatted in\ntwo columns. Order of ``fields`` is preserved; they will be laid out left\nto right and then top to bottom in the order given. Then, ``blocks`` will\nbe added, if any, in one column below the fields. Finally, ``attachments``\nwill be added to the end as attachments, which get somewhat different\nformatting (for example, long attachments are collapsed by default).\n\nAt most ten elements are allowed in ``fields``. They should be used for\nshort information, generally a single half-line at most. Longer\ninformation should go into ``blocks`` or ``attachments``.", "type": "object", "properties": { "message": { "title": "Message", "type": "string" }, "verbatim": { "default": true, "title": "Verbatim", "type": "boolean" }, "fields": { "default": [], "items": { "$ref": "#/$defs/SlackBaseField" }, "title": "Fields", "type": "array" }, "blocks": { "default": [], "items": { "$ref": "#/$defs/SlackBaseBlock" }, "title": "Blocks", "type": "array" }, "attachments": { "default": [], "items": { "$ref": "#/$defs/SlackBaseBlock" }, "title": "Attachments", "type": "array" } }, "$defs": { "SlackBaseBlock": { "description": "Base class for any Slack Block Kit block.", "properties": {}, "title": "SlackBaseBlock", "type": "object" }, "SlackBaseField": { "description": "Base class for Slack Block Kit blocks for the ``fields`` section.", "properties": {}, "title": "SlackBaseField", "type": "object" } }, "required": [ "message" ] }
- Fields:
- Validators:
_validate_fields
»fields
- field attachments: list[SlackBaseBlock] = []#
Longer sections to include as attachments.
Notes
Slack has marked attachments as legacy and warns that future changes may reduce their visibility or utility. Unfortunately, there is no other way to attach possibly-long text where Slack will hide long content by default but allow the user to expand it. We therefore continue to use attachments for long text for want of a better alternative.
- field blocks: list[SlackBaseBlock] = []#
Additional text blocks to include in the message (after fields).
- field fields: list[SlackBaseField] = []#
Short key/value fields to include in the message (at most 10).
- Validated by:
_validate_fields
- field message: str [Required]#
Main part of the message.
- field verbatim: bool = True#
Whether the main part of the message should be marked verbatim.
Verbatim messages in Slack don’t expand channel references or create user notifications. This is the default, but can be set to
False
to allow any such elements in the message to be recognized by Slack. Do not set this toFalse
with untrusted input.
- to_slack()#
Convert to a Slack Block Kit message.
- Returns:
A Slack Block Kit data structure suitable for serializing to JSON and sending to Slack.
- Return type:
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding
ComputedFieldInfo
objects.