弊社では社内コミュニケーションツールとして Typetalk や Slack を使っています。
Backlog との連携が簡単なんで Typetalk の方がよく見られてるのですが、今までは Backlog 連携以外ではあまり使ってなかったのでした。
そんなわけで AWS CloudWatch からの Notification とか、SES 経由で受信したメールを Typetalk に流したいなーと思って、こんなん書きました。
deploy とかめんどくさいので Serverless framework 使いましょうかね。
こんな感じになると思います。
handler.js
'use strict';
module.exports.hello = (event, context, callback) => {
const https = require('https');
const querystring = require('querystring');
const typetalk_talken = process.env.TYPETALK_TOKEN;
const typetalk_room = process.env.TYPETALK_ROOM;
const options = {
hostname: 'typetalk.in',
path: '/api/v1/topics/'+typetalk_room+'?typetalkToken='+typetalk_talken,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
let req = https.request(options, (res) => {
let response = {
statusCode: res.statusCode,
body: JSON.stringify({
statusCode: res.statusCode
})
};
console.log('STATUS: ' + res.statusCode);
callback(null,response);
});
req.write(querystring.stringify({'message': 'Hello Typetalk!'}));
req.on('error', (err) => {
callback(err);
});
req.end();
};
serverless.yml
service: post-typetalk
provider:
name: aws
runtime: nodejs6.10
stage: dev
region: ap-norhteast-1
environment:
TYPETALK_TOKEN: '<string>__TYPETALK_TALKEN_HERE__'
TYPETALK_ROOM: '<number>__TYPETALK_ROOM_NO_HERE__'
functions:
hello:
handler: handler.hello