b9184255
Surasit Yerpui
update Code Reweb...
|
1
|
"use strict";
|
a8dde2dd
Surasit Yerpui
firstcommit
|
2
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
3
|
const line = require("@line/bot-sdk");
|
889c144c
Surasit Yerpui
SW RICH MENU
|
4
|
const express = require("express");
|
b9184255
Surasit Yerpui
update Code Reweb...
|
5
6
7
|
const config = require("./config.json");
const bodyParser = require("body-parser");
const axios = require("axios");
|
889c144c
Surasit Yerpui
SW RICH MENU
|
8
|
const fs = require("fs");
|
b9184255
Surasit Yerpui
update Code Reweb...
|
9
10
11
12
13
14
15
16
|
const request = require("request");
const moment = require("moment");
const flexMsg = require("./flexMsg");
const ContentService = require("./services/ContentService");
const LineService = require("./services/LineService");
// create LINE SDK client
const client = new line.Client(config);
|
a8dde2dd
Surasit Yerpui
firstcommit
|
17
|
|
a8dde2dd
Surasit Yerpui
firstcommit
|
18
|
const app = express();
|
b9184255
Surasit Yerpui
update Code Reweb...
|
19
20
21
22
23
24
|
// webhook callback
let debugMode = false;
app.use("/webhook", line.middleware(config));
app.post("/webhook", (req, res) => {
// req.body.events should be an array of events
|
a8dde2dd
Surasit Yerpui
firstcommit
|
25
|
if (!Array.isArray(req.body.events)) {
|
b9184255
Surasit Yerpui
update Code Reweb...
|
26
|
return res.status(500).end();
|
a8dde2dd
Surasit Yerpui
firstcommit
|
27
|
}
|
a8dde2dd
Surasit Yerpui
firstcommit
|
28
29
30
|
console.log('req.body.events !',req.body.events)
// handle events separately
Promise.all(
|
b9184255
Surasit Yerpui
update Code Reweb...
|
31
|
req.body.events.map((event) => {
|
a8dde2dd
Surasit Yerpui
firstcommit
|
32
33
34
35
36
37
38
39
40
41
|
console.log("event", event);
// check verify webhook event
if (
event.replyToken === "00000000000000000000000000000000" ||
event.replyToken === "ffffffffffffffffffffffffffffffff"
) {
return;
}
return handleEvent(event);
})
|
b9184255
Surasit Yerpui
update Code Reweb...
|
42
|
)
|
a8dde2dd
Surasit Yerpui
firstcommit
|
43
44
45
46
47
48
49
50
51
|
.then(() => res.end())
.catch((err) => {
console.error(err);
res.status(500).end();
});
});
const handleEvent = (event) => {
let payload = {
|
b9184255
Surasit Yerpui
update Code Reweb...
|
52
53
54
55
56
57
|
type: "text",
text: "Hello From PUI",
};
if (event.type == "message" && event.message.type == "text") {
let selecttext = String(event.message.text).toLowerCase();
|
a8dde2dd
Surasit Yerpui
firstcommit
|
58
|
let get_text = ContentService.mockText()[selecttext];
|
b9184255
Surasit Yerpui
update Code Reweb...
|
59
60
61
62
63
64
65
66
67
68
69
70
|
if (get_text) {
payload = get_text;
}
} else {
payload.text = "Other Message =>>>" + JSON.stringify(event);
}
console.log("SEND TO ==> " + JSON.stringify(payload));
return client.replyMessage(event.replyToken, payload);
};
|
a8dde2dd
Surasit Yerpui
firstcommit
|
71
|
app.use(bodyParser.json());
|
b9184255
Surasit Yerpui
update Code Reweb...
|
72
73
|
app.get("/", (req, res) => {
res.json({ line: "ok" });
|
889c144c
Surasit Yerpui
SW RICH MENU
|
74
|
});
|
a8dde2dd
Surasit Yerpui
firstcommit
|
75
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
76
|
app.post("/push", (req, res) => {
|
a8dde2dd
Surasit Yerpui
firstcommit
|
77
78
|
let body = req.body;
let { user_id, message } = body;
|
b9184255
Surasit Yerpui
update Code Reweb...
|
79
|
console.log("push =>> body ::", body);
|
889c144c
Surasit Yerpui
SW RICH MENU
|
80
|
if (!message) {
|
a8dde2dd
Surasit Yerpui
firstcommit
|
81
82
|
message = {
type: "text",
|
b9184255
Surasit Yerpui
update Code Reweb...
|
83
|
text: `Push Message! to ${user_id}`,
|
f4bbcb63
Surasit Yerpui
เพิ่ม ตัวอย่าง ac...
|
84
|
};
|
b9184255
Surasit Yerpui
update Code Reweb...
|
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
}
client.pushMessage(user_id, message);
res.json(message);
});
app.post("/multicast", (req, res) => {
let body = req.body;
let { user_ids } = body;
console.log("body ::", body);
let message = [
{
type: "text",
text: `use multicast Message1! to ${JSON.stringify(user_ids)}`,
},
|
a8dde2dd
Surasit Yerpui
firstcommit
|
99
|
{
|
a8dde2dd
Surasit Yerpui
firstcommit
|
100
|
type: "text",
|
b9184255
Surasit Yerpui
update Code Reweb...
|
101
102
103
|
text: `use multicast Message2! to ${JSON.stringify(user_ids)}`,
},
];
|
a8dde2dd
Surasit Yerpui
firstcommit
|
104
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
105
106
107
108
109
|
client.multicast(user_ids, message);
res.json(message);
});
app.post("/multicast", (req, res) => {
|
889c144c
Surasit Yerpui
SW RICH MENU
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
let body = req.body;
let { user_ids } = body;
console.log("body ::", body);
let message = [
{
type: "text",
text: `use multicast Message1! to ${JSON.stringify(user_ids)}`,
},
{
type: "text",
text: `use multicast Message2! to ${JSON.stringify(user_ids)}`,
},
];
client.multicast(user_ids, message);
|
b9184255
Surasit Yerpui
update Code Reweb...
|
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
res.json(message);
});
app.post("/broadcast", async (req, res) => {
let body = req.body;
let { messages } = body;
console.log("body ::", body);
let resx = await LineService.Broadcast(messages);
console.log("resx", resx);
res.json({ message: "OK" });
});
app.post("/save", bodyParser.json(), async (req, res) => {
console.log("saveFile!");
try {
const downloadFile = function (uri, filename, callback) {
request.head(uri, function (err, res, body) {
console.log("content-type:", res.headers["content-type"]);
|
f4bbcb63
Surasit Yerpui
เพิ่ม ตัวอย่าง ac...
|
145
|
console.log("content-length:", res.headers["content-length"]);
|
eb28d472
Surasit Yerpui
update Service
|
146
|
console.log("Content-Type:", res.headers["Content-Type"]);
|
b9184255
Surasit Yerpui
update Code Reweb...
|
147
148
149
150
151
152
153
154
|
console.log("res.headers ::", res.headers);
request(uri, {
headers: {
Authorization:
"Bearer be/XHjQ+gMoypZE78Us7hk0h6PA04TyfpQciMOq+B/OVPmumozdhGzYUwopDgsOMCM7RymTK8m++q20GSj3c6B7gZkgEmuGYEYPvc6j+4as6X5bu7tEg+KAZKMfBVDnk+ekpAorC7FMwVPyt2frGRQdB04t89/1O/w1cDnyilFU=",
},
})
|
eb28d472
Surasit Yerpui
update Service
|
155
|
.pipe(fs.createWriteStream(filename))
|
889c144c
Surasit Yerpui
SW RICH MENU
|
156
157
|
.on("close", callback);
});
|
b9184255
Surasit Yerpui
update Code Reweb...
|
158
159
160
161
162
163
|
};
let unquie_file = moment().format("YYYY-MM-DD_HHmmssss");
let file_name = `filesave_${unquie_file}`;
let message_id = req.body.message_id;
let URI = `https://api-data.line.me/v2/bot/message/${message_id}/content`;
|
a8dde2dd
Surasit Yerpui
firstcommit
|
164
|
console.log("message_id ::", message_id);
|
b9184255
Surasit Yerpui
update Code Reweb...
|
165
166
167
168
|
console.log("file_name ::", file_name);
axios
.get(URI, {
|
eb28d472
Surasit Yerpui
update Service
|
169
|
headers: {
|
b9184255
Surasit Yerpui
update Code Reweb...
|
170
171
172
173
|
Authorization:
"Bearer be/XHjQ+gMoypZE78Us7hk0h6PA04TyfpQciMOq+B/OVPmumozdhGzYUwopDgsOMCM7RymTK8m++q20GSj3c6B7gZkgEmuGYEYPvc6j+4as6X5bu7tEg+KAZKMfBVDnk+ekpAorC7FMwVPyt2frGRQdB04t89/1O/w1cDnyilFU=",
},
})
|
eb28d472
Surasit Yerpui
update Service
|
174
175
|
.then(function (response) {
// handle success
|
889c144c
Surasit Yerpui
SW RICH MENU
|
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
console.log("axios =>>", response.headers["content-type"]);
let sp = response.headers["content-type"].split("/");
let type = sp[sp.length - 1];
let full_file_name = file_name + "." + type;
console.log("full_file_name =", full_file_name);
downloadFile(URI, full_file_name, function () {
console.log("done!");
res.json({ LoadFlieName: "Success" });
});
})
.catch(function (error) {
// handle error
console.log(error);
console.error("errorxx ::", error);
res.json({ error: "error" });
});
|
b9184255
Surasit Yerpui
update Code Reweb...
|
192
193
194
|
} catch (error) {
console.error("errorxx ::", error);
}
|
eb28d472
Surasit Yerpui
update Service
|
195
|
});
|
b9184255
Surasit Yerpui
update Code Reweb...
|
196
|
|
eb28d472
Surasit Yerpui
update Service
|
197
|
const port = config.port;
|
b9184255
Surasit Yerpui
update Code Reweb...
|
198
199
200
|
app.listen(port, () => {
console.log(`listening on ${port}`);
});
|
eb28d472
Surasit Yerpui
update Service
|
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
|
|
a8dde2dd
Surasit Yerpui
firstcommit
|
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
|
|
889c144c
Surasit Yerpui
SW RICH MENU
|
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
|
|
a8dde2dd
Surasit Yerpui
firstcommit
|
|
|
b9184255
Surasit Yerpui
update Code Reweb...
|
|
|