LoginSignup
0

More than 5 years have passed since last update.

[AWS][Lambda] Lambda で Typetalk に投稿するサンプル

Last updated at Posted at 2017-05-24

弊社では社内コミュニケーションツールとして 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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0