LANG SELRCT

コードを書く場所

2019年2月24日日曜日

AWS LambdaでLINEにPUSHしてみる


API Gateway の endpoint にアクセスしたら LINE に PUSH してみます。


ブラウザには SUCCESS という文字列を返してみます。


手順
  1. LINE BOT を作ります
  2. 環境変数にアクセストークンを設定します
  3. Lambda Function と API Gatewayを作ります



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

var CHANNEL_ACCESS_TOKEN = process.env.token; 
var USER_ID = "ID";
var text = "hello!!";

/************************************
exports.handler
************************************/
exports.handler = async function(event) {
  var body = event['body'];
  var jobj = JSON.parse(body);
  
  var results = await getData();
  var json = returnJson(results);
  return json;
}

//Promise
function getData() {
  return new Promise(resolveFunc);
}

/************************************
https.request
************************************/
function resolveFunc(callback) { 
  var req = https.request(getOptions(), function(){
    callback("SUCCESS");
  });
  req.write(getPostData());  
  req.end();
};

/************************************
getOptions
************************************/
function getOptions() {
  var options = {
    "method": 'POST',
    "host": 'api.line.me',
    "path": '/v2/bot/message/push',
    "headers": {
      "Content-type": "application/json",
      'Content-Length': Buffer.byteLength(getPostData()),
      "Authorization": " Bearer " + CHANNEL_ACCESS_TOKEN
    }
  }
  return options;
}

/************************************
getPostData()
************************************/
function getPostData() {
  var data = {
    "to": USER_ID,
    "messages": [{
      "type": "text",
      "text": text,
    }]
  };
  var postData = JSON.stringify(data);
  return postData;
} 

//JSONを返す
function returnJson(results) {
  const response = {
    body: results,
  };
  return response;
}