コンタクトページの内容をslackに通知させたい
静的サイトのコンタクトページをslackに通知させたいという話しです。
最初のwebhookとかの設定は既にやっていたので、あとはlamdaで関数を作成して、apiゲートウェイを設定していきました。
lamdaで関数を作る
lamdaの画面で関数を作成ボタンを押すと関数が作成できます。
下の方にエディタの画面がでてくるので、そこに入力していきます。
こんな感じで作成しました。
index.js
const https = require('https');
exports.handler = (event, context, callback) => {
const payload = JSON.stringify({
text: `\n\n会社名: ${event.company}\n 所在地: ${event.address}\n 担当者: ${event.name}\n メールアドレス: ${event.email}}`,
});
const options = {
hostname: "****.****.com",
method: "POST",
path: "/services/*******/*******",
};
const req = https.request(options,
(res) => res.on("data", () => callback(null, "OK")))
req.on("error", (error) => callback(JSON.stringify(error)));
req.write(payload);
req.end();
}
export.handler
とは:handlerはイベントを処理するlamda関数内のメソッド。関数を呼び出すとメソッドが実行され、レスポンスが返ってきたら、別の処理をするようになる。
export.handlerの引数について、ハンドラーの引数は全部で三つあります。
1. event :最初の引数は呼び出し元からの情報を含むeventオブジェクトです。
2. context :
3. callback :
callback
とは
res.on
はdataを指定して使用することで、パース処理を開始している。
req.write
とは:サーバ側へHTTPリクエストのボディデータは送信されます。