LaravelでGoogleChatにメッセージを送信する方法
システム保守などで、内部向けにちょっとした警告通知などをする際にメールではなく、GoogleChatのスペースに対してメッセージを送る運用をしています。意外と便利だったので記録として残します。
GoogleChat側での準備
スペースのオプションから「アプリと統合」を選択し「Webhookを追加」ボタンを押して、Webhookを追加しておきます。
追加できたらURLが生成されるので、後ほど利用します。
Laravalの実装
以下のファンクションでスペースに対してメッセージを送信可能です。
使い方としては、$textに送りたいメッセージを設定してください。
改行などをいれる場合は、「\n」を指定すれば反映されます。
/**
* GoogleChatへのエラー通知を行います
*/
private function sendGoogleChat($text) {
$url = "https://chat.googleapis.com/v1/spaces/....."; // ★ここにWebhookのURLを指定
$data = json_encode([
'text' => $text
], JSON_UNESCAPED_UNICODE);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json',]);
$response = curl_exec($curl);
curl_close($curl);
}
拡張性
WebhookのURLについては、envファイルに切り出すなどすれば、サーバー環境によって送信先を切り替えることもできるので便利です。