Commit f4bbcb63ef640169aa5f8d6876eaee8e59548dba
1 parent
eb28d472
Exists in
master
เพิ่ม ตัวอย่าง action
Showing
4 changed files
with
126 additions
and
8 deletions
Show diff stats
| @@ -0,0 +1,59 @@ | @@ -0,0 +1,59 @@ | ||
| 1 | +{ | ||
| 2 | + "action": { | ||
| 3 | + "type": "text", | ||
| 4 | + "text": "Hello Quick Reply!", | ||
| 5 | + "quickReply": { | ||
| 6 | + "items": [ | ||
| 7 | + { | ||
| 8 | + "type": "action", | ||
| 9 | + "action": { | ||
| 10 | + "type": "uri", | ||
| 11 | + "label": "Add to Cart", | ||
| 12 | + "uri": "https://developers.line.me" | ||
| 13 | + } | ||
| 14 | + }, | ||
| 15 | + { | ||
| 16 | + "type": "action", | ||
| 17 | + "action": { | ||
| 18 | + "type": "postback", | ||
| 19 | + "label": "Postback", | ||
| 20 | + "data": "action=buy&itemid=123" | ||
| 21 | + } | ||
| 22 | + }, | ||
| 23 | + { | ||
| 24 | + "type": "action", | ||
| 25 | + "action": { | ||
| 26 | + "type": "datetimepicker", | ||
| 27 | + "label": "Datetime Picker", | ||
| 28 | + "data": "storeId=12345", | ||
| 29 | + "mode": "datetime", | ||
| 30 | + "initial": "2018-09-11T00:00", | ||
| 31 | + "max": "2018-12-31T23:59", | ||
| 32 | + "min": "2018-01-01T00:00" | ||
| 33 | + } | ||
| 34 | + }, | ||
| 35 | + { | ||
| 36 | + "type": "action", | ||
| 37 | + "action": { | ||
| 38 | + "type": "camera", | ||
| 39 | + "label": "Camera" | ||
| 40 | + } | ||
| 41 | + }, | ||
| 42 | + { | ||
| 43 | + "type": "action", | ||
| 44 | + "action": { | ||
| 45 | + "type": "cameraRoll", | ||
| 46 | + "label": "Gallery" | ||
| 47 | + } | ||
| 48 | + }, | ||
| 49 | + { | ||
| 50 | + "type": "action", | ||
| 51 | + "action": { | ||
| 52 | + "type": "location", | ||
| 53 | + "label": "Location" | ||
| 54 | + } | ||
| 55 | + } | ||
| 56 | + ] | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | +} | ||
| 0 | \ No newline at end of file | 60 | \ No newline at end of file |
index.js
| @@ -18,12 +18,14 @@ const client = new line.Client(config); | @@ -18,12 +18,14 @@ const client = new line.Client(config); | ||
| 18 | const app = express(); | 18 | const app = express(); |
| 19 | 19 | ||
| 20 | // webhook callback | 20 | // webhook callback |
| 21 | +let debugMode = false; | ||
| 21 | app.use("/webhook", line.middleware(config)); | 22 | app.use("/webhook", line.middleware(config)); |
| 22 | app.post("/webhook", (req, res) => { | 23 | app.post("/webhook", (req, res) => { |
| 23 | // req.body.events should be an array of events | 24 | // req.body.events should be an array of events |
| 24 | if (!Array.isArray(req.body.events)) { | 25 | if (!Array.isArray(req.body.events)) { |
| 25 | return res.status(500).end(); | 26 | return res.status(500).end(); |
| 26 | } | 27 | } |
| 28 | + console.log('req.body.events !',req.body.events) | ||
| 27 | // handle events separately | 29 | // handle events separately |
| 28 | Promise.all( | 30 | Promise.all( |
| 29 | req.body.events.map((event) => { | 31 | req.body.events.map((event) => { |
| @@ -51,7 +53,7 @@ const handleEvent = (event) => { | @@ -51,7 +53,7 @@ const handleEvent = (event) => { | ||
| 51 | text: "Hello From PUI", | 53 | text: "Hello From PUI", |
| 52 | }; | 54 | }; |
| 53 | 55 | ||
| 54 | - if (event.message.type == "text") { | 56 | + if (event.type == "message" && event.message.type == "text") { |
| 55 | let selecttext = String(event.message.text).toLowerCase(); | 57 | let selecttext = String(event.message.text).toLowerCase(); |
| 56 | let get_text = ContentService.mockText()[selecttext]; | 58 | let get_text = ContentService.mockText()[selecttext]; |
| 57 | if (get_text) { | 59 | if (get_text) { |
| @@ -61,6 +63,8 @@ const handleEvent = (event) => { | @@ -61,6 +63,8 @@ const handleEvent = (event) => { | ||
| 61 | payload.text = "Other Message =>>>" + JSON.stringify(event); | 63 | payload.text = "Other Message =>>>" + JSON.stringify(event); |
| 62 | } | 64 | } |
| 63 | 65 | ||
| 66 | + console.log("SEND TO ==> " + JSON.stringify(payload)); | ||
| 67 | + | ||
| 64 | return client.replyMessage(event.replyToken, payload); | 68 | return client.replyMessage(event.replyToken, payload); |
| 65 | }; | 69 | }; |
| 66 | 70 | ||
| @@ -71,12 +75,14 @@ app.get("/", (req, res) => { | @@ -71,12 +75,14 @@ app.get("/", (req, res) => { | ||
| 71 | 75 | ||
| 72 | app.post("/push", (req, res) => { | 76 | app.post("/push", (req, res) => { |
| 73 | let body = req.body; | 77 | let body = req.body; |
| 74 | - let { user_id } = body; | 78 | + let { user_id, message } = body; |
| 75 | console.log("push =>> body ::", body); | 79 | console.log("push =>> body ::", body); |
| 76 | - let message = { | ||
| 77 | - type: "text", | ||
| 78 | - text: `Push Message! to ${user_id}`, | ||
| 79 | - }; | 80 | + if (!message) { |
| 81 | + message = { | ||
| 82 | + type: "text", | ||
| 83 | + text: `Push Message! to ${user_id}`, | ||
| 84 | + }; | ||
| 85 | + } | ||
| 80 | client.pushMessage(user_id, message); | 86 | client.pushMessage(user_id, message); |
| 81 | res.json(message); | 87 | res.json(message); |
| 82 | }); | 88 | }); |
services/ContentService.js
| 1 | - | ||
| 2 | const flexMsg = require("./flexMsg"); | 1 | const flexMsg = require("./flexMsg"); |
| 2 | +const { action } = require("../exampleMassage/action.json"); | ||
| 3 | const genMsgContent = flexMsg.GenContentFlex; | 3 | const genMsgContent = flexMsg.GenContentFlex; |
| 4 | const flexs = flexMsg.flexs; | 4 | const flexs = flexMsg.flexs; |
| 5 | 5 | ||
| 6 | - | ||
| 7 | const ContentService = { | 6 | const ContentService = { |
| 8 | mockText: () => { | 7 | mockText: () => { |
| 9 | return { | 8 | return { |
| @@ -16,6 +15,7 @@ const ContentService = { | @@ -16,6 +15,7 @@ const ContentService = { | ||
| 16 | bub4: flexs.bub4, | 15 | bub4: flexs.bub4, |
| 17 | bub5: flexs.bub5, | 16 | bub5: flexs.bub5, |
| 18 | bub6: flexs.bub6, | 17 | bub6: flexs.bub6, |
| 18 | + action: action, | ||
| 19 | }; | 19 | }; |
| 20 | }, | 20 | }, |
| 21 | }; | 21 | }; |
| @@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
| 1 | +{ | ||
| 2 | + "type": "flex", | ||
| 3 | + "altText": "GenContentFlex!0", | ||
| 4 | + "contents": { | ||
| 5 | + "type": "bubble", | ||
| 6 | + "direction": "ltr", | ||
| 7 | + "header": { | ||
| 8 | + "type": "box", | ||
| 9 | + "layout": "vertical", | ||
| 10 | + "contents": [ | ||
| 11 | + { | ||
| 12 | + "type": "text", | ||
| 13 | + "text": "Header", | ||
| 14 | + "align": "center", | ||
| 15 | + "contents": [] | ||
| 16 | + } | ||
| 17 | + ] | ||
| 18 | + }, | ||
| 19 | + "hero": { | ||
| 20 | + "type": "image", | ||
| 21 | + "url": "https://1417094351.rsc.cdn77.org/articles/1439/1438984/thumbnail/small.gif?3", | ||
| 22 | + "size": "full", | ||
| 23 | + "aspectRatio": "1.51:1", | ||
| 24 | + "aspectMode": "fit" | ||
| 25 | + }, | ||
| 26 | + "body": { | ||
| 27 | + "type": "box", | ||
| 28 | + "layout": "vertical", | ||
| 29 | + "contents": [ | ||
| 30 | + { | ||
| 31 | + "type": "text", | ||
| 32 | + "text": "Body", | ||
| 33 | + "align": "center", | ||
| 34 | + "contents": [] | ||
| 35 | + } | ||
| 36 | + ] | ||
| 37 | + }, | ||
| 38 | + "footer": { | ||
| 39 | + "type": "box", | ||
| 40 | + "layout": "horizontal", | ||
| 41 | + "contents": [ | ||
| 42 | + { | ||
| 43 | + "type": "button", | ||
| 44 | + "action": { | ||
| 45 | + "type": "uri", | ||
| 46 | + "label": "Button", | ||
| 47 | + "uri": "https://linecorp.com" | ||
| 48 | + } | ||
| 49 | + } | ||
| 50 | + ] | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | +} | ||
| 0 | \ No newline at end of file | 54 | \ No newline at end of file |