Firebase Functions
での処理の結果を Slack
に通知したいという場面があったので、僕が行った実装方法を紹介したいと思います🧑🔧
それではやっていく
まずは通知を知らせるためのアプリを作成し、OAuth Access Token
を取得(今回は Bot を使用します)・通知を送信するチャンネルにアプリを追加するところまでを完了させましょう。こちらの手順については下記の記事に大変わかりやすく記載されているので割愛します🙏
次に、Slack Web API
を使用するためのモジュールをインストールします。ちなみに今回は Firebase Functions
で使用する想定なので、functions
ディレクトリに移動してから下記を実行します。
$ npm install @slack/web-api
インストールが完了したら、取得しておいた OAuth Access Token
は Firebase Functions
の環境変数としてセットして、より安全にトークンを使用しましょう。僕は karasu_token
と名付けて保存しました🦅
$ firebase functions:config:set slack.karasu_token="TOKEN"
次に Slack
の WebClient
を下記のように初期化して取得します。
const { WebClient } = require('@slack/web-api'); const slackClient = new WebClient(functions.config().slack.karasu_token);
上記手順が完了したら、あとは slackClient
から chat.postMessage()
を呼び出せば任意のチャンネルに任意のメッセージを送信することができるようになります🎉
async function sendMessageToSlack(message) { await slackClient.chat.postMessage({ text: message, channel: 'firebase-functions-notice' }); }
postMessage()
の他の引数については下記を参照してみてください👀
参考
- https://qiita.com/kou_pg_0131/items/56dd81f2f4716ca292ef
- https://www.npmjs.com/package/@slack/web-api
- https://api.slack.com/methods/chat.postMessage