LANG SELRCT

コードを書く場所

2019年2月20日水曜日

AWS LambdaでLINE BOTを作ってみる


LambdaでLINE Messaging APIを試したコードを書き残しておきます。

コードは以下のindex.jsに書きましたがLINE Developersでの設定も必要です。
試したことがない場合は LINE側の設定方法 で設定できると思います。



ここでは試しに何を入力してもHelloを返すコードを書きました。

返すテキストはindex.jsの"text": "Hello"で設定しています。



アクセストークンは token という key で環境変数に入れて process.env.token で呼び出しています。

もっといろいろ試したい場合
LINE BOTでできることをGoogle Apps Scriptで試した一覧
(Google Apps Scriptで試した一覧です)


Lambda Function

index.js
/************************************
require('https')
************************************/
var https = require('https');

/************************************
exports.handler
************************************/
exports.handler = function(event) {

  /************************************
  LINEに投げ返すデータ
  ************************************/
  var data = {
    "replyToken": JSON.parse(event.body).events[0].replyToken,
    "messages": [{
      "type": "text",
      "text": "Hello"
    }]
  };
  var postData = JSON.stringify(data);
  console.log(postData);

  /************************************
  options
  ************************************/
  var options = {
    "method": 'POST',
    "host": 'api.line.me',
    "path": '/v2/bot/message/reply',
    "headers": {
      "Content-type": "application/json",
      'Content-Length': Buffer.byteLength(postData),
      "Authorization": " Bearer " + process.env.token
    }
  };
  console.log(options);

  /************************************
  https.request
  ************************************/
  var req = https.request(options, function(res) {
    console.log('statusCode: ' + res.statusCode);
    console.log('headers: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('postData', function(chunk) {
      console.log("chunk");
    });
    req.on('error', function(err) {
      console.log('message: ' + err.message);
    });
  });
  req.write(postData);
  req.end();
};


関連記事


参考

Messaging APIを利用するには

http.request(options[, callback])
http.request(url[, options][, callback])
https://nodejs.org/api/http.html#http_http_request_options_callback