Using Blocks
Section Block
A section is one of the most flexible blocks available - it can be used as a simple text block, or with any of the available block elements.
Section blocks can also optionally be given an "accessory," which is typically one of the interactive Elements.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
text |
Optional[TextLike]
|
text to include in the block. Can be a string or |
None
|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
fields |
Optional[Union[TextLike, List[TextLike]]]
|
a list of text objects. One of either |
None
|
accessory |
Optional[Element]
|
an optional Element object
that will take a secondary place in the block (after or to the side of |
None
|
Throws
InvalidUsageError: if any of the provided arguments fail validation checks.
from slackblocks import Checkboxes, Option, SectionBlock
SectionBlock(
text="This is a section block with a checkbox accessory.",
block_id="fake_block_id"
accessory=CheckboxGroup(
action_id="checkboxes-action",
options=[
Option(
text="*Your Only Option*",
value="option_one"
)
]
)
)
{
"type": "section",
"block_id": "fake_block_id",
"text": {
"type": "mrkdwn",
"text": "This is a section block with a checkbox accessory."
},
"accessory": {
"type": "checkboxes",
"options": [
{
"text": {
"type": "mrkdwn",
"text": "*Your Only Option*"
},
"value": "option_one"
}
],
"action_id": "checkboxes-action"
}
}
Rich Text Block
A RichTextBlock is used to provide easier rich text formatting
than standard markdown text (e.g. in a
SectionBlock
)
and access to text formatting features not available in traditional
markdown (e.g. strikethrough). See the various rich text elements
you can include here.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
elements |
Union[RichTextObject, List[RichTextObject]]
|
a single rich text element or a list of those elements. |
required |
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
Throws
InvalidUsageError: if the elements in elements
are not valid rich
text elements.
from slackblock import RichTextBlock, RichTextSection, RichText
RichTextBlock(
RichTextSection(
[
RichText(
"You 'bout to witness hip-hop in its most purest",
bold=True,
),
RichText(
"Most rawest form, flow almost flawless",
strike=True,
),
RichText(
"Most hardest, most honest known artist",
italic=True,
),
]
),
block_id="fake_block_id",
)
{
"type": "rich_text",
"block_id": "fake_block_id",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "You 'bout to witness hip-hop in its most purest\n",
"style": {
"bold": true
}
},
{
"type": "text",
"text": "Most rawest form, flow almost flawless\n",
"style": {
"strike": true
}
},
{
"type": "text",
"text": "Most hardest, most honest known artist\n",
"style": {
"italic": true
}
}
]
}
]
}
Header Block
A Header Block is a plain-text block that displays in a larger, bold font.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
text |
Union[str, Text]
|
the text that will be rendered as a heading. |
required |
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
from slackblocks import HeaderBlock
HeaderBlock(
"This is a header block",
)
{
"type": "header",
"text": {
"type": "plain_text",
"text": "This is a header block",
"emoji": true
}
}
Image Block
An Image Block contains a single graphic, accessed by URL.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
image_url |
str
|
the URL pointing to the image file you want to display. |
required |
alt_text |
Optional[str]
|
alternative text for accessibility purposes and when the image fails to load. |
' '
|
title |
Optional[Union[Text, str]]
|
an optional text title to be presented with the image. |
None
|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
Throws
InvalidUsageError: when one or more of the provided args fails validation.
from slackblocks import ImageBlock
ImageBlock(
image_url="https://api.slack.com/img/blocks/bkb_template_images/beagle.png",
alt_text="a beagle",
title="dog",
block_id="fake_block_id",
)
{
"type": "image",
"block_id": "fake_block_id",
"image_url": "https://api.slack.com/img/blocks/bkb_template_images/beagle.png",
"alt_text": "a beagle",
"title": {
"type": "plain_text",
"text": "dog"
}
}
Input Block
A block that collects information from users - it can hold a plain-text input element, a checkbox element, a radio button element, a select menu element, a multi-select menu element, or a datepicker.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
label |
TextLike
|
the name which identifies the input field. |
required |
element |
Element
|
an interactive Element (e.g. a text field). |
required |
dispatch_action |
bool
|
whether the Element
should trigger the sending of a |
False
|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
hint |
Optional[TextLike]
|
an optional additional guide on what input the user should prodive. |
None
|
optional |
bool
|
whether this input field may be empty when the user submits e.g. the modal. |
False
|
Throws
InvalidUsageError: when any of the provided arguments fail validation.
from slackblocks import InputBlock, Text, TextType, PlainTextInput
InputBlock(
label=Text("Label", type_=TextType.PLAINTEXT, emoji=True),
hint=Text("Hint", type_=TextType.PLAINTEXT, emoji=True),
element=PlainTextInput(action_id="action"),
block_id="fake_block_id",
optional=True,
)
{
"type": "input",
"block_id": "fake_block_id",
"label": {
"type": "plain_text",
"text": "Label",
"emoji": true
},
"element": {
"type": "plain_text_input",
"action_id": "action"
},
"hint": {
"type": "plain_text",
"text": "Hint",
"emoji": true
},
"optional": true
}
Divider Block
A content divider, like an <hr>
in HTML, to split up different blocks inside of
a message.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
from slackblocks import DividerBlock
DividerBlock()
{
"type": "divider"
}
File Block
Displays a remote file (e.g. a PDF).
For details on how remote files are exposed to Slack, see https://api.slack.com/messaging/files#adding.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
external_id |
str
|
the ID assigned to the remote file when it was added to Slack. |
required |
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
required |
source |
str
|
always "remote" as per the Slack API (may change in the future). |
'remote'
|
from slackblocks import FileBlock
FileBlock(
external_id="external_id",
block_id="fake_block_id",
)
{
"type": "file",
"external_id": "external_id",
"source": "remote",
"block_id": "fake_block_id"
}
* Note that this example comes from the Slack Web API docs.
Context Block
A ContextBlock
displays contextul message info, including both images and text.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
elements |
Optional[List[Union[Element, CompositionObject]]]
|
a list of |
None
|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
Throws
InvalidUsageError: when items in elements
are not Text
or Image
or exceed 10 items.
from slackblocks import ContextBlock, Text
ContextBlock(
elements=[
Text("Hello, world!"),
],
block_id="fake_block_id"
)
{
"type": "context",
"block_id": "fake_block_id",
"elements": [
{
"type": "mrkdwn",
"text": "Hello, world!"
}
]
}
Actions Block
A Block
that is used to hold interactive elements (normally for users to interface with).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
elements |
Optional[List[Element]]
|
a list of Elements (up to a maximum of 25). |
None
|
block_id |
Optional[str]
|
you can use this field to provide a deterministic identifier for the block. |
None
|
Throws
InvalidUsageError: if any of the items in elements
are invalid.
ActionsBlock(
block_id="fake_block_id",
elements=CheckboxGroup(
action_id="actionId-0",
options=[
Option(text="*a*", value="a", description="*a*"),
Option(text="*b*", value="b", description="*b*"),
Option(text="*c*", value="c", description="*c*"),
],
),
)
{
"type": "actions",
"block_id": "fake_block_id",
"elements": [
{
"type": "checkboxes",
"action_id": "actionId-0",
"options": [
{
"text": {
"type": "mrkdwn",
"text": "*a*"
},
"value": "a",
"description": {
"type": "plain_text",
"text": "*a*"
}
},
{
"text": {
"type": "mrkdwn",
"text": "*b*"
},
"value": "b",
"description": {
"type": "plain_text",
"text": "*b*"
}
},
{
"text": {
"type": "mrkdwn",
"text": "*c*"
},
"value": "c",
"description": {
"type": "plain_text",
"text": "*c*"
}
}
]
}
]
}