https://github.com/arouze/slack-message-builder
A builder for Slack message written in PHP
https://github.com/arouze/slack-message-builder
block-kit builder slack
Last synced: 5 months ago
JSON representation
A builder for Slack message written in PHP
- Host: GitHub
- URL: https://github.com/arouze/slack-message-builder
- Owner: arouze
- License: mit
- Created: 2021-06-05T06:45:58.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-03-07T10:25:09.000Z (over 2 years ago)
- Last Synced: 2024-11-22T18:11:35.133Z (over 1 year ago)
- Topics: block-kit, builder, slack
- Language: PHP
- Homepage:
- Size: 174 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Slack Message Builder
A builder for Slack message written in PHP.
## Objective
Building Slack message using block kit is quite hard.
This package will help you to build message easily and will warn you if you don't respect Slack restrictions (Message too large, too much elements in an action block)
## Installation
```shell
composer require arouze/slack-message-builder
```
## Usage
```php
// Here an example with the first template of Slack Documentation
// @see: https://api.slack.com/tools/block-kit-builder?template=1
// Will return an array of Slack blocks
// You can post them on the Slack webhook using json_encode
$blocks = (new SlackMessageBuilder())
->addBlock(
(new SectionBlock())
->setTextObject(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("You have a new request:\n**")
)
)
->addBlock(
(new SectionBlock())
->addFields(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("Type:*\nComputer (laptop)")
)
->addFields(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("*When:*\nSubmitted Aut 10")
)
->addFields(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("*Last Update:*\nMar 10, 2015 (3 years, 5 months)")
)
->addFields(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("*Reason:*\nAll vowel keys aren't working.")
)
->addFields(
(new TextObject())
->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
->setText("*Specs:*\n\"Cheetah Pro 15\" - Fast, really fast\"")
)
)
->addBlock(
(new ActionBlock())
->addElement(
(new ButtonElement())
->setText(
(new TextObject())
->escapeEmoji()
->setText('Approve')
)
->setStyle(ButtonElement::BUTTON_STYLE_PRIMARY)
->setValue('click_me_123')
)
->addElement(
(new ButtonElement())
->setText(
(new TextObject())
->escapeEmoji()
->setText('Deny')
)
->setStyle(ButtonElement::BUTTON_STYLE_DANGER)
->setValue('click_me_123')
)
)
->render();
// Or you can use the Sender to easily send message in your Slack channels.
// @see https://api.slack.com/messaging/webhooks to configure a webhook on your Slack instance.
(new Sender())->sendToChannel(
'channel-name',
'SERVICE_ID',
'CHANNEL_ID',
'CHANNEL_TOKEN',
$blocks
);
```
## Features
### [Blocks](https://api.slack.com/reference/block-kit/blocks)
- [x] Action
- [x] Context
- [x] Divider
- [x] File
- [x] Header
- [x] Image
- [x] Input
- [x] RichText
- [x] Section
- [x] Video
### [Elements](https://api.slack.com/reference/block-kit/block-elements)
- [x] Button
- [x] Checkboxes
- [x] Date pickers
- [x] Datetime pickers
- [x] Email input
- [x] File input
- [x] Image
- [x] Multi-select menus
- [x] Number input
- [x] Overflow menu
- [x] Plain-text input
- [x] Radio buttons
- [x] Rich text input
- [x] Select menus
- [x] Time pickers
- [x] URL input
- [x] Workflow button
#### [Rich Text Elements](https://api.slack.com/reference/block-kit/blocks#rich_text)
- [x] RichTextSection
- [x] RichTextList
- [x] RichTextPreformatted
- [x] RichTextQuote
### [Composition Objects](https://api.slack.com/reference/block-kit/composition-objects)
- [x] Confirmation dialog object
- [x] Conversation filter object
- [x] Dispatch action configuration object
- [x] Option object
- [x] Option group object
- [x] Text object
- [x] Trigger object
- [x] Workflow object
- [x] Slack file object
#### [Rich Text Object Type](https://api.slack.com/reference/block-kit/blocks#channel-element-type)
- [x] Channel
- [x] Emoji
- [x] Link
- [x] Text
- [x] User
- [x] UserGroup
## Want to help ? An issue ?
- [You can open an issue](https://github.com/arouze/slack-message-builder/issues/new)