Firebaseでユーザーが追加される度に、Slackに通知する方法

2020-10-21
プログラミング

## 前提

  • Firebase Authenticateでサインアップされたことを感知する
  • Firebase Cloud Functionsを使う
  • Firebaseを無料プランをやめる(Firebase Cloud Functionsを使用するため)
  • Slackはチャネルに「Incoming WebHooks」を追加する

方法

Firebaseにログインし、Cloud Functionsを開く。
手順通りに firebase-toolsをインストールして、プロジェクトを作成

$ npm install -g firebase-tools

# プロジェクトを作成する
$ mkdir firebase-cloud-functions
$ cd firebase-cloud-functions

# Cloud Functions, Javascriptを選ぶ
$ firebase init

Cloud Functionsではは、functionsディレクトリ中がデプロイされるので、functionsディレクトリに移動

$ cd functions

必要なパッケージをインストール

# 一応最新版に
$ npm install firebase-functions@latest firebase-admin@latest --save

# slack通知のパッケージ
$ npm install @slack/webhook 

functions/index.jsの中身を修正して、サインアップを監視して、Slack通知するようにする。

'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const { IncomingWebhook } = require('@slack/webhook');
admin.initializeApp();

const webhook = new IncomingWebhook(functions.config().slack.url);

# Firebase Authenticate のサインアップイベントを監視
exports.sendToSlack = functions.auth.user().onCreate(async (user) => {
  await sendWebhookSlack();
  return;
});

# Slack通知用メソッド。
async function sendWebhookSlack() {
  await webhook.send({
    text: '新たにユーザーが作成されました',
  });
}

firebase-cloud-functionsの直下のディレクトリに移動して、デプロイする

$ cd ..
$ pwd
../../../firebase-cloud-functions

# deploy
$ firebase deploy

まとめ

Firebase Cloud Functionsには、Firebase上のイベントを感知するメソッドがたくさん準備されている。
このメソッドを使って色んなとこに監視を入れて、ユーザーの動きを追っていければ、プロダクトの改善点を見つかる気がする。
数増えたら監視外して、統計処理でユーザーの動きを追った方がいいと思うけど。。