Laravel Notification: Bagaimana cara mengirim pesan ke slack dengan Laravel?

By Admin
29 Jul 2022

Laravel sudah memasuki versi yang paling terbaru yaitu versi 5.6. Sejak Laravel versi 5.3 sudah di perkenalkan tentang Notification driver yang mempermudah kita untuk mengirim notifikasi atau pesan ke beberapa channel seperti email, sms, slack ataupun custom channel seperti voice dan yang lainnya.

Kali ini kita akan memanfaatkan salah satu channel yaitu Slack untuk mengirim pesan kepada semua tim jika terjadi error di dalam aplikasi kita. Sehingga nantinya, jika terjadi error bisa lebih cepat di perbaiki oleh anggota tim.

1. Create slack room

Jika kalian belum mempunyai slack room, kalian bisa daftar dulu dengan mengunjungi halaman ini: Register Slack atau jika sudah kalian bisa skip ke langkah yang kedua.

Register Slack

2. Add Incoming webhook app

Di dalam room slack kalian, tambahkan cari dan tambahkan app yang bernama Incoming Webhook.

Nanti dengan app ini kita akan membuat sebuah url webhook yang di pakai untuk mengirim pesan dari laravel ke slack.

Pilih channel default channel mana yang akan di pakai

Pilih Channel Slack

Get webhook url

Copy Webhook Url

 

Simpan webhook URL tersebut di .env dengan nama SLACK_URL yang nantinya akan kita gunakan.

3. Buat sebuah class notification baru

Sebelumnya, untuk bisa mengirim pesan ke slack kita butuh Library tambahan yaitu Guzzle. Jika belum terinstall, kalian bisa install dulu dengan menjalankan command ini:

composer require guzzlehttp/guzzle

Selanjutnya buat sebuah class dengan nama ErrorNotification. Kalian bisa membuatnya dengan perintah artisan:

php artisan make:notification ErrorNotification

Setelah itu buka file ErrorNotification.php dan sesuaikan isinya seperti di bawah ini:

<?php

namespace AppNotifications;

use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateContractsQueueShouldQueue;
use IlluminateNotificationsMessagesSlackMessage;

class ErrorNotification extends Notification
{
    use Queueable;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['slack'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return IlluminateNotificationsMessagesMailMessage
     */
    public function toSlack($notifiable)
    {
        return (new SlackMessage)
                    -&gt;from('laravel', ':ghost:')
                    -&gt;to('#general')
                    -&gt;content('Hello, my first slack message send from laravel.');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Nah sekarang kita test dulu notification tersebut apakah sudah bisa jalan atau tidak.

Caranya?

Buka file routes web.php dan tambahkan sebuah route baru seperti di bawah ini

Route::get('web', function () {
    Notification::route('slack',env('SLACK_URL'))
    ->notify(new AppNotificationsErrorNotification());
});

Ingat buat variable SLACK_URL di .env yang nilainya webhook url yang kita buat tadi.

Silakan buka di browser http://localhost:8000/slack atau url lain sesuai local domain kalian.

Jika tidak terjadi kesalahan, maka kalian akan mendapatkan sebuah pesan baru di slack room seperti di bawah ini:

Contoh pesan yang terkirim.

Yup, sekarang kita sudah berhasil mengirim pesan ke slack.

Selanjutnya bagaimana caranya agar setiap ada error di aplikasi akan mengirim pesan ke slack.

Buka lagi file ErrorNotification.php dan edit pada bagian __construct dan toSlack

Karena kita ingin agar setiap ada error kita mengirimkan pesan, maka buka file appExceptionHandler.php

Edit pada bagian menthod report

Sekarang untuk mengetes apakah saat ada error aplikasi kita mengirim pesan ke slack, buat sebuah error di aplikasi kamu misalnya di routes dengan minghilangkan tanda ;

Ini akan membuat aplikasi kita error dan pesan baru akan terkirim ke slack channel kalian.

Bagaimana? Gampang kan? Kalian bisa mengembangkan fungsi dari notification driver punya laravel ini untuk berbagai keperluan lainnya. Misalnya notifikasi jika ada user yang login atau order yang masuk, sesuai dengan kebutuhkan dan kreatifitas kalian.

Semoga tutorial ini cukup membantu bagaimana cara mengirim pesan dari laravel ke slack.

Oh ya, link reponya kalau kalian butuh: https://github.com/yusidabcs/laravel-slack-example

Artikel Lainnya

Artikel lain yang mungkin menarik juga untuk kamu baca.

Cara membuat OTP di Laravel

Tutorial cara mengirim kode OTP di laravel. Kode OTP sering digunakan untuk validasi atau tambahan security saat register atau login. Bagaimana caranya? Simak artikel berikut ini.
Admin
5 min read

Quick Test Fitur Baru Laravel 6, Seberapa Efektif Lazzy Collection?

Laravel 6 sudah beberapa minggu ini release. Tentu ada beberapa update fitur-fitur keren yang patut dicoba. Yang paling menarik perhatian saya adalah Lazzy Collection.
Admin
5 min read

Tutorial Membuat Invoice PDF di Laravel dengan DOMPDF

Halo teman ngide, kali ini kita akan membuat tutorial singkat agaimana cara membuat file PDF pada aplikasi web berbasis Laravel?
Admin
5 min read

© 2024