This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const checkPointExists = async(event) => { | |
try { | |
const userId = event.source.userId | |
const trackingId = event.videoPlayComplete.trackingId | |
const data = await admin.firestore() | |
.collection('collectPoint') | |
.where('userId', '==', userId) | |
.where('trackingId', '==', trackingId) | |
.get() | |
return !data.empty |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const savePointVideoComplete = async(event) => { | |
const replyToken = event.replyToken | |
let messages = '' | |
const pointExists = await checkPointExists(event) | |
if (pointExists) { | |
messages = [{ 'type': 'text', 'text': '🎉 ขอบคุณที่รับชมวีดีโอ คุณเคยได้รับคะแนนกิจกรรมนี้ไปแล้ว 🎉' }] | |
} else { | |
await collectPoint(event) | |
messages = [{ 'type': 'text', 'text': '🎉 ขอบคุณที่รับชมวีดีโอ รับคะแนนไปเลย 10 คะแนน 🎉' }] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Handle events | |
events.forEach(async(event) => { | |
if (event.type === 'videoPlayComplete') { | |
await savePointVideoComlete(event) | |
} | |
console.log(event) | |
}) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Verify Events request must array | |
const events = request.body.events | |
if(!events || !Array.isArray(events)) { | |
response.status(200).send('not have events') | |
return | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
exports.LINEwebhook = functions.region(region).https.onRequest(async(request, response) => { | |
console.log('🚀 Start Webhook!!', request.body ) | |
// Verify Signature | |
const verify = await verify_signature(request, response) | |
if(!verify) { | |
response.status(200).send('Unauthorized') | |
return | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const functions = require("firebase-functions") | |
const axios = require("axios") | |
const notiToken = 'REPLACE LINE NOTIFY TOKEN HERE' | |
exports.monitorData = functions.region("asia-southeast1").database.ref('Product/{id}').onWrite(async (snap, context) => { | |
message = `\มีข้อมูลเปลี่ยนแปลง | |
name จาก ${snap.before._data['1']} -> ${snap.after._data['1']} | |
stock จาก ${snap.before._data['2']} -> ${snap.after._data['2']} | |
` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function syncData() { | |
var sheet = SpreadsheetApp.getActiveSheet() | |
var [rows, columns] = [sheet.getLastRow(), sheet.getLastColumn()] | |
var data = sheet.getRange(2, 1, rows-1, columns).getValues() | |
var dataPath = 'Product' | |
var projectId = 'ggsheets2rtdb' | |
var region = 'asia-southeast1' | |
var fireBaseUrl = 'https://' +projectId+ '-default-rtdb.' +region+ '.firebasedatabase.app/' +dataPath +'.json' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"type": "bubble", | |
"hero": { | |
"type": "image", | |
"url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/01_1_cafe.png", | |
"size": "full", | |
"aspectRatio": "20:13", | |
"aspectMode": "cover", | |
"action": { | |
"type": "uri", |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
volumes: | |
postgres_data: | |
driver: local | |
services: | |
postgres: | |
image: postgres | |
volumes: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export const webhookLINE = functions.region(REGION).https.onRequest( async(req, res) => { | |
console.log('🚀 Start Webhook!!', JSON.stringify(req.body) ) | |
if(!req.body.events) { res.status(200).end()} | |
const event = req.body.events[0] | |
if(typeof(event) === 'undefined') { res.status(200).end()} | |
try { | |
await util_line.verify_signature(req, res) |