LaravelでSlack通知を実装(Webhook)

Laravel

Laravelは、Webアプリケーション開発のための人気のあるPHPフレームワークですが、Slackとの統合も非常に便利です。この記事では、Laravelを使用してSlackへ通知を送信する方法を解説します。

前提

  • laravel 11.x

ライブラリのインストール

Composerでlaravel/slack-notification-channelをインストール。

composer require laravel/slack-notification-channel

LaravelでのSlack通知の準備

まず、Slackに通知を送るためのWebhook URLを取得します。

取得方法については、こちらの記事をご覧ください。

環境設定

Laravelの.envファイルにWebhook URLを追加します。

SLACK_WEBHOOK_URL=https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ

通知機能の実装

Laravelの通知機能を利用することで、簡単にSlackへメッセージを送信できます。まず、通知クラスを作成します。

php artisan make:notification SlackNotification

通知クラスの中身を以下のように編集します。

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\SlackMessage;
use Illuminate\Notifications\Notification;

class SlackNotification extends Notification
{
    use Queueable;

    public function via($notifiable)
    {
        return ['slack'];
    }

    public function toSlack($notifiable)
    {
        return (new SlackMessage)
            ->content('これはLaravelからの通知です!');
    }
}

次に、この通知を実際に送信用のコードを作成します。.envファイルに設定したWebhook URLをconfig/services.phpファイルから呼び出すようにします。

まず、config/services.phpにSlackの設定を追加します。

'slack' => [
    'webhook_url' => env('SLACK_WEBHOOK_URL'),
],

次に、通知を送信するコードを記述します。

以下のコマンドを実行して、新しいコマンドを生成します。

php artisan make:command SendSlackNotification

コマンドのhandleメソッドから、通知処理を呼び出せばOKです。

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Notification;
use App\Notifications\SlackNotification;

class SendSlackNotification extends Command
{
    protected $signature = 'app:send-slack-notification';
    
    protected $description = 'Send a notification to Slack';

    public function handle()
    {
        try {
            Notification::route('slack', config('services.slack.webhook_url'))
                ->notify(new SlackNotification());

            $this->info('Slack通知が送信されました');
        } catch (\Exception $e) {
            $this->error('Slack通知に失敗しました: ' . $e->getMessage());
        }
    }
}

この状態で、作成したコマンド

php artisan app:send-slack-notification

を実行します。

実行されました🎉🎉🎉

【補足】LaravelのNotificationについて

LaravelのNotification機能は、アプリケーションからユーザーに通知を送るための柔軟な方法を提供します。この機能を使用することで、メール、SMS、Slack、データベースなど、さまざまなチャネルを介してユーザーに情報を届けることができます。Laravelでは、通知をクラスとして定義し、各チャネルに関しての設定を行うことができます。

まとめ

この記事では、Laravelを使ってSlackに通知を送る方法について説明しました。

  • SlackのWebhook URLを設定する
  • 通知クラスを作成する
  • メッセージを送信するコードを書く

これらの手順を実行することで、LaravelからSlackに簡単に通知を送信できるようになります。今後のプロジェクトに役立ててください。