技術ノート クラウド Bash スクリプトから Slack にメッセージを送信する方法

Bash スクリプトから Slack にメッセージを送信する方法

Bash スクリプトから Slack にメッセージを送信する方法

いくつかの Webhook を利用すると、Slack をコマンド ラインの通知センターに変えることができます。単純なメッセージ フィードからアプリのカスタム Slack 統合まで、これを使用してできることはたくさんあります。

Bash スクリプトから Slack にメッセージを送信する方法

この種の統合は、RSS フィードの動作と同様に、何かが更新されたときや新しいコンテンツがどこかで公開されたときなど、通知ベースのイベントに特にうまく機能します。同じ API 上で動作する独自のアプリのカスタム統合を作成することもできます。これには、ユーザー入力を取得するための インタラクティブなダイアログやメニュー も含まれます。

Webhook で Slack ボットを使用する

Bash スクリプトから Slack にメッセージを送信する方法

Slack には、ワークスペースとの多くのやり取りを自動化できる API があります。この API には、次のような HTTP リクエストを実行できるどこからでもアクセスできます。

 POST
Bash スクリプトから Slack にメッセージを送信する方法

そして

GET

これには、 curl ユーティリティを使用する bash スクリプトとほとんどのスクリプト言語が含まれます。 curl ユーティリティは、ほぼすべての Unix ディストリビューションにデフォルトでインストールされており、 Windows では ダウンロードできます。

この API の一部には、2 つのアプリケーションが相互にメッセージを送信する方法である Webhook が含まれています。 Webhook URL が与えられるので、それを作成できます。

 POST

JSON オブジェクト形式のデータを含むリクエスト。たとえば、次のような簡単なメッセージを送信できます。

 {"text":"ハロー、ワールド!"}

bash スクリプトはこのデータを Slack に送信し、Slack がそれを読み取って「Hello, World!」を送信します。 Webhook を設定するときに指定したチャネルに送信します。

独自の Slack アプリ を使用する必要があるため、メッセージはボット (カスタマイズ可能) から送信されます。これは実際には良いことです。 Webhook は主に通知に使用され、Webhook 経由で送信されたメッセージは自分のアカウントから送信されないため、この方法で送信されたメッセージについてはプッシュ通知を受け取ります。

同様の方法で自分の Slack アカウントから自動メッセージを送信することもできます。ただし、 as_user 引数を true に設定して chat.postMessage API を使用する必要があります。これには、 chat:write:user 権限スコープ を持つ OAuth 2.0 トークンが 必要です。これは、API を使用する前に 自分で生成する 必要があります。 Webhook は管理がはるかに簡単であるため、Webhook を使用し続けることをお勧めします。

Bash スクリプトから Slack にメッセージを送信する方法

Webhook を受け入れるように Slack アプリをセットアップする

Slack の API ポータルに移動し、 新しい Slack アプリを作成します 。このアプリにユーザー名を付け、それが属するワークスペースを選択して、「アプリの作成」をクリックします。

ボットに機能を追加できるホームページが表示されます。ここには カスタム /commands インタラクティブ メッセージ などの優れた機能がたくさんありますが、今必要なのは「受信 Webhook」だけです。このボタンをクリックしてオンにします。

メッセージの送信先としてアプリケーションの新しい Webhook を登録する必要があります。この画面の下部にある「新しい Webhook をワークスペースに追加」をクリックします。

アプリケーションを認証し、メッセージのチャネルを選択するように求められます。これらは、パブリック チャネルまたは他のユーザーとのダイレクト メッセージです。両方の DM にボットが表示され、通知が届きます。

異なるチャネルに複数の Webhook を登録できますが、各フックの URL は異なります。

Webhook の URL をコピーし、ターミナルを開きます。以下に貼り付けます:

 curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' YOUR_WEBHOOK_URL

YOUR_WEBHOOK_URL を Slack から提供されたものに置き換えます。 Enter キーを押すと、「Hello, World!」というメッセージが表示されます。通知を選択すると、選択したチャネルで新しいメッセージが表示されます。

この curl コマンドは bash スクリプト内から使用でき、 bash 変数 からなど、必要なデータを送信するように JSON オブジェクトを構成できます。

Bash スクリプトから Slack にメッセージを送信する方法

フォーマットされたメッセージと添付ファイルの使用

メッセージ API は、単純なテキストを送信するだけではありません。メッセージをより定型化したい場合は、 curl が送信する JSON オブジェクトに追加のパラメーターを追加する必要があります。

Slack のメッセージ ボックスと同じように、 マークダウン やその他の単純な書式設定を使用できます。ただし、注意すべき点が 1 つあり、チャネルにリンクしてユーザーに @ を送信するには、プレーンテキスト名ではなくチャネル ID とユーザー ID を指定する必要があり、指定しないと機能しないということです。

それ以外の場合は、Slack の Block Kit Builder を 使用します。Slack メッセージ用の WYSIWYG エディターを使用すると、インタラクティブで豊富な埋め込みコンテンツを作成でき、JSON の作成も処理できます。ボタンやメニューなどの要素は 、指定した URL に POST リクエストを送信するように構成でき、ユーザーはメッセージを送信しているアプリケーションに応答できるようになります。

ただし、古いメソッドが廃止されるわけではないため、ブロック キット ビルダーは完全に必要というわけではありません。 Attachments などの機能だけを使用したい場合は、古い メッセージ ビルダー を使用して JSON を構築してプレビューできます。

「 Bash スクリプトから Slack にメッセージを送信する方法」に関するベスト動画選定!

【仕様変更】Slackダウンロードしたファイルの場所について
【Slack】チャンネルの使い方 参加する・退出する方法を解説【初心者向け】