aranyasen / laravel-slack
A package to send messages to Slack
Installs: 1 325
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/aranyasen/laravel-slack
Requires
- php: >=8.2
- illuminate/support: ^10.5|^11.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.7
- nunomaduro/collision: ^7.8.1
- orchestra/testbench: ^8.9.1
- phpunit/phpunit: ^10.3.2
- squizlabs/php_codesniffer: ^3.7.2
This package is auto-updated.
Last update: 2025-10-26 08:27:45 UTC
README
Laravel Slack
This package allows you to easily compose and send Slack messages from Laravel applications
Installation
Step-1:
composer require aranyasen/laravel-slack
Step-2: Publish the config:
php artisan vendor:publish --provider=Aranyasen\\LaravelSlack\\SlackServiceProvider
It creates config/laravel-slack.php.
Step-3:
Add parameters SLACK_WORKSPACE and SLACK_TOKEN in .env
(See reference below on how to generate a Slack API token)
Usage
// Send a simple message to a channel, say "some-channel" (new SlackNotification()) ->channel('some-channel') ->text("Hello!") ->send(); // Send a section (Ref: https://api.slack.com/reference/block-kit/blocks#section) (new SlackNotification()) ->channel('some-channel') ->section() // Starts a section ->fields() // Starts a field in this section ->markdown(":fire: @here This is an emergency :fire:") ->endFields() ->endSection() ->send(); // Send a raw JSON block (example from https://api.slack.com/block-kit/building#block_basics) (new SlackNotification()) ->channel('some-channel') ->block([ "type" => "section", "text" => [ "type" => "mrkdwn", "text" => "New Paid Time Off request from <example.com|Fred Enriquez>\n\n<https://example.com|View request>", ], ]) ->send(); // Compose a message and dump the JSON that'll be sent to Slack. Useful for debugging. (new SlackNotification()) ->channel('some-channel') ->text("Hello!") ->dump(); // Upload a file (new SlackNotification()) ->channel('some-channel') ->file($filePath, 'Some filename') ->upload(); // Optionally, a title, or an accompanying message can be added with a file (new SlackNotification()) ->channel('some-channel') ->file($filePath, 'Some filename') ->withInitialComment('some comment') ->withTitle('some title') ->upload();
APIs:
channel() -> Channel
header() -> Create a header section
context() -> A small footer text
divider() -> A horizontal line
section() / endSection() --> A section block
lists() -> List of items
field() / endfield() --> Inside section
markdown() -> A markdown block, allowed only inside a section
block() -> Pre-composed block
send() -> Send to Slack
dump() -> Dump the final JSON that'd be sent to Slack API
file() -> Upload a file
withInitialComment() -> Add a message with a file upload
withTitle() -> Add a title with file upload
Testing:
Invoke SlackNotification::fake() to ensure HTTP requests to Slack are mocked. Internally it uses Laravel's Http::fake(),
so all available Http::assert* methods can be used for assertions.
Example:
SlackNotification::fake(); (new SlackNotification()) ->channel('channel-1') ->send(); Http::assertSent(static fn(Request $request) => $request['channel'] === 'channel-1');
References:
To create a Slack API token
- Visit https://api.slack.com/apps
- If no app is present, create an app (you may select "from scratch")
- If the app was created earlier, select the app under App Name
- On the left pane, under "Features" click "OAuth & Permissions"
- Under Scopes > Bot Token Scopes, click Add an OAuth Scope
- Add these scopes:
chat.writeandchat.write.public.
(note:channels.read,users.readmay be needed in future versions of this package, but not now) - Click "reinstall your app" in the yellow bar that appears above
- In the dropdown "Search for a channel", select a channel. Any channel would do - won't matter now.
- Allow it
- Copy the "Bot User OAuth Token" and share
Links:
- Slack Block reference docs: https://api.slack.com/block-kit
- Emoji cheat-sheet: https://github.com/ikatyang/emoji-cheat-sheet
- Color bar not supported in block kits yet (ref: https://stackoverflow.com/a/74826061/2014868)