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


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.

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

Get 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)
                    ->from('laravel', ':ghost:')
                    ->to('#general')
                    ->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 sesuai local domain kalian

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

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


Share Yuk:

Rekomendasi untuk di baca!


‚ÄčPHP - Membuat simple login dengan Github

25 Nov 2015

Like our facebook page


Around Web