├── .gitignore ├── event.json ├── assets ├── detail.png ├── serverless.png └── diagram.graffle │ ├── data.plist │ ├── image1.tiff │ ├── image3.tiff │ └── image4.tiff ├── serverless.yml ├── package.json └── handler.js /.gitignore: -------------------------------------------------------------------------------- 1 | .serverless/ 2 | node_modules 3 | .env 4 | -------------------------------------------------------------------------------- /event.json: -------------------------------------------------------------------------------- 1 | { 2 | "key3": "value3", 3 | "key2": "value2", 4 | "key1": "value1" 5 | } 6 | -------------------------------------------------------------------------------- /assets/detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/detail.png -------------------------------------------------------------------------------- /assets/serverless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/serverless.png -------------------------------------------------------------------------------- /assets/diagram.graffle/data.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/diagram.graffle/data.plist -------------------------------------------------------------------------------- /assets/diagram.graffle/image1.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/diagram.graffle/image1.tiff -------------------------------------------------------------------------------- /assets/diagram.graffle/image3.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/diagram.graffle/image3.tiff -------------------------------------------------------------------------------- /assets/diagram.graffle/image4.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yurenju/serverless-line-bot/HEAD/assets/diagram.graffle/image4.tiff -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | service: aws-nodejs 2 | 3 | provider: 4 | name: aws 5 | runtime: nodejs4.3 6 | stage: beta 7 | region: us-west-2 8 | 9 | package: 10 | include: 11 | - .env 12 | 13 | functions: 14 | receive: 15 | handler: handler.receive 16 | memorySize: 256 17 | events: 18 | - http: POST receive 19 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverless-line-bot", 3 | "version": "0.0.1", 4 | "description": "", 5 | "main": "handler.js", 6 | "dependencies": { 7 | "dotenv": "^2.0.0", 8 | "line-bot-sdk": "^0.1.4", 9 | "node-fetch": "^1.6.1" 10 | }, 11 | "devDependencies": {}, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | }, 15 | "author": "Yuren Ju ", 16 | "license": "MIT" 17 | } 18 | -------------------------------------------------------------------------------- /handler.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('dotenv').config(); 4 | 5 | const fetch = require('node-fetch'); 6 | const LineBot = require('line-bot-sdk'); 7 | 8 | module.exports = { 9 | receive(event, context, cb) { 10 | const message = `postback ${event.body.result[0].content.text}`; 11 | const userId = event.body.result[0].content.from; 12 | const client = LineBot.client({ 13 | channelID: process.env.LINE_CHANNEL_ID, 14 | channelSecret: process.env.LINE_CHANNEL_SECRET, 15 | channelMID: process.env.LINE_MID 16 | }); 17 | client.sendText(userId, message) 18 | .then(res => cb(null, res)) 19 | .catch(err => cb(err)); 20 | } 21 | }; 22 | --------------------------------------------------------------------------------