{"id":15074,"date":"2020-06-18T12:32:28","date_gmt":"2020-06-18T12:32:28","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=15074"},"modified":"2021-11-05T06:04:26","modified_gmt":"2021-11-05T06:04:26","slug":"how-to-send-slack-notification-with-laravel","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/how-to-send-slack-notification-with-laravel\/","title":{"rendered":"How To Send Slack Notification with Laravel"},"content":{"rendered":"\n<p>It seems like a topic for basic Laravel developer, but while it\u2019s easy to send emails, but the whole system of various&nbsp;<strong>notifications<\/strong>&nbsp;is much deeper, and worth studying. Sub-topics:<\/p>\n\n\n\n<p>In the older version of Laravel, Slack notification was built-in configured with the framework. But on this 5.8.x version, they have created a separate package for Slack Notification. First of all, we have to install that package in our application.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">composer <span class=\"hljs-built_in\">require<\/span> laravel\/slack-notification-channel<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"toc-configure-incoming-webhooks\">Configure Incoming Webhooks<\/h3>\n\n\n\n<p>First, you need to install the Slack Application, we have to get the Slack webhook URL. For that login, to your Slack application and after login you will land on the main screen now on the left panel<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"322\" height=\"158\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/slack-1.png\" alt=\"\" class=\"wp-image-15088\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/slack-1.png 322w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/slack-1-300x147.png 300w\" sizes=\"auto, (max-width: 322px) 100vw, 322px\" \/><\/figure>\n\n\n\n<p>In Your Slack Application, you can see a + sign in the left corner, <strong>Add Apps<\/strong>, Click on the icon, you will land on an app search page where you need to search <strong>incoming-webhook<\/strong> in the search bar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"327\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/webhooksPNG.png\" alt=\"\" class=\"wp-image-15092\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/webhooksPNG.png 551w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/webhooksPNG-300x178.png 300w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/figure>\n\n\n\n<p>Now install the <strong>incoming-webhook <\/strong>application Now go to the setting tab inside the <strong>incoming-webhook<\/strong> app which you just install into your slack application. you need to provide the channel name there and you&#8217;ll get a Webhook URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"382\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/settings.png\" alt=\"\" class=\"wp-image-15093\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/settings.png 941w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/settings-300x122.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/settings-768x312.png 768w\" sizes=\"auto, (max-width: 941px) 100vw, 941px\" \/><figcaption>Webhook URL<\/figcaption><\/figure>\n\n\n\n<p>Copy the Webhook URL From the slack website and past it into the very bottom or wherever you like in the .env file which is in your laravel application&#8217;s root file <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"478\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/envfile.png\" alt=\"\" class=\"wp-image-15097\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/envfile.png 755w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/envfile-300x190.png 300w\" sizes=\"auto, (max-width: 755px) 100vw, 755px\" \/><figcaption>.envfile for pusher<\/figcaption><\/figure>\n\n\n\n<p>That&#8217;s what you need from the Slack app, Now you have to configure your laravel application. For that, you need to create a notification section in laravel.  For that, you just need to run this command in your commander.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">php<\/span> <span class=\"hljs-selector-tag\">artisan<\/span> <span class=\"hljs-selector-tag\">make<\/span><span class=\"hljs-selector-pseudo\">:notification<\/span> <span class=\"hljs-selector-tag\">TestNotification<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The above command will create a Notifications folder on the&nbsp;<strong>app<\/strong>&nbsp;folder from where you can find the TestNotification file. So let\u2019s open and start adding it.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/pradeeprjth\/4d114ad20d706ed078edbca164586786.js\"><\/script>\n\n\n\n<p>Now add the Slack in a new method&#8217;s returned array and create your first slack notification in the new method named <strong>toSlack<\/strong>().<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">toSlack<\/span><span class=\"hljs-params\">($notifiable)<\/span>\n    <\/span>{\n        $message = <span class=\"hljs-string\">\"Famous Hello World!\"<\/span>;\n        \n        <span class=\"hljs-keyword\">return<\/span> (<span class=\"hljs-keyword\">new<\/span> SlackMessage)\n                -&gt;from(<span class=\"hljs-string\">'Ghost'<\/span>, <span class=\"hljs-string\">':ghost:'<\/span>)\n                -&gt;to(<span class=\"hljs-string\">'#channel-name'<\/span>)\n                -&gt;content(<span class=\"hljs-string\">'Fix service request by '<\/span>.$message);\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>&nbsp;Now its time to trigger this notification.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Notification::route(<span class=\"hljs-string\">'slack'<\/span>, env(<span class=\"hljs-string\">'SLACK_HOOK'<\/span>))\n      -&gt;notify(<span class=\"hljs-keyword\">new<\/span> TestNotification());<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"has-medium-font-size\">Complete code for Notification<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/pradeeprjth\/0dbf8d8ff8f6a044fb89cf6ba4244903.js\"><\/script>\n\n\n\n<p>Paste the above code to send the notification to your slack channel and that\u2019s all.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"204\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/giphy-1.gif\" alt=\"\" data-id=\"15104\" data-full-url=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2020\/06\/giphy-1.gif\" data-link=\"https:\/\/www.devopsschool.com\/blog\/?attachment_id=15104\" class=\"wp-image-15104\"\/><\/figure><\/li><\/ul><\/figure>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_76621\"><iframe loading=\"lazy\"  id=\"_ytid_78136\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_76621\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>It seems like a topic for basic Laravel developer, but while it\u2019s easy to send emails, but the whole system of various&nbsp;notifications&nbsp;is much deeper, and worth studying. Sub-topics: In the&#8230; <\/p>\n","protected":false},"author":14,"featured_media":15108,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5201],"tags":[5203,629,1145],"class_list":["post-15074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-laravel","tag-notification","tag-slack"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/15074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=15074"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/15074\/revisions"}],"predecessor-version":[{"id":24749,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/15074\/revisions\/24749"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/15108"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=15074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=15074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=15074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}