PHPackages                             arouze/slack-message-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. arouze/slack-message-builder

ActiveLibrary

arouze/slack-message-builder
============================

A builder for Slack message, so you can easily build complex messages.

v1.0.1(2y ago)04MITPHPPHP &gt;=8.2.0

Since Mar 5Pushed 2y ago1 watchersCompare

[ Source](https://github.com/arouze/slack-message-builder)[ Packagist](https://packagist.org/packages/arouze/slack-message-builder)[ GitHub Sponsors](https://github.com/arouze)[ RSS](/packages/arouze-slack-message-builder/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (3)Used By (0)

Slack Message Builder
=====================

[](#slack-message-builder)

A builder for Slack message written in PHP.

Objective
---------

[](#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
------------

[](#installation)

```
composer require arouze/slack-message-builder
```

Usage
-----

[](#usage)

```
    // 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
--------

[](#features)

### [Blocks](https://api.slack.com/reference/block-kit/blocks)

[](#blocks)

- Action
- Context
- Divider
- File
- Header
- Image
- Input
- RichText
- Section
- Video

### [Elements](https://api.slack.com/reference/block-kit/block-elements)

[](#elements)

- Button
- Checkboxes
- Date pickers
- Datetime pickers
- Email input
- File input
- Image
- Multi-select menus
- Number input
- Overflow menu
- Plain-text input
- Radio buttons
- Rich text input
- Select menus
- Time pickers
- URL input
- Workflow button

#### [Rich Text Elements](https://api.slack.com/reference/block-kit/blocks#rich_text)

[](#rich-text-elements)

- RichTextSection
- RichTextList
- RichTextPreformatted
- RichTextQuote

### [Composition Objects](https://api.slack.com/reference/block-kit/composition-objects)

[](#composition-objects)

- Confirmation dialog object
- Conversation filter object
- Dispatch action configuration object
- Option object
- Option group object
- Text object
- Trigger object
- Workflow object
- Slack file object

#### [Rich Text Object Type](https://api.slack.com/reference/block-kit/blocks#channel-element-type)

[](#rich-text-object-type)

- Channel
- Emoji
- Link
- Text
- User
- UserGroup

Want to help ? An issue ?
-------------------------

[](#want-to-help--an-issue-)

- [You can open an issue](https://github.com/arouze/slack-message-builder/issues/new)

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

796d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/92da331d7a6808a065f7b3a0e49602376cfecd0034ab2a38bce57d87783ab71f?d=identicon)[arouze](/maintainers/arouze)

---

Top Contributors

[![arouze](https://avatars.githubusercontent.com/u/7123595?v=4)](https://github.com/arouze "arouze (40 commits)")

---

Tags

block-kitbuilderslack

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/arouze-slack-message-builder/health.svg)

```
[![Health](https://phpackages.com/badges/arouze-slack-message-builder/health.svg)](https://phpackages.com/packages/arouze-slack-message-builder)
```

###  Alternatives

[temporal/sdk

Temporal SDK

4002.2M18](/packages/temporal-sdk)[web-auth/webauthn-framework

FIDO2/Webauthn library for PHP and Symfony Bundle.

50570.7k1](/packages/web-auth-webauthn-framework)[internal/dload

Downloads binaries.

98142.7k10](/packages/internal-dload)[acquia/orca

A tool for testing a company's software packages together in the context of a realistic, functioning, best practices Drupal build

32902.4k](/packages/acquia-orca)[mahocommerce/maho

Free and open source ecommerce platform, created in 2024 on the M1 platform, PHP 8.3+

1322.1k12](/packages/mahocommerce-maho)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
