27
24

More than 5 years have passed since last update.

LambdaからChatworkにメッセージを投稿

Last updated at Posted at 2014-11-26

SNS経由でChatworkにメッセージ投げれないかと考えてましたが、これLambdaでいいんじゃないの?と思ってやってみました。せっかくPreviewも通ったし。

Lambda functionは以下のような感じです。

lambda-chatwork.js
var request = require('request');

exports.handler = function(event, context) {
  var msg = event.msg;

  var room_id = 'ルームID';
  var options = {
    url: 'https://api.chatwork.com/v2/rooms/' + room_id +'/messages',
    headers: {
      'X-ChatWorkToken': '自身のAPIトークン'
    },
    form : {body : msg},
    useQuerystring: true
  };

  request.post(options, function (err, res, body) {
    if (!err && res.statusCode == 200) {
      context.done(null, body);
    }else{
      context.done('error', err);
    }
  });
};

httpsモジュールではうまくいかなかったので、request使ってます。requestのモジュールも含めてzipで上げる必要があります。

invoke-asyncコマンドで呼び出します。

aws lambda  invoke-async \
--function-name lambda-chatwork \
--region us-east-1 \
--invoke-args input.txt
input.txt
{
  "msg": "Hello Chatwork API & Lambda!!!"
}

で、いけました。(諸事情により名前部分消してます。。。)

chatwork.png

使う場面としては、サーバでエラー検知したときに、エラーログをChatworkに投げようと思ってます。とりあえず、出来ただけで正しい?使い方なのかはよくわかりませんw
ただ、SNSのHTTP通知はリクエストヘッダを変更できないので、Chatwork APIのようにリクエストヘッダにトークンを含める必要がある場合に使うのは厳しいです。
なので、そういった場合に通知部分をLambdaに外出しして実行するのは有りかなと思いました。

27
24
0

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
27
24