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 |