🏓
stripeで新規ユーザ作成時にslackにログを通知させる
stripe -> slack への通知がテーマです。
インターン先の企業では決済周りの処理をstripeで管理しています。stripeで発生した全ての処理を以下の画像のような仕組みでイベントごとにslackに通知させています。
しかし、初回課金の発生を見逃さないために、初回課金が発生した時点でslackのチャンネルに入る全てのメンバーにメンションをつけるように設定してほしいと依頼がありました。
そこで以下のような構成で実装を試みました。
1. 初回課金の発生を通知させるbotの作成
上の記事を参考にincoming webhookを新しく設定。
2. Cloud Functionのエンドポイントの作成
1. firebaseでプロジェクトを作成
2. stripeでエンドポイントの作成
次に上の記事を参考にfunctionsディレクトリ直下で以下のコマンドを実行し、Cloud Functionを使う準備と作成した関数をデプロイします。
$ npm install -g firebase-tools
$ firebase login
$ firebase init functions
$ firebase deploy --only functions
3.コードの実装
上の記事を参考に必要なモジュールをインポート。
npm install --save npm install @slack/webhook
次に同様に上の記事を参考にコードを記述します。
index.ts
import * as functions from "firebase-functions";
export const helloWorld = functions.https.onRequest((request, response) => {
try {
functions.logger.info(JSON.stringify(request.body), {
structuredData: true,
});
const { IncomingWebhook } = require("@slack/webhook");
const webhook = new IncomingWebhook(
"https://hooks.slack.com/xxxxxxx"
);
(async () => {
await webhook.send({
text: "初回課金です! <!channel>",
});
})();
} catch (error) {
console.error(error);
}
response.send("Hello from Firebase!");
});
最後にデプロイします。
firebase deploy
終わり。
Discussion