Skip to content

Instantly share code, notes, and snippets.

@PamornT
Last active September 11, 2024 14:52
Show Gist options
  • Save PamornT/00c36525c4763bd60cc88e0f0712b8b4 to your computer and use it in GitHub Desktop.
Save PamornT/00c36525c4763bd60cc88e0f0712b8b4 to your computer and use it in GitHub Desktop.
const express = require('express')
const bodyParser = require('body-parser')
const jsonParser = bodyParser.json()
const axios = require('axios');
const app = express()
app.post('/webhook', jsonParser, (req, res) => {
console.log(req.body)
for(const event of req.body.events) {
console.log(event.type)
switch(event.type) {
case "message":
console.log(event.message)
reply(event.replyToken, `please click the button`)
break
case "postback":
console.log('this event message')
const datas = event.postback.data.split('&')
console.log(datas)
let jobId = null
let interest = null
for(data of datas) {
data = data.split('=')
if(data[0] === 'jobId') {
jobId = data[1]
} else if(data[0] === 'interest') {
interest = data[1]
}
}
reply(event.replyToken, `jobId = ${jobId}, interest = ${interest}`)
break
default:
break
}
}
res.status(200)
})
app.listen(3000, () => {
console.log('Start server at port 3000.')
})
const reply = async (replyToken, message) => {
const params = {
replyToken,
messages: [{
type: 'text',
text: message
}]
}
await axios({
method: 'post',
url: 'https://api.line.me/v2/bot/message/reply',
headers: {
'Authorization': `Bearer {ACCESS TOKEN}`,
},
data: params,
})
.catch(function (error) {
if (error.response) {
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment