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ファイルに切り出すなどすれば、サーバー環境によって送信先を切り替えることもできるので便利です。

いいなと思ったら応援しよう!