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 lain 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