diff --git a/README.md b/README.md index 58ed69a..1f81d61 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ A simple PHP package that can be used to build and send Slack messages - PHP >= 7.1 - PHP cURL Extension +- PHP JSON Extension ### Installation ``` @@ -14,6 +15,33 @@ composer require amiriskander/slack-notifier ``` ### Usage + +There is no massive effort you need to create a simple text message like `Hello, World!` + +``` +use AmirIskander\SlackNotifier; + +public function TestHelloWorld() +{ + $message = new Message() + ->addBlock(new Section()->setText(new PlainText('Hello, World!'))); + ->send('https://hooks.slack.com/services/....') + ; +} +``` + +The package supports block types: +- Divider: A horizontal gray divider. +- Section: A container that can contain multiple components. + +And a block of type section can have components of types: +- Text: Can be either `Plain Text` or `Markdown` +- Accessory: Can be either `Button` or `Image` + + +For more complex examples that needs adding blocks with images, links and buttons, it is not a big problem. +Check the below example: + ``` use AmirIskander\SlackNotifier; @@ -62,5 +90,53 @@ public function TestSendSlackMessage() } ``` +The same example using classes for Button, Image, Section, Divider +``` +use AmirIskander\SlackNotifier; + +public function TestSendSlackMessage() +{ + // Init Message object + $message = new Message(); + + // Adding a section + $block = new Section(); + $block->setText(new MarkdownText('John Doe submitted a feedback!')); + $message->addBlock($block); + + // Adding a divider + $message->addBlock(new Divider()); + + $block = new Section(); + $block->setText(new MarkdownText(':new: *You guys are awesome. Keep up the good work!*')); + $message->addBlock($block); + + $block = new Section(); + $block->setText(new MarkdownText('*Source* :information_source: Homepage Feedback Form')); + $message->addBlock($block); + + $block = new Section(); + $block->setText(new MarkdownText('*In the last 30 days*')); + $block->addField(new MarkdownText('Submitted 6 form submissions')); + $block->addField(new MarkdownText('Rated 12 products')); + $accessory = new Image('https://i.ibb.co/19W2sdD/stat.png', 'Stats'); + $block->setAccessory($accessory); + $message->addBlock($block); + + $message->addBlock(new Divider()); + + $block = new Section(); + $block->setText(new MarkdownText('More information about this user')); + $block->setAccessory(new Button( + 'https://yourwebsite/user/123/profile/', + ':bust_in_silhouette: View User' + )); + $message->addBlock($block); + + // Replace parameter below with webhook of channel you would like to post to + $message->send('https://hooks.slack.com/services/....'); +} +``` + ### Screenshot ![Sample message screenshot](screenshot.png "Sample message screenshot") \ No newline at end of file diff --git a/src/Button.php b/src/Button.php new file mode 100644 index 0000000..a589a09 --- /dev/null +++ b/src/Button.php @@ -0,0 +1,16 @@ +setUrl($url) + ->setText(new PlainText($text)) + ->setAltText($alt) + ; + } +} diff --git a/src/Divider.php b/src/Divider.php new file mode 100644 index 0000000..e8d1262 --- /dev/null +++ b/src/Divider.php @@ -0,0 +1,11 @@ +setImageUrl($url) + ->setAltText($alt) + ; + } +} diff --git a/src/MarkdownText.php b/src/MarkdownText.php new file mode 100644 index 0000000..d042308 --- /dev/null +++ b/src/MarkdownText.php @@ -0,0 +1,11 @@ +