Laravel(PHP)からSlackにメッセージを送信する

Laravel(PHP)からSlackにメッセージを送信する方法を紹介します。

以前にGuzzleを使った方法を紹介しました。
今回はLaravelのHTTPクライアントを使用した方法を紹介します。

まず、Slackにメッセージを送信するためのサービスクラスを作成します。以下はそのコード例です。

<?php
declare(strict_types=1);

namespace App\Utils;

use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;

class SlackService
{
    public static function post(string $message): bool
    {
        $webhookUrl = config('slack.webhook_url');
        $username = config('slack.username');
        $iconEmoji = config('slack.icon_emoji');

        try {
            Http::acceptJson()
                ->post($webhookUrl, [
                        'username' => $username,
                        'text' => $message,
                        'icon_emoji' => $iconEmoji,
                    ]
                )->throw();
            return true;
        } catch (RequestException $e) {
            Log::error('Slack Post Failed: '.$e->getMessage());
            Log::error('Failed message: '.$message);
            Log::error($e->getTraceAsString());
            return false;
        }
    }
}

このコードは、LaravelのHTTPクライアントを使用してSlackにメッセージを送信します。
設定ファイルからWebhook URL、ユーザー名、およびアイコンの絵文字を取得し、メッセージを送信します。

Laravelの設定ファイル

SlackのWebhook URLやその他の設定は、Laravelの設定ファイルに記載します。

例えば、config/slack.phpというファイルを作成し、以下のように設定します。

<?php

return [
    'webhook_url' => env('SLACK_WEBHOOK_URL'),
    'username' => env('SLACK_USERNAME', 'LaravelBot'),
    'icon_emoji' => env('SLACK_ICON_EMOJI', ':robot_face:'),
];

また、.envファイルに以下のように追加します。

SLACK_WEBHOOK_URL=https://hooks.slack.com/services/your/webhook/url
SLACK_USERNAME=LaravelBot
SLACK_ICON_EMOJI=:robot_face:

以上で、LaravelからSlackにメッセージを送信する準備が整います。

必要に応じて、設定ファイルやコードを調整してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください