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にメッセージを送信する準備が整います。
必要に応じて、設定ファイルやコードを調整してください。