最近、作ったWebサービスで手動でユーザ数などのデータを取得していたけど、
めんどくさくなったので、いまさらながらSlackAPIを使ってみた。
ユーザ数とか登録データ数とかを通知♪
いまは毎日0:00に通知するようにしているので、毎日たのしみ(´ω`)
全体の流れはこんな感じ
まずは、「 https://api.slack.com/apps 」にアクセス
「Create New App」をクリックすると、作成ダイアログが表示されるので、
アプリ名を入力して、「Create App」をクリック
これでSlack Appが作成できた(´ω`)
Web APIでメッセージを投稿できるように設定するために、
作成したAppのSettingsのBasic Infomarionにある「Incoming Webhooks」を有効にする
クリックするとこんな感じ。デフォルトはOFFなので、ONに切り替える。
これで有効になった(´ω`)
有効にしたので、どのチャネルに通知するかを設定していく
有効すると、下の方に「Add New Webhook to Workspace」があるので、それをクリック
クリックすると、チャネルの選択画面が出るので、投稿先を設定して、「許可する」をクリック。
投稿先はチャネルだけじゃなく、個人宛も設定できます(´ω`)
許可すると、こんな感じの画面に。
WebhookURLが追加されるので、「Copy」を押して、コピーしておく
取得したWebhookURL宛にメッセージを送ればOK
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
/**
* Slackにメッセージ(text)を送る関数
*/
const axios = require("axios");
async function sendSlack(text) {
const webhookURL = "https://YOUR_WEBHOOK_URL";
const param = { text: text };
const headers = { "Content-Type": "application/x-www-form-urlencoded" };
try {
await axios.post(webhookURL, param, { headers: headers });
} catch (error) {
console.error(`Error occuered in sendSlack: ${error}`, error);
}
}
/**
* Slackへの通知を定期実行するFuncitons
*/
exports.slackNotify = functions.pubsub
.schedule("0 0 * * *")
.timeZone("Asia/Tokyo")
.onRun(async context => {
// Slack通知
await sendSlack("こんにちは");
});
sendSlack(text)
のwebhookURL
に、
上でコピーしたWebhook URLをはりつけてください。
こんな感じで「こんにちは」される(´ω`)
あとは、Function内でFirestoreとかを呼び出して、データを収集・集計すればOKヽ(=´▽`=)ノ
メッセージ送るだけならすごく簡単(´ω`)
ほかにもパラメタを変えれば、色を変えたり、画像を送れたりできるよう!!
- SlackのIncoming Webhooksを使い倒す - Qiita
公式ドキュメントだとこちら
- Incoming Webhooks | Slack
また、こちらの記事でも書いたようにジョブの無料枠は、Googleアカウントごと...
遊びやテスト用にいくつも作ると課金されはじめるので注意が必要です...
- Cloud Functions for Firebaseのcronみたいな定期実行を試したら簡単だった - Qiita
以上!!
最近、積読用の読書管理アプリ「積読ハウマッチ」をリリースしました!
積読ハウマッチは、Nuxt.js+Firebaseで開発してます!
もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ
要望・感想・アドバイスなどあれば、
公式アカウント(@MemoryLoverz)や開発者(@kira_puka)まで〜
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント