イベントwebhookの記述
次にユーザーがアプリに登録したときにメールを送信する2番目のユースケースに移りましょう。
ユーザーが Auth0 を使用してアプリに登録すると、新しいデータを users
テーブルに挿入してユーザーデータの同期を維持します。ミューテーションを作成するためにサインアップ中に作成した Auth0 ルールを覚えていますか?
これはテーブル users
に対する insert
操作です。
各イベントのペイロードはこちらに記載されています
次に、この挿入操作をキャプチャしてイベントをトリガーします。
SendGrid SMTP 電子メール API
この例では SendGrid
の SMTP サーバーを利用し nodemailer
を使用してメールを送信します。
SendGridにサインアップして、無料のアカウントを作成します。
次のドキュメントに従って API キーを作成します こちら。
webhookの記述
const nodemailer = require('nodemailer');const transporter = nodemailer.createTransport('smtp://'+process.env.SMTP_LOGIN+':'+process.env.SMTP_PASSWORD+'@' + process.env.SMTP_HOST);const fs = require('fs');const path = require('path');const express = require('express');const bodyParser = require('body-parser');const app = express();app.set('port', (process.env.PORT || 3000));app.use('/', express.static(path.join(__dirname, 'public')));app.use(bodyParser.json());app.use(bodyParser.urlencoded({extended: true}));app.use(function(req, res, next) {res.setHeader('Access-Control-Allow-Origin', '*');res.setHeader('Cache-Control', 'no-cache');next();});app.post('/send-email', function(req, res) {const name = req.body.event.data.new.name;// setup e-mail dataconst mailOptions = {from: process.env.SENDER_ADDRESS, // sender addressto: process.env.RECEIVER_ADDRESS, // list of receiverssubject: 'A new user has registered', // Subject linetext: 'Hi, This is to notify that a new user has registered under the name of ' + name, // plaintext bodyhtml: '<p>'+'Hi, This is to notify that a new user has registered under the name of ' + name + '</p>' // html body};// send mail with defined transport objecttransporter.sendMail(mailOptions, function(error, info){if(error){return console.log(error);}console.log('Message sent: ' + info.response);res.json({'success': true});});});app.listen(app.get('port'), function() {console.log('Server started on: ' + app.get('port'));});
デプロイ
環境変数
Glitch で独自のプロジェクトにリミックスした後 .env
ファイルを変更して
SMTP_LOGIN
SMTP_PASSWORD
SMTP_HOST
の値を入力します。
さらに次に送信者と受信者のアドレスも設定する必要があります。
SENDER_ADDRESS
RECEIVER_ADDRESS
これらの環境変数。
おめでとうございます! データベースイベントを処理する最初の Webhook を記述してデプロイしました。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs