おかもく?勉強会
林田
・アプリエラー通知
・zabbixとかmonitやらの監視通知
・問い合わせメール
全てのメール通知をslackに集約して幸せになりたい
はじめに
有料かよ
メール配信っぽいサービスで
API提供しているところで、うまくできないかな
https://www.mailgun.com/
https://zapier.com/zapbook/mailgun/slack/
即時じゃねえ
mailgunのメール転送機能で、URLを叩けそう
ということは、エンドポイントさえあれば・・・
てっとりばやくserverlessを使う
https://github.com/serverless/serverless
$ serverless create --template aws-nodejs
$ ls
app.js handler.js package.json serverless.yml
$ serverless deploy
service: serverless-mailgun-slack
provider:
name: aws
runtime: nodejs4.3
functions:
slackPost:
handler: handler.slackPost
memorySize: 128
events:
- http:
path: post
method: post
"use strict";
// configuration
const MAILGUN_KEY = process.env.MAILGUN_KEY;
const SLACKHOOK_URL = process.env.SLACKHOOK_URL;
const superagent = require("superagent");
const mockreq = require("mock-req");
const multiparty = require("multiparty");
const crypto = require("crypto");
const hmac = crypto.createHmac("sha256", MAILGUN_KEY);
const qs = require('querystring');
module.exports.slackPost = (event, context, cb) => {
const params = qs.parse(event.body);
processMessage(
params.timestamp,
params.token,
params.signature,
params.recipient,
params.From,
params.Subject,
params["body-plain"],
cb
);
};
function processMessage(timestamp, token, signature,
recipient, from, subject, body, cb) {
~~略
}
serverless.yml
handler.js
エンドポイントとlambdaができた
転送時にAPIをたたいてもらう
うまくいったっぽい
Postパラメータの取得方法
mailgunのドキュメントに
転送した際のPOSTパラメータが書いてなさそうだったので、実際にエンドポイントから渡されたパラメータをデバッグした。
もっと手っ取り早い方法は、localhost:3000でrailsでサーバをたてて、ngrokで外部公開して、postアクションでbinding.pryして、取得できる。