symfony / slack-notifier
Symfony Slack Notifier Bridge
Fund package maintenance!
fabpot
Tidelift
symfony.com/sponsor
Installs: 3 501 864
Dependents: 8
Suggesters: 0
Security: 0
Stars: 36
Watchers: 6
Forks: 14
Type:symfony-notifier-bridge
Requires
- php: >=8.2
- symfony/http-client: ^6.4|^7.0
- symfony/notifier: ^7.2
- 7.3.x-dev
- 7.2.x-dev
- v7.2.0
- v7.2.0-RC1
- v7.2.0-BETA1
- 7.1.x-dev
- v7.1.6
- v7.1.1
- v7.1.0
- v7.1.0-RC1
- v7.1.0-BETA1
- 7.0.x-dev
- v7.0.8
- v7.0.7
- v7.0.3
- v7.0.2
- v7.0.0
- v7.0.0-RC1
- v7.0.0-BETA1
- 6.4.x-dev
- v6.4.13
- v6.4.8
- v6.4.7
- v6.4.3
- v6.4.2
- v6.4.0
- v6.4.0-RC1
- v6.4.0-BETA1
- 6.3.x-dev
- v6.3.12
- v6.3.3
- v6.3.1
- v6.3.0
- v6.3.0-RC1
- v6.3.0-BETA1
- 6.2.x-dev
- v6.2.8
- v6.2.7
- v6.2.5
- v6.2.2
- v6.2.0
- v6.2.0-RC1
- v6.2.0-BETA1
- 6.1.x-dev
- v6.1.11
- v6.1.9
- v6.1.3
- v6.1.0
- v6.1.0-RC1
- v6.1.0-BETA1
- 6.0.x-dev
- v6.0.19
- v6.0.17
- v6.0.11
- v6.0.3
- v6.0.0
- v6.0.0-RC1
- v6.0.0-BETA2
- v6.0.0-BETA1
- 5.4.x-dev
- v5.4.45
- v5.4.40
- v5.4.39
- v5.4.35
- v5.4.22
- v5.4.21
- v5.4.19
- v5.4.17
- v5.4.11
- v5.4.3
- v5.4.0
- v5.4.0-RC1
- v5.4.0-BETA2
- v5.4.0-BETA1
- 5.3.x-dev
- v5.3.14
- v5.3.4
- v5.3.0
- v5.3.0-RC1
- v5.3.0-BETA4
- v5.3.0-BETA3
- v5.3.0-BETA1
- 5.2.x-dev
- v5.2.12
- v5.2.10
- v5.2.9
- v5.2.8
- v5.2.7
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.2.0-RC2
- v5.2.0-RC1
- v5.2.0-BETA3
- v5.2.0-BETA2
- v5.2.0-BETA1
- 5.1.x-dev
- v5.1.11
- v5.1.10
- v5.1.9
- v5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.1.0-RC2
- v5.1.0-RC1
- v5.1.0-BETA1
- 5.0.x-dev
- v5.0.11
- v5.0.10
- v5.0.9
- v5.0.8
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v5.0.0-RC1
- v5.0.0-BETA2
- v5.0.0-BETA1
This package is auto-updated.
Last update: 2024-11-29 09:07:04 UTC
README
Provides Slack integration for Symfony Notifier.
DSN example
SLACK_DSN=slack://TOKEN@default?channel=CHANNEL
where:
TOKEN
is your Bot User OAuth Access Token (they begin withxoxb-
)CHANNEL
is a channel, private group, or IM channel to send message to, it can be an encoded ID, or a name.
valid DSN's are:
SLACK_DSN=slack://xoxb-......@default?channel=my-channel-name
SLACK_DSN=slack://xoxb-......@default?channel=@fabien
invalid DSN's are:
SLACK_DSN=slack://xoxb-......@default?channel=#my-channel-name
SLACK_DSN=slack://xoxb-......@default?channel=fabien
Adding Interactions to a Message
With a Slack message, you can use the SlackOptions
class to add some
interactive options called Block elements.
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackActionsBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackDividerBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackImageBlockElement; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock; use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $chatMessage = new ChatMessage('Contribute To Symfony'); // Create Slack Actions Block and add some buttons $contributeToSymfonyBlocks = (new SlackActionsBlock()) ->button( 'Improve Documentation', 'https://symfony.com/doc/current/contributing/documentation/standards.html', 'primary' ) ->button( 'Report bugs', 'https://symfony.com/doc/current/contributing/code/bugs.html', 'danger' ); $slackOptions = (new SlackOptions()) ->block((new SlackSectionBlock()) ->text('The Symfony Community') ->accessory( new SlackImageBlockElement( 'https://symfony.com/favicons/apple-touch-icon.png', 'Symfony' ) ) ) ->block(new SlackDividerBlock()) ->block($contributeToSymfonyBlocks); // Add the custom options to the chat message and send the message $chatMessage->options($slackOptions); $chatter->send($chatMessage);
Adding Fields and Values to a Message
To add fields and values to your message you can use the field()
method.
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackDividerBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock; use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $chatMessage = new ChatMessage('Symfony Feature'); $options = (new SlackOptions()) ->block((new SlackSectionBlock())->text('My message')) ->block(new SlackDividerBlock()) ->block( (new SlackSectionBlock()) ->field('*Max Rating*') ->field('5.0') ->field('*Min Rating*') ->field('1.0') ); // Add the custom options to the chat message and send the message $chatMessage->options($options); $chatter->send($chatMessage);
Adding a Header to a Message
To add a header to your message use the SlackHeaderBlock
class.
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackDividerBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackHeaderBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock; use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $chatMessage = new ChatMessage('Symfony Feature'); $options = (new SlackOptions()) ->block((new SlackHeaderBlock('My Header'))) ->block((new SlackSectionBlock())->text('My message')) ->block(new SlackDividerBlock()) ->block( (new SlackSectionBlock()) ->field('*Max Rating*') ->field('5.0') ->field('*Min Rating*') ->field('1.0') ); // Add the custom options to the chat message and send the message $chatMessage->options($options); $chatter->send($chatMessage);
Adding a Footer to a Message
To add a header to your message use the SlackContextBlock
class.
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackContextBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackDividerBlock; use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock; use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $chatMessage = new ChatMessage('Symfony Feature'); $contextBlock = (new SlackContextBlock()) ->text('My Context') ->image('https://symfony.com/logos/symfony_white_03.png', 'Symfony Logo') ; $options = (new SlackOptions()) ->block((new SlackSectionBlock())->text('My message')) ->block(new SlackDividerBlock()) ->block( (new SlackSectionBlock()) ->field('*Max Rating*') ->field('5.0') ->field('*Min Rating*') ->field('1.0') ) ->block($contextBlock) ; // Add the custom options to the chat message and send the message $chatMessage->options($options); $chatter->send($chatMessage);
Sending a Message as a Reply
To send your Slack message as a reply in a thread use the threadTs()
method.
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock; use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $chatMessage = new ChatMessage('Symfony Feature'); $options = (new SlackOptions()) ->block((new SlackSectionBlock())->text('My reply')) ->threadTs('1621592155.003100') ; // Add the custom options to the chat message and send the message $chatMessage->options($options); $chatter->send($chatMessage);
Updating a Slack Message
First, save the message ID and channel ID when sending a message:
use Symfony\Component\Notifier\Bridge\Slack\SlackSentMessage; use Symfony\Component\Notifier\Message\ChatMessage; $sentMessage = $chatter->send(new ChatMessage('Original message')); // Make sure that Slack transport was used if ($sentMessage instanceOf SlackSentMessage) { $messageId = $sentMessage->getMessageId(); $channelId = $sentMessage->getChannelId(); }
Then, use that message ID and channel ID to create a new
UpdateMessageSlackOptions
class:
use Symfony\Component\Notifier\Bridge\Slack\UpdateMessageSlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $options = new UpdateMessageSlackOptions($channelId, $messageId); $chatter->send(new ChatMessage('Updated message', $options));
Scheduling a Slack Message
To schedule a message to be sent at a later time, use the postAt()
method:
use Symfony\Component\Notifier\Bridge\Slack\SlackOptions; use Symfony\Component\Notifier\Message\ChatMessage; $options = (new SlackOptions())->postAt(new \DateTime('+1 day')); $chatMessage = new ChatMessage('Symfony Feature'); $chatMessage->options($options); $chatter->send($chatMessage);